diff --git a/Assets/Portal/Runtime/PortalCamera.cs b/Assets/Portal/Runtime/PortalCamera.cs index 3304e01..e420eac 100644 --- a/Assets/Portal/Runtime/PortalCamera.cs +++ b/Assets/Portal/Runtime/PortalCamera.cs @@ -31,15 +31,11 @@ namespace EscapeRoomEngine.Portal.Runtime /// [SerializeField] public MeshRenderer screen; - private Player _player; private Camera _camera; private readonly Dictionary _textures = new(); private void Awake() { - // get player camera - _player = Player.Instance; - // get portal camera _camera = GetComponent(); } @@ -59,7 +55,7 @@ namespace EscapeRoomEngine.Portal.Runtime private void Render(ScriptableRenderContext scriptableRenderContext, Camera _) { // check whether the portal plane is visible from the player camera - var frustumPlanes = GeometryUtility.CalculateFrustumPlanes(_player.camera); + var frustumPlanes = GeometryUtility.CalculateFrustumPlanes(Player.Instance.camera); if (!GeometryUtility.TestPlanesAABB(frustumPlanes, portal.linkedPortal.portalCamera.screen.bounds)) // don't render this portal if it is not visible return; @@ -84,9 +80,9 @@ namespace EscapeRoomEngine.Portal.Runtime // position portal camera var m = portal.portalTransform.localToWorldMatrix * Portal.HalfRotation * portal.linkedPortal.portalTransform.worldToLocalMatrix * - _player.GetEye(eye).localToWorldMatrix; + Player.Instance.GetEye(eye).localToWorldMatrix; transform.SetPositionAndRotation(m.GetPosition(), m.rotation); - _camera.projectionMatrix = _player.camera.GetStereoProjectionMatrix(eye); + _camera.projectionMatrix = Player.Instance.camera.GetStereoProjectionMatrix(eye); // set camera clip plane to portal (otherwise the wall behind the portal would be rendered) // calculating the clip plane: https://computergraphics.stackexchange.com/a/1506