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); }
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); } } }
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); }
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(); }