IEnumerator transitToScene(SubAreaHandler subAreaHandler) { Door door = subAreaHandler.gameObject.GetComponentInChildren <Door>(); player.stateMachine.SwitchState(player.cinemaState); if (door != null) { // Open Door Animator doorAnim = door.GetComponent <Animator>(); door.Open(); yield return(new WaitForEndOfFrame()); yield return(new WaitForSeconds(doorAnim.GetCurrentAnimatorStateInfo(0).length)); } // Play Transition UI Effect // float time = gm.uiHandler.uiEffectHandler.OnPlayUIEffect(subAreaHandler.uIEffect, UIEffectAnimationClip.start); yield return(new WaitForSeconds(gm.uiHandler.uiEffectHandler.OnPlayUIEffect(subAreaHandler.uIEffect, UIEffectAnimationClip.start))); // TODO: /* startEffect */ /* endEffect */ // Enable and Disable scenes // move player to new position yield return(new WaitForSeconds(UIEffectData.CROSS_FADE_DELAY / 2)); door?.Close(); yield return(new WaitForEndOfFrame()); gm.LoadSceneCode(subAreaHandler.transitionSceneCode); player.SetVelocityY(0); if (subAreaHandler.targetSceneInitPos != null) { player.transform.position = subAreaHandler.targetSceneInitPos.position; } Camera.main.GetComponent <BasicFollower>().ClampCamera(player.transform.position); player.ResetGrounded(); yield return(new WaitForSeconds(UIEffectData.CROSS_FADE_DELAY / 2)); //yield return new WaitForSeconds(UIEffectData.CROSS_FADE_DELAY); yield return(new WaitForSeconds(gm.uiHandler.uiEffectHandler.OnPlayUIEffect(subAreaHandler.uIEffect, UIEffectAnimationClip.end))); // set sub area handler to null player.SetSubAreaHandler(null); player.stateMachine.SwitchState(player.idleState); }
public void OnPerformAreaTransmission(SubAreaHandler subAreaHandler) { performAreaTransmissionHandler?.Invoke(subAreaHandler); }
void Awake() { subAreaHandler = transform.parent.GetComponent <SubAreaHandler>(); InfoSignAnim = transform.parent.GetComponentInChildren <Animator>(); }
public void TransitToScene(SubAreaHandler subAreaHandler) => StartCoroutine(transitToScene(subAreaHandler));
public void SetSubAreaHandler(SubAreaHandler subAreaHandler) => this.subAreaHandler = subAreaHandler;