public void Restore(puppetanimdata data) { data.nodes.Clear(); foreach (var f in this.frames) { float time = (float)f.Key / 24.0f; foreach (var b in f.Value) { b.Value.time = time; //bool bHaveBone =false; Node bone = null; foreach (var n in data.nodes) { if (n.name == b.Key) { bone = n;// ne = true; break; } } if (bone == null) { bone = new Node(); bone.name = b.Key; data.nodes.Add(bone); } bone.frames.Add(b.Value); } } }
public static AniRuntime CreateFrom(puppetanimdata data) { AniRuntime ar = new AniRuntime(); foreach (var node in data.nodes) { foreach (var frame in node.frames) { int iframe = (int)Math.Round(frame.time * 24); if (iframe > ar.MaxFrame) { ar.MaxFrame = iframe; } if (ar.frames.ContainsKey(iframe) == false) { for (int i = 0; i <= iframe; i++) { if (ar.frames.ContainsKey(i) == false) { ar.frames[i] = new Dictionary <string, Node.Frame>(); } } } ar.frames[iframe][node.name] = frame; } } foreach (var node in data.nodes) { for (int i = 0; i <= ar.MaxFrame; i++) { if (!ar.frames[i].ContainsKey(node.name) && i > 0) { if (ar.frames[i - 1].ContainsKey(node.name)) { ar.frames[i][node.name] = ar.frames[i - 1][node.name]; } } } } return(ar); }
public static AniRuntime CreateFrom(puppetanimdata data) { AniRuntime ar = new AniRuntime(); foreach (var node in data.nodes) { foreach (var frame in node.frames) { int iframe = (int)Math.Round(frame.time * 24); if (iframe > ar.MaxFrame) ar.MaxFrame = iframe; if (ar.frames.ContainsKey(iframe) == false) { for (int i = 0; i <= iframe; i++) { if (ar.frames.ContainsKey(i) == false) { ar.frames[i] = new Dictionary<string, Node.Frame>(); } } } ar.frames[iframe][node.name] = frame; } } foreach (var node in data.nodes) { for (int i = 0; i <= ar.MaxFrame; i++) { if (!ar.frames[i].ContainsKey(node.name) && i > 0) { if (ar.frames[i - 1].ContainsKey(node.name)) ar.frames[i][node.name] = ar.frames[i - 1][node.name]; } } } return ar; }