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(); }