public void CompressMorph(ModelMaterialCollection materials, ModelVertexCollection vertices)
        {
            var typeMorphDict = new MultiDictionary <MorphType, PmxMorphData>();

            foreach (var morph in MorphList)
            {
                typeMorphDict.Add(morph.MorphType, morph);
            }

            foreach (var morphList in typeMorphDict.Values)
            {
                Compress(morphList, World.KeyFrames.MorphFrameDict);
            }

            var removeMaterialIndices = new List <int>();

            removeMaterialIndices.AddRange(materials.CompressMaterial(typeMorphDict[MorphType.MATERIAL], vertices));

            RemoveElements(typeMorphDict[MorphType.MATERIAL], removeMaterialIndices);

            removeMaterialIndices.Sort((a, b) => b - a);
            foreach (int index in removeMaterialIndices)
            {
                materials.MaterialList.RemoveAt(index);
            }
        }
        public CurtainFireModel(World world)
        {
            World = world;

            Vertices  = new ModelVertexCollection(World);
            Materials = new ModelMaterialCollection(World);
            Morphs    = new ModelMorphCollection(World);
            Bones     = new ModelBoneCollection(World);
        }