Esempio n. 1
0
        private void CreateMoveToAnimation(Vector2 position0, Vector2 position1)
        {
            var transitionParameters = new TransitionParameters(1.2f, EasingFunctions.QuarticEaseInOut);
            var transition           = new Vector2Transition(() => position0, v => _position = v, position1, transitionParameters);

            transition.TransitionComplete += (sender, args) => CreateMoveToAnimation(position1, position0);
            _animationSystem.Attach(transition);
        }
 public void Dispose()
 {
     this.internalCall      = default;
     this.animationComplete = default;
     this.hierarchyComplete = default;
     this.baseComplete      = default;
     this.instance          = null;
     this.parameters        = default;
     PoolClass <ShowHideClosureParametersClass> .Recycle(this);
 }
 public TransitionSnapshot(TransitionParameters parameters)
 {
     Parameters = parameters;
     if (parameters.RandomDelays == true)
     {
         WaitTime = Random.Range(parameters.MinWaitTime, parameters.MaxWaitTime);
         Duration = Random.Range(parameters.MinDuration, parameters.MaxDuration);
     }
     else
     {
         WaitTime = parameters.WaitTime;
         Duration = parameters.Duration;
     }
 }
        private static void Play <T>(T closureParameters, AnimationState animationState, AnimationParameters animationParameters, TransitionParameters parameters,
                                     System.Action <T> onComplete)
        {
            if (animationParameters == null)
            {
                onComplete.Invoke(closureParameters);
                return;
            }

            if (parameters.IsImmediately() == true)
            {
                animationParameters.ApplyState(animationParameters.GetState(animationState));
                onComplete.Invoke(closureParameters);
                return;
            }

            AnimationParameters.State fromState = null;
            if (parameters.resetAnimation == true)
            {
                fromState = animationParameters.GetState(AnimationState.Reset);
            }

            var toState = animationParameters.GetState(animationState);

            var animationInfo = new AnimationInfo <T>()
            {
                animationParameters = animationParameters,
                fromState           = fromState,
                toState             = toState,
                onComplete          = onComplete,
                closureParameters   = closureParameters,
            };

            var tweener = WindowSystem.GetTweener();

            tweener.Stop(animationParameters);
            tweener.Add(animationInfo, animationParameters.GetDuration(animationState), 0f, 1f).Delay(animationParameters.GetDelay(animationState)).Tag(animationParameters)
            .OnUpdate((obj, value) => { obj.animationParameters.ApplyState(obj.animationParameters.LerpState(obj.fromState, obj.toState, value)); })
            .OnComplete((obj) => { obj.onComplete.Invoke(obj.closureParameters); });
        }
 public static void Hide <T>(T closureParameters, WindowObject instance, TransitionParameters parameters, System.Action <T> onComplete)
 {
     WindowObjectAnimation.Play(closureParameters, AnimationState.Hide, instance.animationParameters, parameters, onComplete);
 }
            public static void ApplySnapshotLerp(MaskableGraphic graphic, GraphicState state, TransitionParameters transition, GraphicSnapshot origin, GraphicSnapshot target, float t)
            {
                RectTransform rect     = graphic.GetComponent <RectTransform>();
                float         progress = 0;

                if (state.ChangeSize == true)
                {
                    UpdateProgress(ref progress, t, state.Size_SeparateTransition,
                                   transition.SizeUseCurve, transition.SizeCurve, transition.SizePower,
                                   transition.UseCurve, transition.Curve, transition.Power);

                    if (state.SyncSizeAxises == true)
                    {
                        rect.sizeDelta = Vector2.one * Mathf.LerpUnclamped(origin.SyncSize, target.SyncSize, progress);
                    }
                    else
                    {
                        rect.sizeDelta = Vector2.LerpUnclamped(origin.SizeDelta, target.SizeDelta, progress);
                    }
                }

                if (state.ChangeScale == true)
                {
                    UpdateProgress(ref progress, t, state.Scale_SeparateTransition,
                                   transition.ScaleUseCurve, transition.ScaleCurve, transition.ScalePower,
                                   transition.UseCurve, transition.Curve, transition.Power);

                    if (state.SyncScaleAxises == true)
                    {
                        rect.localScale = Vector3.one * Mathf.LerpUnclamped(origin.SyncScale, target.SyncScale, progress);
                    }
                    else
                    {
                        rect.localScale = Vector3.LerpUnclamped(origin.ScaleDelta, target.ScaleDelta, progress);
                    }
                }

                if (state.ChangePosition == true)
                {
                    UpdateProgress(ref progress, t, state.Position_SeparateTransition,
                                   transition.PositionUseCurve, transition.PositionCurve, transition.PositionPower,
                                   transition.UseCurve, transition.Curve, transition.Power);

                    rect.anchoredPosition3D = Vector3.LerpUnclamped(origin.Position, target.Position, progress);
                }

                if (state.ChangeRotation == true)
                {
                    UpdateProgress(ref progress, t, state.Rotation_SeparateTransition,
                                   transition.RotationUseCurve, transition.RotationCurve, transition.RotationPower,
                                   transition.UseCurve, transition.Curve, transition.Power);

                    rect.localEulerAngles = rect.localEulerAngles.SetZ(Mathf.LerpUnclamped(origin.Rotation, target.Rotation, progress));
                }

                if (state.ChangeColor == true)
                {
                    UpdateProgress(ref progress, t, state.Color_SeparateTransition,
                                   transition.ColorUseCurve, transition.ColorCurve, transition.ColorPower,
                                   transition.UseCurve, transition.Curve, transition.Power);

                    graphic.color = Color.LerpUnclamped(origin.Color, target.Color, progress);
                }
            }
        public override void Show()
        {
            _music       = AssetManager.Load <Music>("song.mp3");
            _soundEffect = AssetManager.Load <SoundEffect>("click.wav");

            var backgroundLayer = new SpriteLayer(GraphicsDevice, Game.Camera);

            Layers.Add(backgroundLayer);

            var backgroundTexture = AssetManager.Load <Texture>("hills_800x480.png");
            var backgroundSprite  = Sprite.Create(backgroundTexture, 0, 0, 800, 480);

            backgroundLayer.Sprites.Add(backgroundSprite);

            var guiLayer = new GuiLayer(GraphicsDevice, Game.Camera);

            var font  = AssetManager.Load("courier-new-32.fnt", new BitmapFontLoader());
            var label = new GuiLabel(font)
            {
                Text      = "Welcome to",
                TextColor = new Color(81, 32, 0),
                Position  = new Vector2(400, 45)
            };

            guiLayer.Controls.Add(label);

            var logoTexture = AssetManager.Load <Texture>("astrid-logo.png");
            var image       = new GuiImage(logoTexture)
            {
                Position = new Vector2(400, -150),
                Origin   = new Vector2(0.5f, 1.0f)
            };

            guiLayer.Controls.Add(image);

            var parameters = new TransitionParameters(1.0f, EasingFunctions.QuadraticEaseIn);

            Animations.CreateSequence(image)
            .MoveTo(new Vector2(400, 150), parameters)
            .ScaleTo(new Vector2(1.2f, 0.6f), new TransitionParameters(0.2f, EasingFunctions.CubicEaseOut))
            .ScaleTo(new Vector2(1.0f, 1.0f), new TransitionParameters(0.2f, EasingFunctions.CubicEaseIn))
            .ScaleTo(new Vector2(0.8f, 1.2f), new TransitionParameters(0.2f, EasingFunctions.CubicEaseOut))
            .ScaleTo(new Vector2(1.0f, 1.0f), new TransitionParameters(0.2f, EasingFunctions.CubicEaseIn))
            .Play();

            var buttonTexture = AssetManager.Load <Texture>("play-button.png");
            var playButton    = new GuiButton(buttonTexture.ToTextureRegion())
            {
                Position = new Vector2(400, -260),
                Rotation = MathHelper.TwoPi
            };

            playButton.Click += PlayButtonOnClick;
            guiLayer.Controls.Add(playButton);
            Layers.Add(guiLayer);

            var transitionParameters = new TransitionParameters(1.0f, EasingFunctions.CubicEaseInOut);

            Animations
            .CreateSequence(playButton)
            .MoveTo(new Vector2(50, 50), transitionParameters)
            .MoveTo(new Vector2(700, 400), transitionParameters)
            .MoveTo(new Vector2(700, 230), transitionParameters)
            .MoveTo(new Vector2(400, 250), transitionParameters)
            .Delay(1.0f)
            .RotateTo(0, transitionParameters)
            .Delay(1.0f)
            .RotateTo(MathHelper.TwoPi, transitionParameters)
            .FadeOut(transitionParameters)
            .FadeIn(transitionParameters)
            .Play();

            base.Show();
        }