Esempio n. 1
0
    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);
    }
Esempio n. 2
0
 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();
 }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
 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);
     }
 }
Esempio n. 5
0
 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;
            }
        }
Esempio n. 7
0
 public OnSwitchScene(ECameraTargetType pmode)
 {
     mode = pmode;
 }
Esempio n. 8
0
        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);
            }
        }