Exemplo n.º 1
0
        public static void MergeFrame(xxFrame oldFrame, xxFrame newFrame)
        {
            for (int i = oldFrame.Count - 1; i >= 0; i--)
            {
                xxFrame oldChild = oldFrame[i];
                xxFrame newChild = null;
                for (int j = 0; j < newFrame.Count; j++)
                {
                    if (oldChild.Name == newFrame[j].Name)
                    {
                        newChild = newFrame[j];
                        break;
                    }
                }

                if (newChild == null)
                {
                    newFrame.InsertChild(0, oldChild.Clone(true, true));
                }
                else
                {
                    if ((newChild.Mesh == null) && (oldChild.Mesh != null))
                    {
                        newChild.Mesh   = oldChild.Mesh.Clone(true, true, true);
                        newChild.Bounds = oldChild.Bounds;
                    }
                    CopyUnknowns(oldChild, newChild);

                    MergeFrame(oldChild, newChild);
                }
            }
        }
Exemplo n.º 2
0
        void MergeFrame(xxFrame srcParent, xxFrame 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);
                        destParent.RemoveChild(i);
                        destParent.InsertChild(i, src);
                        break;
                    }
                }
            }

            if (srcParent.Name == destParent.Name)
            {
                while (destParent.Count > 0)
                {
                    var dest = destParent[0];
                    destParent.RemoveChild(0);
                    srcParent.AddChild(dest);
                }
            }
            else
            {
                while (srcParent.Count > 0)
                {
                    var src = srcParent[0];
                    srcParent.RemoveChild(0);
                    destParent.AddChild(src);
                }
            }
        }