コード例 #1
0
ファイル: EMA_File.cs プロジェクト: Atsuraelu/XV2-Tools
        public float CalculateKeyframeValue(int time)
        {
            EMA_Keyframe before = GetKeyframeBefore(time);
            EMA_Keyframe after  = GetKeyframeAfter(time);

            if (before == null)
            {
                return(0f);
            }

            if (after == null)
            {
                after = new EMA_Keyframe()
                {
                    Time = ushort.MaxValue, Value = before.Value
                };
            }

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

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

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

            //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.Value);
        }
コード例 #2
0
ファイル: EMA_File.cs プロジェクト: Atsuraelu/XV2-Tools
        /// <summary>
        /// Returns the keyframe that appears just before the specified frame
        /// </summary>
        /// <returns></returns>
        public EMA_Keyframe GetKeyframeBefore(int time)
        {
            SortKeyframes();
            EMA_Keyframe prev = null;

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

            return(prev);
        }
コード例 #3
0
ファイル: EMA_File.cs プロジェクト: Atsuraelu/XV2-Tools
        public void AddKeyframesFromCommand(EMA_Command anim)
        {
            foreach (var keyframe in anim.Keyframes)
            {
                var existing = GetKeyframe(keyframe.Time);

                if (existing == null)
                {
                    var newKeyframe = new EMA_Keyframe()
                    {
                        Time = keyframe.Time, Value = GetValue(keyframe.Time)
                    };
                    Keyframes.Add(newKeyframe);
                }
            }
        }