private void VerticesToOutline(List <Vector2f[]> outlines, Vector3f[] vertices, SubMesh submesh) { int triangleCount = submesh.IndexCount / 3; List <Vector3i> triangles = new List <Vector3i>(triangleCount); using (MemoryStream memStream = new MemoryStream(m_indexBuffer)) { using (BinaryReader reader = new BinaryReader(memStream)) { memStream.Position = submesh.FirstByte; for (int i = 0; i < triangleCount; i++) { int x = reader.ReadInt16(); int y = reader.ReadInt16(); int z = reader.ReadInt16(); triangles.Add(new Vector3i(x, y, z)); } } } MeshOutlineGenerator outlineGenerator = new MeshOutlineGenerator(vertices, triangles); List <Vector2f[]> meshOutlines = outlineGenerator.GenerateOutlines(); outlines.AddRange(meshOutlines); }
private void VertexDataToOutline(List <Vector2f[]> outlines, Vector3f[] vertices, ref SubMesh submesh) { Vector3i[] triangles = new Vector3i[submesh.IndexCount / 3]; for (int o = submesh.FirstByte, ti = 0; ti < triangles.Length; o += 6, ti++) { int x = BitConverter.ToInt16(IndexBuffer, o + 0); int y = BitConverter.ToInt16(IndexBuffer, o + 2); int z = BitConverter.ToInt16(IndexBuffer, o + 4); triangles[ti] = new Vector3i(x, y, z); } MeshOutlineGenerator outlineGenerator = new MeshOutlineGenerator(vertices, triangles); List <Vector2f[]> meshOutlines = outlineGenerator.GenerateOutlines(); outlines.AddRange(meshOutlines); }
private List <Vector2f[]> VerticesToOutline() { Vector3f[] vertices = new Vector3f[Vertices.Length]; for (int i = 0; i < vertices.Length; i++) { vertices[i] = Vertices[i].Position; } Vector3i[] triangles = new Vector3i[Indices.Length / 3]; for (int i = 0, j = 0; i < triangles.Length; i++) { int x = Indices[j++]; int y = Indices[j++]; int z = Indices[j++]; triangles[i] = new Vector3i(x, y, z); } MeshOutlineGenerator outlineGenerator = new MeshOutlineGenerator(vertices, triangles); return(outlineGenerator.GenerateOutlines()); }