Beispiel #1
0
        private void Update()
        {
            if (raySource == null)
            {
                return;
            }

            if (m_OccluderProxies == null || m_OccluderProxies.Length == 0)
            {
                var occluders = PortalPrepareUtil.GetOccluderData();
                m_OccluderProxies = PortalPrepareUtil.GetOccluderProxies(occluders);
                foreach (Collider col in m_OccluderProxies)
                {
                    col.transform.SetParent(transform);
                }
            }

            var staticRenderers           = PortalPrepareUtil.GetStaticOccludeeRenderers();
            List <MeshRenderer> renderers = new List <MeshRenderer>();

            for (int i = 0; i < staticRenderers.Length; i++)
            {
                if (PortalVisibilityUtil.CheckAABBIntersection(raySource.position, raySource.forward, staticRenderers[i].bounds))
                {
                    Vector3 hitPosition;
                    if (PortalVisibilityUtil.CheckOcclusion(m_OccluderProxies, staticRenderers[i], raySource.position, raySource.forward, out hitPosition))
                    {
                        renderers.AddIfUnique(staticRenderers[i]);
                    }
                }
            }
            m_PassedRenderers = renderers.ToArray();
        }
 public void OnClickBake()
 {
     m_Completion            = 0.0f;
     m_BakeState             = BakeState.Occluders;
     m_SerializableOccluders = PortalPrepareUtil.GetOccluderData();
     m_BakeState             = BakeState.Active;
     m_Completion            = 1.0f;
     UnityEditor.SceneView.RepaintAll();
     UnityEditor.SceneManagement.EditorSceneManager.MarkAllScenesDirty();
 }