示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);

                }
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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;
        }