protected void Awake() { if (_instance != null && _instance != this) { Destroy(this); throw new Exception("An instance of QuestManager already exists."); } else { _instance = this; } Events.Instance.AddListener <OnSwitchScene>(OnChangeScene); view = ECameraTargetType.MAP; ArrowDisplayer.Instances(ArrowDisplayerName).SetContainer(container as RectTransform); ArrowDisplayer.Instances(ArrowDisplayerName).SetModels(null, arrowModel); _questList = GetComponentsInChildren <UIQuest>(true); for (int i = 0; i < _questList.Length; i++) { _questList[i].Init(); Quests.Add(_questList[i].quest); } tweener.SetMethods(Tween, null, null, Disable); TweenerLead.Instance.NewTween(GetComponent <RectTransform>(), tweener); gameObject.SetActive(false); }
protected void OnChangeScene(OnSwitchScene e) { if (e.mode == ECameraTargetType.MAP) { view = ECameraTargetType.MAP; ArrowDisplayer.Instances(ArrowDisplayerName).SetActiveArrows(false); } else if (e.mode == ECameraTargetType.ZOOM) { view = ECameraTargetType.ZOOM; ArrowDisplayer.Instances(ArrowDisplayerName).SetActiveArrows(true); } DisplayQuest(); }
public override void Reset() { if (player != null) { transform.position = player.transform.position + player.transform.position.normalized * CameraManager.Instance.MapViewDistance; transform.LookAt(player.transform); player = null; } planetTransform = null; mode = ECameraTargetType.MAP; _blocked = false; _holding = false; _transitionRunning = false; }
protected void OnChangeScene(OnSwitchScene e) { if (e.mode == ECameraTargetType.MAP) { view = ECameraTargetType.MAP; ArrowDisplayer.Instances("NotePad").SetActiveArrows(false); ArrowDisplayer.Instances("FtueArrow").SetActiveArrows(false); SetBillBoardVisibility(false); } else if (e.mode == ECameraTargetType.ZOOM) { view = ECameraTargetType.ZOOM; ArrowDisplayer.Instances("NotePad").SetActiveArrows(true); ArrowDisplayer.Instances("FtueArrow").SetActiveArrows(true); SetBillBoardVisibility(true); } }
protected void FinishTransition(OnTransitionEnd e) { player = PlayerManager.Instance.GetPlayer(); CameraManager.Instance.TransformCameraTarget(player.transform, out targetPosition, out targetRotation, _targetMode); Events.Instance.RemoveListener <OnTransitionEnd>(FinishTransition); if (_targetMode == ECameraTargetType.MAP) { if (mode == ECameraTargetType.ZOOM) { mode = _targetMode; StartCoroutine(DezoomIntroCoroutine()); } } if (_targetMode == ECameraTargetType.ZOOM) { mode = _targetMode; StartCoroutine(ZoomIntroCoroutine()); } }
public void TransformCameraTarget(Transform targetTransform, out Vector3 outPosition, out Quaternion outRotation, ECameraTargetType view) { if (view == ECameraTargetType.MAP) { Vector3 lpos = targetTransform.position; outPosition = lpos + (lpos.normalized * MapViewDistance); Vector3 upVector = lpos.normalized; Vector3 rightVector = Vector3.Cross(upVector, Vector3.up).normalized; Vector3 forwardVector = MathCustom.GetFaceNormalVector(Vector3.zero, rightVector, upVector); outRotation = Quaternion.LookRotation(-upVector, forwardVector); } else if (view == ECameraTargetType.ZOOM) { Vector3 lpos = targetTransform.position; Vector3 newPosition; MathCustom.SphericalToCartesian(DistanceToplayer, -Mathf.PI / 2, Elevation, out newPosition); outPosition = targetTransform.TransformPoint(newPosition + Vector3.up * StepHeight); Vector3 newPos = targetTransform.TransformPoint(newPosition); Vector3 cross = Vector3.Cross(newPos, targetTransform.forward); outRotation = Quaternion.LookRotation(lpos - newPos, Vector3.Cross(cross, -(lpos - newPos))); } else { outPosition = Vector3.zero; outRotation = Quaternion.identity; } }
public OnSwitchScene(ECameraTargetType pmode) { mode = pmode; }
protected IEnumerator TransitionCoroutine(ECameraTargetType targetView, Player targetPlayer) { ControllerInput.instance.ControlEnable = EControlEnable.Off; UIManager.instance.PNJState.Active(false); if (FtueManager.instance.active && targetView != mode) { Events.Instance.Raise(new OnInputFtuePinch()); } _transitionRunning = true; Block(); float t = 0; Vector3 basePosition = transform.position; Quaternion baseRotation = transform.rotation; CameraManager.Instance.TransformCameraTarget(targetPlayer.transform, out targetPosition, out targetRotation, targetView); while (t < 1) { switch (targetView) { case ECameraTargetType.MAP: if (mode == ECameraTargetType.MAP) { t += Time.deltaTime; if (t > 1) { t = 1; } float x = Easing.CrossFade(Easing.SmoothStart, 2, Easing.SmoothStop, 2, t); transform.position = Vector3.Slerp(basePosition, targetPosition, x); Reoriente(); yield return(null); } else { t += Time.deltaTime * (1f / SwitchPanel.TIME_TRANSITION); if (t > 1) { t = 1; } transform.position += (transform.position.normalized - transform.forward) * (Time.deltaTime / 4f); } break; case ECameraTargetType.ZOOM: t += Time.deltaTime * (1f / SwitchPanel.TIME_TRANSITION); if (t > 1) { t = 1; } transform.position -= transform.position.normalized * Time.deltaTime; break; default: break; } yield return(null); } _targetMode = targetView; if (targetView == mode) { ControllerInput.instance.ControlEnable = EControlEnable.On; player = targetPlayer; Events.Instance.Raise(new OnEndSwitchedPlayer()); Unblock(); _transitionRunning = false; StopAllCoroutines(); } else { if (FtueManager.instance.active) { Events.Instance.Raise(new OnEndFtuePinch()); } Events.Instance.AddListener <OnTransitionEnd>(FinishTransition); } }