예제 #1
0
파일: remReplace.cs 프로젝트: kkdevs/sb3u
        public static remBone CreateFrame(ImportedFrame frame)
        {
            remBone remFrame = new remBone(frame.Count);

            remFrame.matrix = frame.Matrix;
            remFrame.name   = new remId(frame.Name);

            for (int i = 0; i < frame.Count; i++)
            {
                remFrame.AddChild(CreateFrame(frame[i]));
            }

            return(remFrame);
        }
예제 #2
0
파일: remEditor.cs 프로젝트: kkdevs/sb3u
        void MergeFrame(remBone srcParent, remBone destParent)
        {
            for (int i = 0; i < destParent.Count; i++)
            {
                var dest = destParent[i];
                for (int j = 0; j < srcParent.Count; j++)
                {
                    var src = srcParent[j];
                    if (src.name == dest.name)
                    {
                        MergeFrame(src, dest);

                        srcParent.RemoveChild(j);
                        remMesh mesh = rem.FindMesh(dest, Parser.MESC);
                        if (mesh != null)
                        {
                            rem.RemoveMesh(Parser, mesh);
                        }
                        destParent.RemoveChild(i);
                        destParent.InsertChild(i, src);
                        break;
                    }
                }
            }

            if (srcParent.name == destParent.name)
            {
                while (destParent.Count > 0)
                {
                    var     dest = destParent[0];
                    remMesh mesh = rem.FindMesh(dest, Parser.MESC);
                    if (mesh != null)
                    {
                        rem.RemoveMesh(Parser, mesh);
                    }
                    destParent.RemoveChild(0);
                    srcParent.AddChild(dest);
                }
            }
            else
            {
                while (srcParent.Count > 0)
                {
                    var src = srcParent[0];
                    srcParent.RemoveChild(0);
                    destParent.AddChild(src);
                }
            }
        }
예제 #3
0
파일: REMParser.cs 프로젝트: kkdevs/sb3u
        private static void AddParentBone(remBONCsection sec, remBone parent, List <remId> childNames)
        {
            for (int i = 0; i < childNames.Count; i++)
            {
                remId child = childNames[i];
                for (int j = 0; j < sec.Count; j++)
                {
                    if (sec[j].name == child)
                    {
                        parent.AddChild(sec[j]);
                        break;
                    }
                }
            }

            sec.ChildList.Add(parent);
        }
예제 #4
0
파일: remEditor.cs 프로젝트: kkdevs/sb3u
        void MergeFrame(remBone newFrame, int destParentIdx)
        {
            remBone srcParent = new remBone(1);

            srcParent.AddChild(newFrame);

            remBone destParent;

            if (destParentIdx < 0)
            {
                destParent = Parser.BONC.rootFrame;
            }
            else
            {
                destParent = Parser.BONC[destParentIdx];
            }

            MergeFrame(srcParent, destParent);
            RebuildBONC();
        }