Beispiel #1
0
        void InitPVSMeshes()
        {
            m_PVSItemIDS.Clear();

            m_GlobalNodeId = 0;
            m_BoundsArray  = null;
            if (m_PVSMeshRoot != null)
            {
                MeshRenderer[] mss = m_PVSMeshRoot.GetComponentsInChildren <MeshRenderer> (true);
                if (mss != null)
                {
                    System.Array.Sort(mss, (MeshRenderer m1, MeshRenderer m2) => {
                        var p1   = m1.transform.position;
                        var p2   = m2.transform.position;
                        float vv = p1.z - p2.z;
                        if (Mathf.Abs(vv) > float.Epsilon)
                        {
                            if (p1.z < p2.z)
                            {
                                return(-1);
                            }
                            return(1);
                        }
                        vv = p1.x - p2.x;
                        if (Mathf.Abs(vv) > float.Epsilon)
                        {
                            if (p1.x < p2.x)
                            {
                                return(-1);
                            }
                            return(1);
                        }
                        return(0);
                    }
                                      );
                    m_BoundsArray = new PVSBounds[mss.Length];
                    for (int i = 0; i < mss.Length; ++i)
                    {
                        var       ms     = mss [i];
                        PVSBounds bounds = new PVSBounds();
                        var       b      = ms.bounds;
                        bounds.min        = ms.bounds.min;
                        bounds.max        = ms.bounds.max;
                        bounds.forward    = ms.transform.forward;
                        bounds.up         = ms.transform.up;
                        bounds.id         = GeneratorNodeId();
                        m_BoundsArray [i] = bounds;
                        m_PVSItemIDS.AddIDs(bounds.id, ms.transform);
                    }
                }
            }

            m_PVSItemIDS.m_BakerRoot = m_PVSMeshRoot;
        }