private void ToogleAnimation(IAnimationPipelineController controller) { if (controller.State == AnimationState.Playing) { controller.Pause(); } else { controller.Resume(); } }
private IAnimationPipelineController Run(PipelineKind kind) { if (controller == null) { controller = new AnimationPipelineController <TOwner>(this); this.Kind = kind; Run(); return(controller); } else { throw new InvalidOperationException("You can call Once/Loop/PingPong just once by pipeline."); } }
internal static void RemoveController(IAnimationPipelineController controller) { controllers.Remove(controller); }
internal static void AddController(IAnimationPipelineController controller) { controllers.Add(controller); }
public override void Initialize() { Context.RemoveAllComponents(); var bounds = Context.Bounds; var moveToFood1 = new RectangleComponent(Point.Zero, Context); moveToFood1.Transform.Position = moveToSampleArea.LeftTopPoint(); moveToFood1.Transform .MoveTo(moveToSampleArea.RightBottomPoint(), 2, Easing.InBack) .Delay(1) .MoveTo(moveToSampleArea.RightTopPoint(), 2, Easing.Linear) .PingPong(); var moveToFood2 = new RectangleComponent(Point.Zero, Context); moveToFood2.Transform.Position = moveToSampleArea.RightBottomPoint(); moveToFood2.Transform .MoveTo(moveToSampleArea.LeftTopPoint(), 2, Easing.InBack) .Delay(1) .MoveTo(moveToSampleArea.LeftBottomPoint(), 2, Easing.Linear) .PingPong(); var blinkFood = new RectangleComponent(Point.Zero, Context); blinkFood.Transform.Position = new Point(30, 11); blinkFood .Enable(1f) .Loop(); controller1 = blinkFood .To(0, 100, 19, Easing.Linear, v => numberSample1 = v) .Loop(); controller2 = blinkFood .To(0, 10, 10, Easing.Linear, v => numberSample2 = v) .Delay(5) .To(10, 30, 10, Easing.Linear, v => numberSample2 = v) .Delay(5) .To(30, 100, 10, Easing.Linear, v => numberSample2 = v) .Delay(5) .PingPong(); // Once blink for (var i = 0; i < 100; i++) { var b = new RectangleComponent(Point.Zero, Context); b.Transform.Position = new Point(31 + i, 11); b .Delay(i * 0.05f) .Enable(1f) .Enable(0.5f) .Enable(0.5f) .Once(); } // Ping-pong move var length = 100; var speed = 0.1f; var maxTime = (length - 1) * speed; for (var i = 0; i < length; i++) { var b = new RectangleComponent(Point.Zero, Context); b.Transform.Position = new Point(31 + i, 13); b .Disable(i * speed).OnlyForward() .Delay(maxTime - (i * speed)).OnlyForward() .Delay(maxTime - ((length - 1 - i) * speed)).OnlyBackward() .Enable(((length - 1) - i) * speed).OnlyBackward() .PingPong(); } // ScaleTo, MoveTo and PingPong new RectangleComponent(140, 1, Context) { Filled = true }.Transform .ScaleTo(new Point(20, 10), 1, Easing.InExpo) .MoveTo(new Point(140, bounds.Bottom - 10), 2, Easing.InBounce) .PingPong(); // Circle and rectangle var circle = new CircleComponent(new Point(12, 20), 1, Context) { Filled = false }; circle.Transform .Do(() => circle.Filled = false).OnlyForward() .ScaleTo(30, 3, Easing.InOutQuint) .Do(() => circle.Filled = true).OnlyBackward() .PingPong(); var rect = new RectangleComponent(circle.Transform.Position, Context) { Filled = false }; rect.Transform .ScaleTo(30, 3, Easing.InOutQuint) .Delay(3) .PingPong(); // Circle and rectangle with pivot centralized. var circleCentralized = new CircleComponent(bounds.GetCenter(), 1, Context) { Filled = false }; circleCentralized.Transform.CentralizePivot() .Do(() => circleCentralized.Filled = false).OnlyForward() .ScaleTo(30, 3, Easing.InOutQuint) .Do(() => circleCentralized.Filled = true).OnlyBackward() .PingPong(); var rectCentralized = new RectangleComponent(circleCentralized.Transform.Position, Context) { Filled = false }; rectCentralized.Transform.CentralizePivot() .ScaleTo(30, 3, Easing.InOutQuint) .Delay(3) .PingPong(); }