Skip to content

Commit

Permalink
Change: Remove duplicate vertex check in Obj parser- Too slow...
Browse files Browse the repository at this point in the history
  • Loading branch information
leezer3 committed Jul 1, 2018
1 parent 7e799e9 commit f9afb75
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 36 deletions.
19 changes: 5 additions & 14 deletions source/ObjectViewer/Parsers/WavefrontObjParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ internal Material()
}
private class MeshBuilder
{
internal List<VertexTemplate> Vertices;
internal List<Vertex> Vertices;
internal List<World.MeshFace> Faces;
internal Material[] Materials;
internal MeshBuilder()
{
this.Vertices = new List<VertexTemplate>();
this.Vertices = new List<Vertex>();
this.Faces = new List<World.MeshFace>();
this.Materials = new Material[] { };
}
Expand Down Expand Up @@ -165,7 +165,7 @@ internal static ObjectManager.StaticObject ReadObject(string FileName, System.Te
//Creates a new face

//Create the temp list to hook out the vertices
List<VertexTemplate> vertices = new List<VertexTemplate>();
List<Vertex> vertices = new List<Vertex>();
List<Vector3> normals = new List<Vector3>();
for (int f = 1; f < Arguments.Count; f++)
{
Expand Down Expand Up @@ -268,17 +268,8 @@ internal static ObjectManager.StaticObject ReadObject(string FileName, System.Te
World.MeshFaceVertex[] Vertices = new World.MeshFaceVertex[vertices.Count];
for (int k = 0; k < vertices.Count; k++)
{
int v = Builder.Vertices.FindIndex(a => a.Equals(vertices[k]));
if (v != -1)
{
Vertices[k].Index = (ushort)v;
}
else
{
Builder.Vertices.Add(vertices[k]);
Vertices[k].Index = (ushort)(Builder.Vertices.Count -1);
}

Builder.Vertices.Add(vertices[k]);
Vertices[k].Index = (ushort)(Builder.Vertices.Count -1);
Vertices[k].Normal = normals[k];
}
Builder.Faces.Add(currentMaterial == -1 ? new World.MeshFace(Vertices, 0) : new World.MeshFace(Vertices, (ushort)currentMaterial));
Expand Down
13 changes: 2 additions & 11 deletions source/OpenBVE/Parsers/Object/Generic/WavefrontObjParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -268,17 +268,8 @@ internal static ObjectManager.StaticObject ReadObject(string FileName, System.Te
World.MeshFaceVertex[] Vertices = new World.MeshFaceVertex[vertices.Count];
for (int k = 0; k < vertices.Count; k++)
{
int v = Builder.Vertices.FindIndex(a => a.Equals(vertices[k]));
if (v != -1)
{
Vertices[k].Index = (ushort)v;
}
else
{
Builder.Vertices.Add(vertices[k]);
Vertices[k].Index = (ushort)(Builder.Vertices.Count -1);
}

Builder.Vertices.Add(vertices[k]);
Vertices[k].Index = (ushort)(Builder.Vertices.Count -1);
Vertices[k].Normal = normals[k];
}
Builder.Faces.Add(currentMaterial == -1 ? new World.MeshFace(Vertices, 0) : new World.MeshFace(Vertices, (ushort)currentMaterial));
Expand Down
13 changes: 2 additions & 11 deletions source/RouteViewer/Parsers/WavefrontObjParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -268,17 +268,8 @@ internal static ObjectManager.StaticObject ReadObject(string FileName, System.Te
World.MeshFaceVertex[] Vertices = new World.MeshFaceVertex[vertices.Count];
for (int k = 0; k < vertices.Count; k++)
{
int v = Builder.Vertices.FindIndex(a => a.Equals(vertices[k]));
if (v != -1)
{
Vertices[k].Index = (ushort)v;
}
else
{
Builder.Vertices.Add(vertices[k]);
Vertices[k].Index = (ushort)(Builder.Vertices.Count -1);
}

Builder.Vertices.Add(vertices[k]);
Vertices[k].Index = (ushort)(Builder.Vertices.Count -1);
Vertices[k].Normal = normals[k];
}
Builder.Faces.Add(currentMaterial == -1 ? new World.MeshFace(Vertices, 0) : new World.MeshFace(Vertices, (ushort)currentMaterial));
Expand Down

0 comments on commit f9afb75

Please sign in to comment.