Exemple #1
0
    public void GoToPrevious()
    {
        if (!moving && PageEventsManager.currentPage.gameObject.GetComponent <LoadSceneOnPrevious>())
        {
            PageEventsManager.currentPage.gameObject.GetComponent <LoadSceneOnPrevious>().Load();
            return;
        }

        if (!moving && visitedPages.Count > 0)
        {
            var target = visitedPages.Pop();

            while (target == null && visitedPages.Count > 0)
            {
                target = visitedPages.Pop();
            }

            if (target != null)
            {
                var page = target.gameObject;
                processingPreviousMove = true;
                PageEventsManager.DisableEvents();
                PageEventsManager.ForcePageDeparture();
                StartCoroutine(MovePivotToTarget(page));
            }
        }
    }
Exemple #2
0
    // Use this for initialization
    void Start()
    {
        instance = this;

        var pageRoot = GameObject.Find("Pages");

        if (pageRoot != null)
        {
            pages = pageRoot.GetComponentsInChildren <Page>();
        }
        pivot = GameObject.Find("Pivot");
    }
Exemple #3
0
    IEnumerator MovePivotToTarget(GameObject target)
    {
        PageEventsManager.busy = true;
        var steps = Mathf.Ceil(undoTransitionTime / Time.deltaTime);
        var pivot = PageEventsManager.pivot;

        if (pivot == null)
        {
            pivot = GameObject.Find("Pivot");
        }
        var org_pos = pivot.transform.position;
        var org_rot = pivot.transform.localRotation;

        float targetFOV = Camera.main.fieldOfView;
        float lastFOV   = targetFOV;

        var overrides = target.GetComponent <PageOverrides>();

        if (overrides != null && overrides.OverrideCameraFOV)
        {
            targetFOV = overrides.CameraFOV;
        }

        moving = true;
        for (int i = 0; i <= steps; i++)
        {
            var lerpVal = curve.Evaluate(i / steps);
            pivot.transform.position      = Vector3.Lerp(org_pos, target.transform.position, lerpVal);
            pivot.transform.localRotation = Quaternion.Lerp(org_rot, target.transform.localRotation, lerpVal);
            Camera.main.fieldOfView       = Mathf.Lerp(lastFOV, targetFOV, i / steps);

            //bit of a hack
            if (i == steps - 5)
            {
                PageEventsManager.EnableEvents();
            }
            yield return(0);
        }
        moving = false;
        Camera.main.fieldOfView = targetFOV;

        processingPreviousMove = false;
        PageEventsManager.busy = false;

        yield return(0);
    }
Exemple #4
0
    public void GoToPage(int id)
    {
        var pageRoot = GameObject.Find("Pages");

        if (pageRoot != null)
        {
            var pages = pageRoot.GetComponentsInChildren <Page>();
            if (id < pages.Length)
            {
                PageEventsManager.DisableEvents();
                PageEventsManager.ForcePageDeparture();
                //manually push the last page to stack
                visitedPages.Push(PageEventsManager.currentPage);
                StartCoroutine(MovePivotToTarget(pages[id].gameObject));
            }
        }
    }