示例#1
0
        public remBone Clone(bool mesh, bool childFrames, remParser parser, List <remMaterial> clonedMaterials, List <remMesh> clonedMeshes, List <remSkin> clonedSkins)
        {
            remBone frame = new remBone(Count);

            frame.name   = name;
            frame.matrix = matrix;

            if (mesh)
            {
                remMesh remMesh = rem.FindMesh(this, parser.MESC);
                if (remMesh != null)
                {
                    foreach (remId matId in remMesh.materials)
                    {
                        remMaterial mat = rem.FindMaterial(matId, parser.MATC);
                        if (!clonedMaterials.Contains(mat))
                        {
                            clonedMaterials.Add(mat.Clone());
                        }
                    }
                    remMesh clone = remMesh.Clone(true, true, parser, clonedSkins);
                    clone.frame = frame.name;
                    clonedMeshes.Add(clone);
                }
            }
            if (childFrames)
            {
                for (int i = 0; i < Count; i++)
                {
                    frame.AddChild(this[i].Clone(mesh, true, parser, clonedMaterials, clonedMeshes, clonedSkins));
                }
            }
            return(frame);
        }
示例#2
0
文件: remEditor.cs 项目: kkdevs/sb3u
        public void MergeMaterial(remMaterial mat)
        {
            var newMat = mat.Clone();

            bool found = false;

            for (int i = 0; i < Parser.MATC.Count; i++)
            {
                var oldMat = Parser.MATC[i];
                if (oldMat.name == newMat.name)
                {
                    Parser.MATC.ChildList.RemoveAt(i);
                    Parser.MATC.ChildList.Insert(i, newMat);
                    found = true;
                    break;
                }
            }

            if (!found)
            {
                Parser.MATC.AddChild(newMat);
            }
            InitTextures(false, false);
        }