private void Start() { if (line.positionCount < 3) { return; } Vector3[] positions = new Vector3[line.positionCount]; List <Vector2AnimationData> datas = new List <Vector2AnimationData>(); for (int i = 1; i < line.positionCount - 1; i++) { int index = i; Vector2 rndVector = Random.insideUnitCircle.normalized * offset; Vector2 start = (Vector2)line.GetPosition(index) + rndVector; Vector2 end = (Vector2)line.GetPosition(index) - rndVector; Vector2AnimationData data = new Vector2AnimationData { AnimationMode = BosAnimationMode.PingPong, Duration = time, StartValue = start, EndValue = end, EaseType = EaseType.EaseInOutQuad, Target = gameObject, OnStart = (v, go) => line.SetPosition(index, v), OnUpdate = (v, t, go) => line.SetPosition(index, v), OnEnd = (v, go) => line.SetPosition(index, v) }; datas.Add(data); } animator.StartAnimation(datas); }
public static void CreateWorkEffect(Transform mechanic, GameObject effectPrefab) { GameObject inst = Instantiate<GameObject>(effectPrefab); RectTransform effectRect = inst.GetComponent<RectTransform>(); effectRect.SetParent(mechanic.parent, false); effectRect.anchoredPosition = mechanic.GetComponent<RectTransform>().anchoredPosition + new Vector2(0, 120); var colorData = AnimUtils.GetColorAnimData(Color.white, Color.white.ChangeAlpha(0), 2, EaseType.EaseInOutQuad, effectRect); var rotateData = new FloatAnimationData { StartValue = -40, EndValue = 40, Duration = 0.5f, EaseType = EaseType.EaseInOutQuad, OnStart = effectRect.UpdateZRotation(), OnUpdate = effectRect.UpdateZRotationTimed(), OnEnd = effectRect.UpdateZRotation(), Target = inst, AnimationMode = BosAnimationMode.PingPong }; var posData = new Vector2AnimationData { StartValue = effectRect.anchoredPosition, EndValue = effectRect.anchoredPosition + new Vector2(0, 250), Duration = 2, EaseType = EaseType.EaseInOutQuad, OnStart = effectRect.UpdatePositionFunctor(), OnUpdate = effectRect.UpdatePositionTimedFunctor(), OnEnd = effectRect.UpdatePositionFunctor() }; inst.GetOrAdd<ColorAnimator>().StartAnimation(colorData); inst.GetOrAdd<FloatAnimator>().StartAnimation(rotateData); inst.GetOrAdd<Vector2Animator>().StartAnimation(posData); Destroy(inst, 2); }
private IEnumerator MoveInPlaceImpl(MechanicAnimObject mechanicView, TempMechanicInfo info) { yield return(new WaitForSeconds(.2f)); Vector3Animator scaleAnimator = mechanicView.gameObject.GetOrAdd <Vector3Animator>(); Vector2Animator positionAnimator = mechanicView.gameObject.GetOrAdd <Vector2Animator>(); FloatAnimator rotateAnimator = mechanicView.gameObject.GetOrAdd <FloatAnimator>(); RectTransform rectTransform = mechanicView.GetComponent <RectTransform>(); Vector2 startPosition = rectTransform.anchoredPosition; Vector2 endPosition = mechanicView.leftPosition; Vector2AnimationData positionData = new Vector2AnimationData { StartValue = startPosition, EndValue = endPosition, Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdatePositionFunctor(), OnUpdate = rectTransform.UpdatePositionTimedFunctor(), OnEnd = rectTransform.UpdatePositionFunctor(() => { Debug.Log($"setup temp mechanic on state => {info.State}"); mechanicView.Setup(info); mechanicViews.Add(mechanicView.TempMechanic.Id, mechanicView); animatedViews.Remove(mechanicView.TempMechanic.Id); }) }; Vector3AnimationData scaleData = new Vector3AnimationData { StartValue = 2f * Vector3.one, EndValue = Vector3.one, Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdateScaleFunctor(), OnUpdate = rectTransform.UpdateScaleTimedFunctor(), OnEnd = rectTransform.UpdateScaleFunctor() }; FloatAnimationData rotateData = new FloatAnimationData { StartValue = rectTransform.localRotation.eulerAngles.z, EndValue = 0, Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdateZRotation(), OnUpdate = rectTransform.UpdateZRotationTimed(), OnEnd = rectTransform.UpdateZRotation() }; positionAnimator.StartAnimation(positionData); scaleAnimator.StartAnimation(scaleData); rotateAnimator.StartAnimation(rotateData); }
public void MoveTo(PlanetImagePositionSize positionSize, float duration) { Vector2 currentPosition = RectTransform.anchoredPosition; Vector2 currentSize = RectTransform.sizeDelta; Vector2AnimationData positionData = new Vector2AnimationData { StartValue = currentPosition, EndValue = positionSize.position, Duration = duration, EaseType = EaseType.EaseInOutCubic, OnStart = (pos, obj) => { RectTransform.anchoredPosition = pos; if (parent.IsActiveIndex(CurrentIndex)) { RectTransform.gameObject.Activate(); } }, OnUpdate = (pos, t, obj) => RectTransform.anchoredPosition = pos, OnEnd = (pos, obj) => { RectTransform.anchoredPosition = pos; SetIndex(positionSize.index); if (!parent.IsActiveIndex(positionSize.index)) { RectTransform.gameObject.Deactivate(); } } }; Vector2AnimationData sizeData = new Vector2AnimationData { StartValue = currentSize, EndValue = positionSize.size, Duration = duration, EaseType = EaseType.EaseInOutCubic, OnStart = (size, obj) => { RectTransform.sizeDelta = size; }, OnUpdate = (size, t, obj) => { RectTransform.sizeDelta = size; }, OnEnd = (size, obj) => { RectTransform.sizeDelta = size; } }; StartCoroutine(MoveToImpl(new List <Vector2AnimationData> { positionData, sizeData })); }
private IEnumerator ShowMoveTextFailImpl(UnofficialTransferCashInfo info) { yield return(new WaitForSeconds(interval)); GameObject textPrefab = Services.ResourceService.Prefabs.GetPrefab("movetext"); GameObject textInstance = Instantiate(textPrefab); Text text = textInstance.GetComponent <Text>(); text.text = $"-{BosUtils.GetCurrencyString(info.LooseValue.ToCurrencyNumber(), "", "")}"; //text.SetAllDirty(); RectTransform textTransform = textInstance.GetComponent <RectTransform>(); textTransform.SetParent(transform, false); textTransform.anchoredPosition = endObject.anchoredPosition; textTransform.localScale = new Vector3(2, 2, 1); Color startColor = Color.red; Color endColor = Color.red.ChangeAlpha(0.1f); var colorData = AnimUtils.GetColorAnimData(startColor, endColor, 1.5f, EaseType.EaseOutQuintic, textTransform, BosAnimationMode.Single, () => { }); var positionData = new Vector2AnimationData() { StartValue = textTransform.anchoredPosition, EndValue = textTransform.anchoredPosition - new Vector2(0, 300), Duration = 1.5f, EaseType = EaseType.EaseOutQuintic, Target = textInstance, OnStart = (p, o) => textTransform.anchoredPosition = p, OnUpdate = (p, t, o) => textTransform.anchoredPosition = p, OnEnd = (p, o) => { textTransform.anchoredPosition = p; Destroy(textInstance); } }; ColorAnimator colorAnimator = textInstance.GetComponent <ColorAnimator>(); Vector2Animator positionAnimator = textInstance.GetComponent <Vector2Animator>(); colorAnimator.StartAnimation(colorData); positionAnimator.StartAnimation(positionData); Sounds.PlayOneShot(SoundName.slotFail); ViewService.ShowDelayed(ViewType.TransferWarningView, 0.5f, new ViewData { ViewDepth = ViewService.NextViewDepth, UserData = info.LooseValue }); animObjects.Add(textInstance); }
private void TryCompleteEvents(int index, Vector2 value, float normTimer, Vector2AnimationData data) { List <AnimationEventInfo <Vector2> > dataEvents = events[index]; foreach (AnimationEventInfo <Vector2> evt in dataEvents) { if ((evt.Event.Mode == AnimationEventMode.Single && !evt.IsCompleted) || (evt.Event.Mode == AnimationEventMode.Multiple)) { if (evt.Event.IsValid?.Invoke(value, normTimer, data.Target) ?? false) { evt.Event.OnEvent?.Invoke(value, normTimer, data.Target); evt.IsCompleted = true; } } } }
private void ScaleOut() { Vector2AnimationData data = new Vector2AnimationData { StartValue = 0.95f * Vector2.one, EndValue = Vector2.one, Target = gameObject, EaseType = EaseType.EaseInOutCubic, Duration = 0.15f, OnStart = (s, o) => { o.GetComponent <RectTransform>().localScale = new Vector3(s.x, s.y, 1); }, OnUpdate = (s, t, o) => { o.GetComponent <RectTransform>().localScale = new Vector3(s.x, s.y, 1); }, OnEnd = (s, o) => { o.GetComponent <RectTransform>().localScale = new Vector3(s.x, s.y, 1); } }; GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { data }); }
public static void MoveFromTo(this RectTransform transform, Vector2 startPosition, Vector2 endPosition, float duration, EaseType easeType, Action onComplete = null) { Vector2Animator animator = transform.gameObject.GetOrAdd <Vector2Animator>(); Vector2AnimationData data = new Vector2AnimationData { StartValue = startPosition, EndValue = endPosition, Duration = duration, EaseType = easeType, AnimationMode = BosAnimationMode.Single, Target = transform.gameObject, OnStart = transform.UpdatePositionFunctor(), OnUpdate = transform.UpdatePositionTimedFunctor(), OnEnd = transform.UpdatePositionFunctor(onComplete) }; animator.StartAnimation(data); }
private IEnumerator ShowGirlImpl() { yield return(new WaitForSeconds(0.3f)); Vector2Animator posAnimator = girlTransform.gameObject.GetOrAdd <Vector2Animator>(); Vector2AnimationData posData = new Vector2AnimationData() { StartValue = new Vector2(-650, -110), EndValue = new Vector2(-360, -110), Duration = .2f, EaseType = EaseType.EaseInOutQuad, Target = girlTransform.gameObject, OnStart = girlTransform.UpdatePositionFunctor(), OnUpdate = girlTransform.UpdatePositionTimedFunctor(), OnEnd = girlTransform.UpdatePositionFunctor(() => { /*StartCoroutine(ShowBubbleImpl());*/ StartCoroutine(ShowOkButtonImpl()); }) }; posAnimator.StartAnimation(posData); }
public static Vector2AnimationData GetScaleAnimData(float start, float end, float duration, EaseType easeType, RectTransform target, System.Action onEnd = null) { Vector2AnimationData data = new Vector2AnimationData { StartValue = new Vector2(start, start), EndValue = new Vector2(end, end), Duration = duration, Target = target.gameObject, EaseType = easeType, OnStart = (s, o) => target.localScale = new Vector3(s.x, s.y, 1), OnUpdate = (s, t, o) => target.localScale = new Vector3(s.x, s.y, 1), OnEnd = (s, o) => { target.localScale = new Vector3(s.x, s.y, 1); onEnd?.Invoke(); } }; return(data); }
public override void Start() { base.Start(); if (debugButton != null) { debugButton.SetListener(() => ViewService.Show(ViewType.DebugView)); } gameScroll = FindObjectOfType <GameScrollView>(); totalCountActiveGenerators = gameScroll.GetComponentsInChildren <PlanetGeneratorView>().Length; if (totalCountActiveGenerators == 0) { totalCountActiveGenerators = 1; } //Debug.Log($"founded total count of active generators => {totalCountActiveGenerators}".BoldItalic().Colored(ConsoleTextColor.navy)); Color startColor = rectangularBackgroundImage.color; leftModuleFrameInData = new Vector2AnimationData { StartValue = new Vector2(-641, -380), EndValue = new Vector2(-1056, -380), Duration = duration * 0.5f, EaseType = easeType, Target = leftModuleTransform.gameObject, OnStart = (pos, go) => leftModuleTransform.anchoredPosition = pos, OnEnd = (pos, go) => { leftModuleTransform.anchoredPosition = pos; Vector2AnimationData smallData = new Vector2AnimationData { StartValue = new Vector2(-1053, -253.4f), EndValue = new Vector2(-903, -253.4f), Duration = duration * 0.5f, EaseType = easeType, Target = leftModuleSmallTransform.gameObject, OnStart = (pos2, go2) => leftModuleSmallTransform.anchoredPosition = pos2, OnEnd = (pos2, go2) => leftModuleSmallTransform.anchoredPosition = pos2, OnUpdate = (pos2, t2, go2) => leftModuleSmallTransform.anchoredPosition = pos2 }; leftModuleSmallTransform.GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { smallData }); }, OnUpdate = (pos, t, go) => leftModuleTransform.anchoredPosition = pos }; leftModuleFrameSmallOutData = new Vector2AnimationData { StartValue = new Vector2(-903, -253.4f), EndValue = new Vector2(-1053, -253.4f), Duration = duration * 0.5f, EaseType = easeType, Target = leftModuleSmallTransform.gameObject, OnStart = (pos, go) => leftModuleSmallTransform.anchoredPosition = pos, OnEnd = (pos, go) => { leftModuleSmallTransform.anchoredPosition = pos; Vector2AnimationData leftData = new Vector2AnimationData { StartValue = new Vector2(-1056, -380), EndValue = new Vector2(-641, -380), EaseType = EaseType.EaseOutCubic, Duration = duration, OnStart = (pos2, go2) => leftModuleTransform.anchoredPosition = pos2, OnEnd = (pos2, go2) => leftModuleTransform.anchoredPosition = pos2, OnUpdate = (pos2, t2, go2) => leftModuleTransform.anchoredPosition = pos2 }; leftModuleTransform.GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { leftData }); }, OnUpdate = (pos, t, go) => leftModuleSmallTransform.anchoredPosition = pos, }; rightPlanetFrameInData = new Vector2AnimationData { StartValue = new Vector2(640, -380), EndValue = new Vector2(1050, -380), Duration = duration * 0.5f, EaseType = easeType, OnStart = (pos, go) => rightPlanetFrameTransform.anchoredPosition = pos, OnEnd = (pos, go) => { rightPlanetFrameTransform.anchoredPosition = pos; Vector2AnimationData smallData = new Vector2AnimationData { StartValue = new Vector2(1056, -253.4f), EndValue = new Vector2(900, -253.4f), Duration = 0.5f * duration, EaseType = easeType, OnStart = (pos2, go2) => rightPlanetSmallTransform.anchoredPosition = pos2, OnEnd = (pos2, go2) => rightPlanetSmallTransform.anchoredPosition = pos2, OnUpdate = (pos2, t2, go2) => rightPlanetSmallTransform.anchoredPosition = pos2, Target = rightPlanetSmallTransform.gameObject }; rightPlanetSmallTransform.GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { smallData }); }, OnUpdate = (pos, t, go) => rightPlanetFrameTransform.anchoredPosition = pos, Target = rightPlanetFrameTransform.gameObject }; rightPlanetFrameSmallOutData = new Vector2AnimationData { StartValue = new Vector2(900, -253.4f), EndValue = new Vector2(1056, -253.4f), Duration = 0.5f * duration, EaseType = easeType, OnStart = (pos2, gos2) => rightPlanetSmallTransform.anchoredPosition = pos2, OnEnd = (pos2, go2) => { rightPlanetSmallTransform.anchoredPosition = pos2; Vector2AnimationData rightData = new Vector2AnimationData { StartValue = new Vector2(1050, -380), EndValue = new Vector2(640, -380), Duration = duration, EaseType = EaseType.EaseOutCubic, Target = rightPlanetFrameTransform.gameObject, OnStart = (pos, go) => rightPlanetFrameTransform.anchoredPosition = pos, OnEnd = (pos, go) => rightPlanetFrameTransform.anchoredPosition = pos, OnUpdate = (pos, t, go) => rightPlanetFrameTransform.anchoredPosition = pos }; rightPlanetFrameTransform.GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { rightData }); }, OnUpdate = (pos2, t2, go2) => rightPlanetSmallTransform.anchoredPosition = pos2 }; rectangularBackgroundInData = new Vector2AnimationData { StartValue = new Vector2(0, 0), EndValue = new Vector2(0, 383), Duration = duration, EaseType = easeType, Target = rectangularBackgroundTransform.gameObject, OnStart = (pos, go) => { rectangularBackgroundTransform.anchoredPosition = pos; rightPlanetFrameTransform.GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { rightPlanetFrameInData }); leftModuleTransform.GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { leftModuleFrameInData }); }, OnEnd = (pos, go) => { State = HeaderState.Collapsed; isAnimating = false; rectangularBackgroundTransform.anchoredPosition = pos; }, OnUpdate = (pos, t, go) => { rectangularBackgroundTransform.anchoredPosition = pos; }, Events = new List <AnimationEvent <Vector2> > { new AnimationEvent <Vector2> { Mode = AnimationEventMode.Single, IsValid = (pos, t, go) => { if (pos.y >= 0f) { return(true); } return(false); }, OnEvent = (pos, t, go) => { Color sourceColor = rectangularBackgroundImage.color; ColorAnimationData colorData = new ColorAnimationData { Duration = duration * Mathf.Clamp01(60 / rectangularBackgroundTransform.sizeDelta.y) * 0.2f, EaseType = easeType, StartValue = sourceColor, EndValue = new Color(sourceColor.r, sourceColor.g, sourceColor.b, 0), Target = rectangularBackgroundImage.gameObject, OnStart = (c, go2) => rectangularBackgroundImage.color = c, OnEnd = (c, go2) => rectangularBackgroundImage.color = c, OnUpdate = (c, t2, go2) => rectangularBackgroundImage.color = c }; rectangularBackgroundImage.GetComponent <ColorAnimator>().StartAnimation(new List <ColorAnimationData> { colorData }); } } } }; rectangularBackgroundOutData = new Vector2AnimationData { StartValue = new Vector2(0, 383), EndValue = new Vector2(0, 0), Duration = duration, EaseType = easeType, OnStart = (pos, go) => { rectangularBackgroundTransform.anchoredPosition = pos; /* * rightPlanetFrameTransform.GetComponent<Vector2Animator>().StartAnimation(new List<Vector2AnimationData> { * rightPlanetFrameOutData * });*/ rightPlanetSmallTransform.GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { rightPlanetFrameSmallOutData }); leftModuleSmallTransform.GetComponent <Vector2Animator>().StartAnimation(new List <Vector2AnimationData> { leftModuleFrameSmallOutData }); }, OnEnd = (pos, go) => { State = HeaderState.Expanded; isAnimating = false; rectangularBackgroundTransform.anchoredPosition = pos; }, OnUpdate = (pos, t, go) => rectangularBackgroundTransform.anchoredPosition = pos, Target = rectangularBackgroundTransform.gameObject, Events = new List <AnimationEvent <Vector2> > { new AnimationEvent <Vector2> { Mode = AnimationEventMode.Single, IsValid = (pos, t, go) => { if (pos.y <= 60) { return(true); } return(false); }, OnEvent = (pos, t, go) => { ColorAnimationData colorData = new ColorAnimationData { Duration = (1.0f - t) * duration, EaseType = easeType, StartValue = new Color(0, 0, 0, 0), EndValue = startColor, Target = rectangularBackgroundImage.gameObject, OnStart = (c, go2) => rectangularBackgroundImage.color = c, OnEnd = (c, go2) => rectangularBackgroundImage.color = c, OnUpdate = (c, t2, go2) => rectangularBackgroundImage.color = c }; rectangularBackgroundImage.GetComponent <ColorAnimator>().StartAnimation(new List <ColorAnimationData> { colorData }); } } } }; updateTimer.Setup(0.4f, (delta) => { if (gameScroll.VerticalNormalizedPosition >= MaxVerticalNormalizedPositionWhenEnableHiding) { if (State == HeaderState.Collapsed && !isAnimating) { Expand(); } } else { if (State == HeaderState.Expanded && !isAnimating) { Collapse(); } } }, true); }
private void AnimateAuditorObject(SecretaryAnimObject mechanicView, Auditor info) { Vector3Animator scaleAnimator = mechanicView.gameObject.GetOrAdd <Vector3Animator>(); Vector2Animator positionAnimator = mechanicView.gameObject.GetOrAdd <Vector2Animator>(); ColorAnimator colorAnimator = mechanicView.gameObject.GetOrAdd <ColorAnimator>(); FloatAnimator rotateAnimator = mechanicView.gameObject.GetOrAdd <FloatAnimator>(); RectTransform rectTransform = mechanicView.GetComponent <RectTransform>(); Image image = mechanicView.GetComponent <Image>(); Vector2 endOffset = Random.insideUnitCircle.normalized * 300; if (endOffset.y < 0) { endOffset.y = -endOffset.y; } Vector2 startPosition = buyButton.GetComponent <RectTransform>().anchoredPosition; Vector2 endPosition = startPosition + endOffset; Vector2AnimationData positionData = new Vector2AnimationData { StartValue = startPosition, EndValue = endPosition, Duration = 0.3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdatePositionFunctor(), OnUpdate = rectTransform.UpdatePositionTimedFunctor(), OnEnd = rectTransform.UpdatePositionFunctor(() => { StartCoroutine(MoveInPlaceImpl(mechanicView, info)); }) }; Vector3AnimationData scaleData = new Vector3AnimationData { StartValue = Vector3.one, EndValue = 2f * Vector3.one, Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdateScaleFunctor(), OnUpdate = rectTransform.UpdateScaleTimedFunctor(), OnEnd = rectTransform.UpdateScaleFunctor() }; ColorAnimationData colorData = new ColorAnimationData { StartValue = new Color(1, 1, 1, 0), EndValue = new Color(1, 1, 1, 1), Duration = .1f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = image.UpdateColorFunctor(), OnUpdate = image.UpdateColorTimedFunctor(), OnEnd = image.UpdateColorFunctor() }; FloatAnimationData rotateData = new FloatAnimationData { StartValue = 0, EndValue = Random.Range(-40, 40), Duration = .3f, EaseType = EaseType.EaseInOutQuad, Target = mechanicView.gameObject, OnStart = rectTransform.UpdateZRotation(), OnUpdate = rectTransform.UpdateZRotationTimed(), OnEnd = rectTransform.UpdateZRotation() }; positionAnimator.StartAnimation(positionData); scaleAnimator.StartAnimation(scaleData); colorAnimator.StartAnimation(colorData); rotateAnimator.StartAnimation(rotateData); }
public void StartAnimation(Vector2AnimationData data) { StartAnimation(new List <Vector2AnimationData> { data }); }
private void Transition(ManagementView.SwipeResultAction transitionAction) { if (currentRect == null) { return; } float distance = Vector2.Distance(currentRect.anchoredPosition, GetTargetPointForCurrentRect(transitionAction)); float interval = distance / container.TransitionSpeed; switch (transitionAction) { case ManagementView.SwipeResultAction.ReturnToCenter: { isCurrentTransitionStarted = true; OnTransitionStartedChanged(IsTransitionStarted); Vector2AnimationData currentPosData = new Vector2AnimationData { StartValue = currentRect.anchoredPosition, EndValue = Vector2.zero, Duration = interval, EaseType = EaseType.EaseInOutQuad, Target = currentRect.gameObject, OnStart = (p, o) => SetPositions(p), OnUpdate = (p, t, o) => SetPositions(p), OnEnd = (p, o) => { isCurrentTransitionStarted = false; OnTransitionStartedChanged(IsTransitionStarted); SetPositions(p); } }; currentRect.gameObject.GetOrAdd <Vector2Animator>().StartAnimation(currentPosData); } break; case ManagementView.SwipeResultAction.MoveToLeft: { isCurrentTransitionStarted = true; isRightTransitionStarted = true; OnTransitionStartedChanged(IsTransitionStarted); Vector2AnimationData currentPosData = new Vector2AnimationData { StartValue = currentRect.anchoredPosition, EndValue = -HORIZONTAL_VECTOR, Duration = interval, EaseType = EaseType.EaseInOutQuad, Target = currentRect.gameObject, OnStart = (p, o) => SetPositions(p), OnUpdate = (p, t, o) => SetPositions(p), OnEnd = (p, o) => { isCurrentTransitionStarted = false; SetPositions(p); isRightTransitionStarted = false; MakeRightAsCurrent(); container.OnTransitionCompletedIn(managerId); OnTransitionStartedChanged(IsTransitionStarted); } }; currentRect.gameObject.GetOrAdd <Vector2Animator>().StartAnimation(currentPosData); } break; case ManagementView.SwipeResultAction.MoveToRight: { isCurrentTransitionStarted = true; isLeftTransitionStarted = true; OnTransitionStartedChanged(IsTransitionStarted); Vector2AnimationData currentPosData = new Vector2AnimationData { StartValue = currentRect.anchoredPosition, EndValue = HORIZONTAL_VECTOR, Duration = interval, EaseType = EaseType.EaseInOutQuad, Target = currentRect.gameObject, OnStart = (p, o) => SetPositions(p), OnUpdate = (p, t, o) => SetPositions(p), OnEnd = (p, o) => { isCurrentTransitionStarted = false; SetPositions(p); isLeftTransitionStarted = false; MakeLeftAsCurrent(); container.OnTransitionCompletedIn(managerId); OnTransitionStartedChanged(IsTransitionStarted); } }; currentRect.gameObject.GetOrAdd <Vector2Animator>().StartAnimation(currentPosData); } break; } }