private IEnumerator LoadImpl() { var operation = SceneManager.LoadSceneAsync(data.BuildIndex, data.Mode); yield return(operation); if (data.Mode == LoadSceneMode.Additive) { SceneManager.SetActiveScene(SceneManager.GetSceneByBuildIndex(data.BuildIndex)); } yield return(new WaitForEndOfFrame()); yield return(new WaitForEndOfFrame()); data.LoadAction?.Invoke(); Image image = GetComponent <Image>(); ColorAnimationData dataOut = new ColorAnimationData { StartValue = new Color(0, 0, 0, 1), EndValue = new Color(0, 0, 0, 0), Duration = fadeInterval, EaseType = EaseType.EaseInOutQuad, Target = gameObject, OnStart = (c, go) => image.color = c, OnUpdate = (c, t, go) => image.color = c, OnEnd = (c, go) => { image.color = c; Services.ViewService.Remove(Type); } }; GetComponent <ColorAnimator>().StartAnimation(dataOut); }
public override void Setup(ViewData indata) { data = indata.UserData as LoadSceneData; if (data == null) { throw new UnityException($"Invalid parameter type to {nameof(LoadingView)}"); } Image image = GetComponent <Image>(); ColorAnimationData dataIn = new ColorAnimationData { StartValue = new Color(0, 0, 0, 0), EndValue = new Color(0, 0, 0, 1), Duration = fadeInterval, Target = gameObject, AnimationMode = BosAnimationMode.Single, EaseType = EaseType.EaseInOutQuad, OnStart = (c, go) => image.color = c, OnUpdate = (c, t, go) => image.color = c, OnEnd = (c, go) => { image.color = c; StartCoroutine(LoadImpl()); } }; GetComponent <ColorAnimator>().StartAnimation(dataIn); }
private IEnumerator StartWaveImpl() { yield return(new WaitUntil(() => IsAvailable)); rectTransform.localScale = Vector3.one; image.color = Color.white; image.enabled = true; isScaleCompleted = false; isColorCompleted = false; IsAvailable = false; var scaleData = new Vector3AnimationData { StartValue = Vector3.one, EndValue = endScale * Vector3.one, AnimationMode = BosAnimationMode.Single, Duration = interval, EaseType = EaseType.EaseInOutQuad, Target = rectTransform.gameObject, OnStart = (s, o) => { rectTransform.localScale = s; }, OnUpdate = (s, t, o) => { rectTransform.localScale = s; }, OnEnd = (s, o) => { rectTransform.localScale = s; isScaleCompleted = true; }, Events = new List <AnimationEvent <Vector3> > { new AnimationEvent <Vector3>() { Mode = AnimationEventMode.Single, IsValid = (s, t, o) => t >= 0.5f, OnEvent = (s, t, o) => { var colorData = new ColorAnimationData { StartValue = Color.white, EndValue = Color.white.ChangeAlpha(0), AnimationMode = BosAnimationMode.Single, Duration = interval * (1f - t), EaseType = EaseType.EaseInOutQuad, Target = image.gameObject, OnStart = image.UpdateColorFunctor(), OnUpdate = image.UpdateColorTimedFunctor(), OnEnd = image.UpdateColorFunctor(() => { isColorCompleted = true; StartCoroutine(EndWaveImpl()); }) }; colorAnimator.StartAnimation(colorData); } } } }; scaleAnimator.StartAnimation(scaleData); }
private void PrepareAnimationObject(GameObject obj) { RectTransform trs = obj.GetComponent <RectTransform>(); Image image = obj.GetComponent <Image>(); Vector3Animator scaleAnimator = obj.GetComponent <Vector3Animator>(); ColorAnimator colorAnimator = obj.GetComponent <ColorAnimator>(); BezierMover mover = obj.GetComponent <BezierMover>(); RectTransformPositionObject positionObject = obj.GetComponent <RectTransformPositionObject>(); Vector3AnimationData scaleData = new Vector3AnimationData() { AnimationMode = BosAnimationMode.Single, Duration = interval * 0.5f, EaseType = EaseType.EaseInOutQuad, EndValue = Vector3.one * 1.25f, Events = null, StartValue = Vector3.one, Target = obj, OnStart = (s, o) => trs.localScale = s, OnUpdate = (s, t, o) => trs.localScale = s, OnEnd = (s, o) => { trs.localScale = s; Vector3AnimationData scale2Data = new Vector3AnimationData() { StartValue = Vector3.one * 1.25f, EndValue = Vector3.one, Duration = interval * 0.5f, EaseType = EaseType.EaseInOutQuad, Target = obj, OnStart = (s2, o2) => trs.localScale = s2, OnUpdate = (s2, t2, o2) => trs.localScale = s2, OnEnd = (s2, o2) => trs.localScale = s2 }; scaleAnimator.StartAnimation(scale2Data); ColorAnimationData colorData = new ColorAnimationData() { StartValue = Color.white, EndValue = new Color(1, 1, 1, 0.2f), Duration = interval * 0.5f, EaseType = EaseType.EaseInOutQuad, Target = obj, OnStart = (c2, o2) => image.color = c2, OnUpdate = (c2, t2, o2) => image.color = c2, OnEnd = (c2, o2) => image.color = c2 }; colorAnimator.StartAnimation(colorData); } }; scaleAnimator.StartAnimation(scaleData); var bezierData = AnimUtils.GetBizerQuadData(positionObject, startObject.anchoredPosition, endObject.anchoredPosition, interval * 1.1f, (go) => Destroy(go), linerFactor, orthoFactor); mover.Setup(bezierData); }
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); }