Exemplo n.º 1
0
        public float CalculateKeyframeValue(int time)
        {
            Type0_Keyframe before = GetKeyframeBefore(time);
            Type0_Keyframe after  = GetKeyframeAfter(time);

            if (after == null)
            {
                after = new Type0_Keyframe()
                {
                    Index = ushort.MaxValue, Float = before.Float
                };
            }

            //Frame difference between previous frame and the current frame (current frame is AFTER the frame we want)
            int diff = after.Index - before.Index;

            //Keyframe value difference
            float keyframe2 = after.Float - before.Float;

            //Difference between the frame we WANT and the previous frame
            int diff2 = time - before.Index;

            //Divide keyframe value difference by the keyframe time difference, and then multiply it by diff2, then add the previous keyframe value
            return((keyframe2 / diff) * diff2 + before.Float);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Returns the keyframe that appears just before the specified frame
        /// </summary>
        /// <returns></returns>
        public Type0_Keyframe GetKeyframeBefore(int time)
        {
            SortKeyframes();
            Type0_Keyframe prev = null;

            foreach (var keyframe in Keyframes)
            {
                if (keyframe.Index >= time)
                {
                    break;
                }
                prev = keyframe;
            }

            return(prev);
        }
Exemplo n.º 3
0
        public void AddKeyframesFromAnim(Type0 anim)
        {
            foreach (var keyframe in anim.Keyframes)
            {
                var existing = GetKeyframe(keyframe.Index);

                if (existing == null)
                {
                    var newKeyframe = new Type0_Keyframe()
                    {
                        Index = keyframe.Index, Float = GetValue(keyframe.Index)
                    };
                    Keyframes.Add(newKeyframe);
                }
            }
        }