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(); }