public override bool Inspector()
    {
        MegaPageFlip mod = (MegaPageFlip)target;

        EditorGUIUtility.LookLikeControls();
        mod.turn  = EditorGUILayout.FloatField("Turn", mod.turn);
        mod.ap1   = EditorGUILayout.FloatField("Ap1", mod.ap1);
        mod.ap2   = EditorGUILayout.FloatField("Ap2", mod.ap2);
        mod.ap3   = EditorGUILayout.FloatField("Ap3", mod.ap3);
        mod.flipx = EditorGUILayout.Toggle("Flip X", mod.flipx);

        advanced = EditorGUILayout.Foldout(advanced, "Advanced");
        if (advanced)
        {
            mod.animT     = EditorGUILayout.Toggle("Anim T", mod.animT);
            mod.autoMode  = EditorGUILayout.Toggle("Auto Mode", mod.autoMode);
            mod.lockRho   = EditorGUILayout.Toggle("Lock Rho", mod.lockRho);
            mod.lockTheta = EditorGUILayout.Toggle("Lock Theta", mod.lockTheta);
            mod.timeStep  = EditorGUILayout.FloatField("TimeStep", mod.timeStep);
            mod.rho       = EditorGUILayout.FloatField("Rho", mod.rho);
            mod.theta     = EditorGUILayout.FloatField("Theta", mod.theta);
            mod.deltaT    = EditorGUILayout.FloatField("DeltaT", mod.deltaT);
            mod.kT        = EditorGUILayout.FloatField("kT", mod.kT);
        }
        return(false);
    }
Ejemplo n.º 2
0
        private void InitBook()
        {
            //------------------------------------------------------------------------
            //Awake
            pBookPosition = new GameObject("Book");
            pBookPosition.transform.localPosition = new Vector3(0, -1000, 0);

            //创建plane
            pPageTemplate = GameObject.CreatePrimitive(PrimitiveType.Plane);
            pPageTemplate.transform.localPosition = new Vector3(0, -2000, 0);

            pBookPage  = new GameObject[nPageNumber];
            pMaterials = new Material[pTexture2D.Length];
            pMaterial  = new Material[2];
            //------------------------------------------------------------------------
            //------------------------------------------------------------------------
            //------------------------------------------------------------------------

            for (int i = 0; i < pTexture2D.Length; i++)
            {
                Material mat = new Material(Shader.Find("Diffuse"));
                mat.mainTexture = (Texture2D)pTexture2D[i];
                pMaterials[i]   = mat;
            }


            for (int i = 0; i < nPageNumber; i++)
            {
                pBookPage[i]                  = (GameObject)Instantiate(pPageTemplate);
                pBookPage[i].name             = (i + 1).ToString(); //改名
                pBookPage[i].transform.parent = pBookPosition.transform;

                pMeshRender = pBookPage[i].GetComponent <MeshRenderer>();

                pMaterial[0] = pMaterials[2 * i];
                pMaterial[1] = pMaterials[2 * i + 1];

                pMeshRender.materials = pMaterial;

                pBookPage[i].transform.localPosition = new Vector3(0, -i * 0.01f, 0);

                pMegaModifyObjectScript = pBookPage[i].AddComponent <MegaModifyObject>();
                pMegaPageFlipScript     = pBookPage[i].AddComponent <MegaPageFlip>();
                pMegaMeshPageScript     = pBookPage[i].AddComponent <MegaMeshPage>();
                pMegaMeshPageScript.Rebuild();
            }
        }
Ejemplo n.º 3
0
        public override void ProcessEvent(float deltaTime)
        {
            //fNextPage
            if (nCurrentPage < nPageNumber - 1)
            {
                if (nCurrentPage >= 0)
                {
                    pMegaPageFlipScript = pBookPage[nCurrentPage].GetComponent <MegaPageFlip>();

                    pMegaPageFlipScript.turn += fTurnSpeed * Time.deltaTime;
                }

                if (deltaTime >= fNextPage)
                {
                    nCurrentPage++;
                    fNextPage += fSaveNextPage;
                }
            }
        }
Ejemplo n.º 4
0
    void Update()
    {
        if (page1 == null || page2 == null || page3 == null)
        {
            return;
        }

        if (page1 != null && pf1 == null)
        {
            pf1 = page1.GetComponent <MegaPageFlip>();
        }

        if (mrpg1 == null)
        {
            mrpg1 = page1.GetComponent <MeshRenderer>();
        }

        if (page2 != null && pf2 == null)
        {
            pf2 = page2.GetComponent <MegaPageFlip>();
        }

        if (mrpg2 == null)
        {
            mrpg2 = page2.GetComponent <MeshRenderer>();
        }

        if (page3 != null && pf3 == null)
        {
            pf3 = page3.GetComponent <MegaPageFlip>();
        }

        if (mrpg3 == null)
        {
            mrpg3 = page3.GetComponent <MeshRenderer>();
        }

        if (pf1 == null || pf2 == null || pf3 == null || front == null || back == null)
        {
            return;
        }

        int pagecount = (pages.Count / 2) + 2;

        if (bookalpha < 0.0f)
        {
            bookalpha = 0.0f;
        }

        if (bookalpha > 100.0f)
        {
            bookalpha = 100.0f;
        }

        if (front.transform.childCount > 0)
        {
            Transform child = front.transform.GetChild(0);
            if (child != null)
            {
                Vector3 off = Vector3.zero;
                off.y = covergap * 0.5f;
                child.localPosition = off;
            }
        }

        if (back.transform.childCount > 0)
        {
            Transform child = back.transform.GetChild(0);
            if (child != null)
            {
                Vector3 off = Vector3.zero;
                off.y = -covergap * 0.5f;
                child.localPosition = off;
            }
        }

        float alpha = bookalpha / 100.0f;

        int page = (int)((float)pagecount * alpha);

        float step = 1.0f / (float)pagecount;

        float turn = (alpha % step) / step;

        Vector3 ang = Vector3.zero;

        // Front cover
        if (page == 0)
        {
            ang.z = 180.0f * turn;
        }
        else
        {
            ang.z = 180.0f;
        }

        front.transform.localRotation = Quaternion.Euler(ang);

        // Back cover
        if (page >= pagecount - 1)
        {
            ang.z = 180.0f * turn;
        }
        else
        {
            ang.z = 0.0f;
        }

        back.transform.localRotation = Quaternion.Euler(ang);

        if (pagecount < 3)
        {
            return;
        }

        // Set PageFlip values
        if (page == 1)
        {
            pf1.turn = turn * 100.0f;
            pf2.turn = 0.0f;
            pf3.turn = 0.0f;
        }
        else
        {
            if (page == pagecount - 2)
            {
                pf1.turn = 100.0f;
                pf2.turn = 100.0f;
                pf3.turn = turn * 100.0f;
            }
            else
            {
                if (page == 0)
                {
                    pf1.turn = 0.0f;
                    pf2.turn = 0.0f;
                    pf3.turn = 0.0f;
                }
                else
                {
                    if (page >= pagecount - 1)
                    {
                        pf1.turn = 100.0f;
                        pf2.turn = 100.0f;
                        pf3.turn = 100.0f;
                    }
                    else
                    {
                        pf1.turn = 100.0f;
                        pf2.turn = turn * 100.0f;
                        pf3.turn = 0.0f;
                    }
                }
            }
        }

        // Page offsets
        Vector3 poff = Vector3.zero;

        //float po = pagespace;	// * 2.0f;
        poff.y = Mathf.Lerp(pagespace, -pagespace, pf1.turn * 0.01f);
        page1.transform.localPosition = poff;

        poff.y = Mathf.Lerp(0.0f, 0.0f, pf2.turn * 0.01f);
        page2.transform.localPosition = poff;

        poff.y = Mathf.Lerp(-pagespace, pagespace, pf3.turn * 0.01f);
        page3.transform.localPosition = poff;

        // Page textures
        int pg = page - 2;

        if (pg < 0)
        {
            pg = 0;
        }

        pg *= 2;

        if (pg < pages.Count - 1)
        {
            SetPageTexture(mrpg1, 0, pages[pg]);
            SetPageTexture(mrpg1, 1, pages[pg + 1]);
        }

        if (pg < pages.Count - 3)
        {
            if (pg < pages.Count - 5)
            {
                SetPageTexture(mrpg2, 0, pages[pg + 2]);
                SetPageTexture(mrpg2, 1, pages[pg + 3]);
            }
        }

        if (pg < pages.Count - 5)
        {
            SetPageTexture(mrpg3, 0, pages[pg + 4]);
            SetPageTexture(mrpg3, 1, pages[pg + 5]);
        }
    }
Ejemplo n.º 5
0
    void Update()
    {
        if ( page1 == null || page2 == null || page3 == null )
            return;

        if ( page1 != null && pf1 == null )
            pf1 = page1.GetComponent<MegaPageFlip>();

        if ( mrpg1 == null )
            mrpg1 = page1.GetComponent<MeshRenderer>();

        if ( page2 != null && pf2 == null )
            pf2 = page2.GetComponent<MegaPageFlip>();

        if ( mrpg2 == null )
            mrpg2 = page2.GetComponent<MeshRenderer>();

        if ( page3 != null && pf3 == null )
            pf3 = page3.GetComponent<MegaPageFlip>();

        if ( mrpg3 == null )
            mrpg3 = page3.GetComponent<MeshRenderer>();

        if ( pf1 == null || pf2 == null || pf3 == null || front == null || back == null )
            return;

        int pagecount = (pages.Count / 2) + 2;

        if ( bookalpha < 0.0f )
            bookalpha = 0.0f;

        if ( bookalpha > 100.0f )
            bookalpha = 100.0f;

        if ( front.transform.GetChildCount() > 0 )
        {
            Transform child = front.transform.GetChild(0);
            if ( child != null )
            {
                Vector3 off = Vector3.zero;
                off.y = covergap * 0.5f;
                child.localPosition = off;
            }
        }

        if ( back.transform.GetChildCount() > 0 )
        {
            Transform child = back.transform.GetChild(0);
            if ( child != null )
            {
                Vector3 off = Vector3.zero;
                off.y = -covergap * 0.5f;
                child.localPosition = off;
            }
        }

        float alpha = bookalpha / 100.0f;

        int page = (int)((float)pagecount * alpha);

        float step = 1.0f / (float)pagecount;

        float turn = (alpha % step) / step;

        Vector3 ang = Vector3.zero;

        // Front cover
        if ( page == 0 )
            ang.z = 180.0f * turn;
        else
            ang.z = 180.0f;

        front.transform.localRotation = Quaternion.Euler(ang);

        // Back cover
        if ( page >= pagecount - 1 )
            ang.z = 180.0f * turn;
        else
            ang.z = 0.0f;

        back.transform.localRotation = Quaternion.Euler(ang);

        if ( pagecount < 3 )
            return;

        // Set PageFlip values
        if ( page == 1 )
        {
            pf1.turn = turn * 100.0f;
            pf2.turn = 0.0f;
            pf3.turn = 0.0f;
        }
        else
        {
            if ( page == pagecount - 2 )
            {
                pf1.turn = 100.0f;
                pf2.turn = 100.0f;
                pf3.turn = turn * 100.0f;
            }
            else
            {
                if ( page == 0 )
                {
                    pf1.turn = 0.0f;
                    pf2.turn = 0.0f;
                    pf3.turn = 0.0f;
                }
                else
                {
                    if ( page >= pagecount - 1 )
                    {
                        pf1.turn = 100.0f;
                        pf2.turn = 100.0f;
                        pf3.turn = 100.0f;
                    }
                    else
                    {
                        pf1.turn = 100.0f;
                        pf2.turn = turn * 100.0f;
                        pf3.turn = 0.0f;
                    }
                }
            }
        }

        // Page offsets
        Vector3 poff = Vector3.zero;
        //float po = pagespace;	// * 2.0f;
        poff.y = Mathf.Lerp(pagespace, -pagespace, pf1.turn * 0.01f);
        page1.transform.localPosition = poff;

        poff.y = Mathf.Lerp(0.0f, 0.0f, pf2.turn * 0.01f);
        page2.transform.localPosition = poff;

        poff.y = Mathf.Lerp(-pagespace, pagespace, pf3.turn * 0.01f);
        page3.transform.localPosition = poff;

        // Page textures
        int pg = page - 2;
        if ( pg < 0 )
            pg = 0;

        pg *= 2;

        if ( pg < pages.Count - 1 )
        {
            SetPageTexture(mrpg1, 0, pages[pg]);
            SetPageTexture(mrpg1, 1, pages[pg + 1]);
        }

        if ( pg < pages.Count - 3 )
        {
            if ( pg < pages.Count - 5 )
            {
                SetPageTexture(mrpg2, 0, pages[pg + 2]);
                SetPageTexture(mrpg2, 1, pages[pg + 3]);
            }
        }

        if ( pg < pages.Count - 5 )
        {
            SetPageTexture(mrpg3, 0, pages[pg + 4]);
            SetPageTexture(mrpg3, 1, pages[pg + 5]);
        }
    }