Ejemplo n.º 1
0
 private void ToogleAnimation(IAnimationPipelineController controller)
 {
     if (controller.State == AnimationState.Playing)
     {
         controller.Pause();
     }
     else
     {
         controller.Resume();
     }
 }
Ejemplo n.º 2
0
        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.");
            }
        }
Ejemplo n.º 3
0
 internal static void RemoveController(IAnimationPipelineController controller)
 {
     controllers.Remove(controller);
 }
Ejemplo n.º 4
0
 internal static void AddController(IAnimationPipelineController controller)
 {
     controllers.Add(controller);
 }
Ejemplo n.º 5
0
        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();
        }