예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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());
        }