Exemple #1
0
        private static List <IndexedVertexData <T> > GetMergedContainers <T>(List <IndexedVertexData <T> > containersToMerge) where T : struct
        {
            // Combining indices isn't supported for all types currently.
            PrimitiveType type = containersToMerge.First().PrimitiveType;

            if (!supportedTypes.Contains(type))
            {
                return(containersToMerge);
            }

            // Estimate the correct size to avoid costly array resize/copy operations.
            int indexCount  = containersToMerge.First().Indices.Count *containersToMerge.Count;
            int vertexCount = containersToMerge.First().Vertices.Count *containersToMerge.Count;

            List <int> indices  = new List <int>(indexCount);
            List <T>   vertices = new List <T>(vertexCount);

            foreach (var container in containersToMerge)
            {
                AddIndices(vertices.Count, container.Indices, type, indices);
                vertices.AddRange(container.Vertices);
            }

            var mergedContainer = new IndexedVertexData <T>(vertices, indices, type);

            return(new List <IndexedVertexData <T> >()
            {
                mergedContainer
            });
        }
        private static void AddVertexContainer(GXVertexDecompressor decom, List <IndexedVertexData <MeleeVertex> > vertexContainers, DatPolygon polygon, GXDisplayList displayList)
        {
            List <MeleeVertex> vertices      = new List <MeleeVertex>();
            List <int>         vertexIndices = new List <int>();

            for (int i = 0; i < displayList.Indices.Length; i++)
            {
                vertexIndices.Add(i);
            }

            vertices.AddRange(ConvertVerts(decom.GetFormattedVertices(displayList, polygon)));

            PrimitiveType primitiveType   = MeleeDatToOpenGL.GetGLPrimitiveType(displayList.PrimitiveType);
            var           vertexContainer = new IndexedVertexData <MeleeVertex>(vertices, vertexIndices, primitiveType);

            vertexContainers.Add(vertexContainer);
        }
 public TestMesh(IndexedVertexData <float> vertexData) : base(vertexData)
 {
 }