public void SnapshotAndReplace() { var property = new AnimatableProperty <float> { Value = 10.0f }; var animation = new SingleFromToByAnimation { From = 100.0f, To = 200.0f, IsAdditive = true, }; var manager = new AnimationManager(); var controller = manager.CreateController(animation, property); Assert.AreEqual(10.0f, property.Value); controller.Start(AnimationTransitions.SnapshotAndReplace()); controller.UpdateAndApply(); Assert.AreEqual(110.0f, property.Value); // Changing the base value has no effect. property.Value = 20.0f; manager.Update(TimeSpan.Zero); manager.ApplyAnimations(); Assert.AreEqual(110.0f, property.Value); // Start second animation using SnapshotAndReplace. controller = manager.CreateController(animation, property); Assert.AreEqual(110.0f, property.Value); controller.Start(AnimationTransitions.SnapshotAndReplace()); controller.UpdateAndApply(); Assert.AreEqual(210.0f, property.Value); controller.Stop(); controller.UpdateAndApply(); Assert.AreEqual(20.0f, property.Value); }
public void SnapshotFromDelegateAnimatableProperty() { var testObject = new TestObject { Value = 123.4f }; Func <float> getter = () => testObject.Value; Action <float> setter = f => { testObject.Value = f; }; var property = new DelegateAnimatableProperty <float>(getter, setter); var manager = new AnimationManager(); var byAnimation = new SingleFromToByAnimation { Duration = TimeSpan.Zero, By = 25.0f, }; var controller = manager.StartAnimation(byAnimation, property, AnimationTransitions.SnapshotAndReplace()); controller.UpdateAndApply(); // The DelegateAnimatableProperty<T> does not provide a base value. // --> No snapshot is created. Assert.AreEqual(25.0f, testObject.Value); // 0.0f (SingleTraits.Identity) + 25.0f (By Animation) }
public void AnimationShapshots() { var property = new AnimatableProperty <float> { Value = 10.0f }; var manager = new AnimationManager(); var byAnimation = new SingleFromToByAnimation { Duration = TimeSpan.Zero, By = 25.0f, }; var byController = manager.CreateController(byAnimation, property); Assert.AreEqual(10.0f, property.Value); // Without snapshot. byController.Start(AnimationTransitions.Replace()); byController.UpdateAndApply(); Assert.AreEqual(35.0f, property.Value); property.Value = 100.0f; manager.Update(TimeSpan.Zero); manager.ApplyAnimations(); Assert.AreEqual(125.0f, property.Value); byController.Stop(); byController.UpdateAndApply(); Assert.AreEqual(100.0f, property.Value); // With snapshot. property.Value = 10.0f; byController.Start(AnimationTransitions.SnapshotAndReplace()); byController.UpdateAndApply(); Assert.AreEqual(35.0f, property.Value); property.Value = 100.0f; manager.Update(TimeSpan.Zero); manager.ApplyAnimations(); Assert.AreEqual(35.0f, property.Value); // Create another snapshot. var additiveAnimation = new SingleFromToByAnimation { Duration = TimeSpan.Zero, To = 200.0f, IsAdditive = true, }; var additiveController = manager.CreateController(additiveAnimation, property); additiveController.Start(AnimationTransitions.SnapshotAndReplace()); additiveController.UpdateAndApply(); Assert.AreEqual(235.0f, property.Value); byController.Stop(); Assert.AreEqual(235.0f, property.Value); byController.Start(AnimationTransitions.Replace()); byController.UpdateAndApply(); Assert.AreEqual(60.0f, property.Value); // 35.0f (Snapshot) + 25.0f (By Animation) }