private static DPAnimationData GetDPAnimationFromEnum(object obj) { //Debug.Log(obj.ToString()); //return I.animationConfig.values.Find(x => x.anim == obj.ToString()); DPAnimationData data = new DPAnimationData(); switch (obj.ToString()) { case "FadeIn": break; case "FadeOut": data.show = false; break; case "FadeInUp": data.moveDir = new Vector3(0f, -0.5f, 0f); break; case "FadeOutDown": data.show = false; data.moveDir = new Vector3(0f, -0.5f, 0f); break; } return(data); }
private static void AnimateInternal(DPOverlayBase dp, object anim, float overrideAnimTime = -1f) { KillActiveAnimations(dp); DPAnimationData data = GetDPAnimationFromEnum(anim.ToString().Replace("DPAnimations.", "")); if (data == null) { Debug.LogError("DPAnimationData ( " + anim.ToString() + ") could not be found, aborting!"); return; } if (data.changeVisibility && data.show) { dp.overlay.SetVisible(true, false); dp.overlay.SetOpacity(0, false); foreach (DPOverlayBase child in dp.children) { if (!child.followParentOpacity) { continue; } child.overlay.SetVisible(true, false); child.overlay.SetOpacity(0, false); } } //Calculate the animation time float finalAnimTime; if (overrideAnimTime > 0) { finalAnimTime = overrideAnimTime; } else { finalAnimTime = animTime; } DPAnimationState state = new DPAnimationState() { dpBase = dp, data = data, animLength = finalAnimTime, finalPos = dp.transform.localPosition, finalWidth = dp.overlay.width }; //MOVEMENT ANIMATION if (data.move) { Vector3 curPos = dp.transform.localPosition; //Animate pos is either the starting position or the ending position of the animation depending on if it is showing or hiding Vector3 animatePos = curPos + (Vector3.right * data.moveDir.x * dp.overlay.width) + (Vector3.up * data.moveDir.y * dp.overlay.width) + (Vector3.forward * data.moveDir.z * dp.overlay.width); Vector3 anchoredPos = curPos + (dp.transform.right * data.moveDir.x) + (dp.transform.up * data.moveDir.y) + (dp.transform.forward * data.moveDir.z); if (data.changeVisibility) { //If it's fading in: if (data.show) { dp.SetOverlayTransform(animatePos, dp.transform.localEulerAngles, true, false, true); dp.TransitionOverlayPosition(curPos, dp.transform.localEulerAngles, finalAnimTime, animShowEasing, false); } //If it's fading out: else { dp.TransitionOverlayPosition(animatePos, dp.transform.localEulerAngles, finalAnimTime, animHideEasing, false); } } //If it's not changing visibility: else { dp.TransitionOverlayPosition(animatePos, dp.transform.localEulerAngles, finalAnimTime, animHideEasing, false); } } //VISIBILITY ANIMATION if (data.changeVisibility) { if (data.show) { if (dp.overlay.targetOpacity <= 0f) { Debug.LogError("Overlay target opacity was 0f!"); } dp.TransitionOverlayOpacity(dp.overlay.targetOpacity, finalAnimTime, animShowEasing, false); } else { dp.TransitionOverlayOpacity(0f, finalAnimTime, animHideEasing, false); } } //SCALING ANIMATION if (data.scale) { if (data.changeVisibility) { if (data.show) { //float curWidth = dp.overlay.width; dp.overlay.SetWidthInMeters(dp.overlay.width * data.widthScaleMulti, false); dp.TransitionOverlayWidth(dp.overlay.width, finalAnimTime, false); } else { dp.TransitionOverlayWidth(dp.overlay.width * data.widthScaleMulti, finalAnimTime, false); } } else { dp.TransitionOverlayWidth(dp.overlay.width * data.widthScaleMulti, finalAnimTime, false); } } I.StartCoroutine(HandleAnimationData(state)); }