コード例 #1
0
 public override void UpdateAnimation(float delta)
 {
     if (m_currentAnimation != null)
     {
         m_currentAnimation.Update(delta);
     }
 }
コード例 #2
0
        public void OnceBackwardsTest()
        {
            var modelBoneInstances = NewDefaultModelBoneInstances();
            var animation          = NewBasicAnimationInstance();

            var instance = new AnimationInstance(modelBoneInstances, animation, AnimationMode.OnceBackwards,
                                                 AnimationFlags.StartFrameLast, null, new QuoteUnquoteRandom());

            instance.Play();
            var time = TimeInterval.Zero;

            for (var i = 4; i >= 0; i--)
            {
                instance.Update(time);
                time = new TimeInterval(time.TotalTime + TimeSpan.FromSeconds(1),
                                        TimeSpan.FromSeconds(1));

                Assert.Equal(i, modelBoneInstances[0].AnimatedOffset.Translation.X);
            }
        }
コード例 #3
0
        public void StartAtEndManualTest()
        {
            var modelBoneInstances = NewDefaultModelBoneInstances();
            var animation          = NewBasicAnimationInstance();

            var instance = new AnimationInstance(modelBoneInstances, animation, AnimationMode.Manual,
                                                 AnimationFlags.StartFrameLast, null, new QuoteUnquoteRandom());

            instance.Play();
            var time = TimeInterval.Zero;

            for (var i = 0; i < 5; i++)
            {
                instance.Update(time);
                time = new TimeInterval(time.TotalTime + TimeSpan.FromSeconds(1),
                                        TimeSpan.FromSeconds(1));

                // always show the last frame
                Assert.Equal(4, modelBoneInstances[0].AnimatedOffset.Translation.X);
            }
        }
コード例 #4
0
        public void OnceBackwardsRandomStartTest(int rngSeed)
        {
            var modelBoneInstances = NewDefaultModelBoneInstances();
            var animation          = NewBasicAnimationInstance();
            var random             = new QuoteUnquoteRandom(rngSeed);

            var instance = new AnimationInstance(modelBoneInstances, animation, AnimationMode.OnceBackwards,
                                                 AnimationFlags.RandomStart, null, random);

            instance.Play();

            var   time     = TimeInterval.Zero;
            float?previous = null;

            for (var i = 5; i > 0; i--)
            {
                instance.Update(time);
                time = new TimeInterval(time.TotalTime + TimeSpan.FromSeconds(1),
                                        TimeSpan.FromSeconds(1));
                if (previous is null)
                {
                    previous = modelBoneInstances[0].AnimatedOffset.Translation.X;
                    continue;
                }

                var target = previous.Value - 1;
                if (target < 0)
                {
                    target = 0;
                }

                Assert.Equal(target, modelBoneInstances[0].AnimatedOffset.Translation.X, new ToleranceEqualityComparer(0.001f));
                previous = modelBoneInstances[0].AnimatedOffset.Translation.X;
            }
            instance.Stop();
        }
コード例 #5
0
 public override void Update(float delta)
 {
     groupInstance.Update(delta);
 }