/// <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; } } } } } }