Example #1
0
    void Update()
    {
        if (mLoop && pageSize > 0 && pageCount >= 2)
        {
            UIPageController PageControl = target.gameObject.GetComponent <UIPageController>();
            GameObject[]     pages       = PageControl.GetAllPages();
            float            pageY       = pages[0].transform.localPosition.y;
            float            pageZ       = pages[0].transform.localPosition.z;

            pages[0].transform.localPosition             = new Vector3(0, pageY, pageZ);
            pages[pageCount - 1].transform.localPosition = new Vector3(pageSize * (pageCount - 1), pageY, pageZ);

            Vector3 localPostion = target.transform.localPosition;

            if ((localPostion.x < pageSize) && (localPostion.x > 0))
            {
                pages[pageCount - 1].transform.localPosition = new Vector3(-pageSize, pageY, pageZ);
            }


            float fPageToalSize = -pageSize * (pageCount - 1);

            if (localPostion.x <= fPageToalSize)
            {
                pages[0].transform.localPosition = new Vector3(pageSize * pageCount, pageY, pageZ);
            }
        }
    }
Example #2
0
    protected virtual void OnPress(bool pressed)
    {
        UIPageController PageControl = target.gameObject.GetComponent <UIPageController>();

        GameObject[] pages = PageControl.GetAllPages();
        float        pageY = pages[0].transform.localPosition.y;
        float        pageZ = pages[0].transform.localPosition.z;

        if (mLoop)
        {
            pages[0].transform.localPosition  = new Vector3(0, pageY, pageZ);
            pages[11].transform.localPosition = new Vector3(pageSize * (pageCount - 1), pageY, pageZ);
        }

        if (enabled && gameObject.activeSelf && target != null && pageSize > 0 && pageCount >= 2)
        {
            if (pressed)
            {
                //sendOpenAllPage ();
                stopTarget();
                // Remember the hit position
                mLastPos          = UICamera.lastHit.point;
                pressLastTime     = Time.timeSinceLevelLoad;
                lastLocalPostionX = target.transform.localPosition.x;
                if (pageCount > 4)
                {
                    int currentPage = (int)Mathf.Abs(lastLocalPostionX - startPageX) / pageSize;
                    target.SendMessage("OpenNextPage", currentPage, SendMessageOptions.DontRequireReceiver);
                }
                else
                {
                    sendOpenAllPage();
                }
                // Create the plane to drag along
                Transform trans = UICamera.lastCamera.transform;
                mPlane = new Plane(trans.rotation * Vector3.back, mLastPos);
            }
            else
            {
                Vector3 localPostion = target.transform.localPosition;
                int     dstPage      = 0;
                if (localPostion.x <= leftEdge)
                {
                    //Turn right
                    localPostion.x = leftEdge;
                    dstPage        = pageCount - 1;

                    if (mLoop)
                    {
                        float xTransSincePress = target.transform.localPosition.x - lastLocalPostionX;
                        float timeSincePress   = Time.timeSinceLevelLoad - pressLastTime;
                        float xSpeed           = xTransSincePress / timeSincePress;

                        if (Mathf.Abs(xSpeed) > 200)
                        {
                            float offX = target.transform.localPosition.x + pageSize * (pageCount - 1);
                            dstPage        = 0;
                            localPostion.x = getDestX(dstPage);

                            float y = target.transform.localPosition.y;
                            float z = target.transform.localPosition.z;
                            target.transform.localPosition = new Vector3(localPostion.x + pageSize + offX, y, z);

                            pages[pageCount - 1].transform.localPosition = new Vector3(-pageSize, pageY, pageZ);
                        }
                    }
                }
                else if (localPostion.x >= rightEdge)
                {
                    //Turn Left
                    localPostion.x = rightEdge;
                    dstPage        = 0;

                    if (mLoop)
                    {
                        float xTransSincePress = target.transform.localPosition.x - lastLocalPostionX;
                        float timeSincePress   = Time.timeSinceLevelLoad - pressLastTime;
                        float xSpeed           = xTransSincePress / timeSincePress;

                        if (Mathf.Abs(xSpeed) > 200)
                        {
                            float offX = target.transform.localPosition.x;
                            dstPage        = GetPageCount() - 1;
                            localPostion.x = getDestX(dstPage);

                            float y = target.transform.localPosition.y;
                            float z = target.transform.localPosition.z;
                            target.transform.localPosition = new Vector3(localPostion.x - pageSize + offX, y, z);

                            pages[0].transform.localPosition = new Vector3(pageSize * pageCount, pageY, pageZ);
                        }
                    }
                }
                else
                {
                    float xTransSincePress = localPostion.x - lastLocalPostionX;
                    float timeSincePress   = Time.timeSinceLevelLoad - pressLastTime;
                    float xSpeed           = xTransSincePress / timeSincePress;

                    float transX = (localPostion.x - startPageX) / pageSize;
                    if (Mathf.Abs(xSpeed) > 200)
                    {
                        if (xSpeed > 0)
                        {
                            transX = Mathf.Ceil(transX);
                        }
                        else
                        {
                            transX = Mathf.Floor(transX);
                        }
                        target.SendMessage("OpenNextPage", -Mathf.RoundToInt(transX), SendMessageOptions.DontRequireReceiver);
                    }
                    int turnPage = Mathf.RoundToInt(transX);
                    dstPage        = -turnPage;
                    localPostion.x = getDestX(dstPage);
                }
                sendPage(dstPage);
                moveTarget(localPostion);
            }
        }
    }