Exemplo n.º 1
0
        /// <summary>
        /// Adds an animation to the end of this one
        /// </summary>
        public void Append(SHP0Node external)
        {
            KeyframeEntry kfe;

            int origIntCount = FrameCount;

            FrameCount += external.FrameCount;

            foreach (SHP0EntryNode w in external.Children)
            {
                foreach (SHP0VertexSetNode extEntry in w.Children)
                {
                    SHP0VertexSetNode intEntry = null;
                    if ((intEntry = (SHP0VertexSetNode)FindChild(w.Name + "/" + extEntry.Name, false)) == null)
                    {
                        SHP0EntryNode wi = null;
                        if ((wi = (SHP0EntryNode)FindChild(w.Name, false)) == null)
                        {
                            AddChild(wi = new SHP0EntryNode()
                            {
                                Name = FindName(null), _flags = w._flags
                            });
                        }

                        SHP0VertexSetNode newIntEntry = new SHP0VertexSetNode(extEntry.Name);
                        newIntEntry.SetSize(extEntry.FrameCount + origIntCount, Loop);
                        for (int x = 0; x < extEntry.FrameCount; x++)
                        {
                            if ((kfe = extEntry.GetKeyframe(x)) != null)
                            {
                                newIntEntry.Keyframes.SetFrameValue(x + origIntCount, kfe._value)._tangent = kfe._tangent;
                            }
                        }
                        wi.AddChild(newIntEntry);
                    }
                    else
                    {
                        for (int x = 0; x < extEntry.FrameCount; x++)
                        {
                            if ((kfe = extEntry.GetKeyframe(x)) != null)
                            {
                                intEntry.Keyframes.SetFrameValue(x + origIntCount, kfe._value)._tangent = kfe._tangent;
                            }
                        }
                    }
                }
            }
        }