diff --git a/.Deprecated/SuperAwesomeMod/DepthCameraFix.cs b/.Deprecated/SuperAwesomeMod/DepthCameraFix.cs new file mode 100644 index 0000000..933cfa6 --- /dev/null +++ b/.Deprecated/SuperAwesomeMod/DepthCameraFix.cs @@ -0,0 +1,106 @@ +namespace NAK.SuperAwesomeMod; + +using UnityEngine; +using UnityEngine.Rendering; + +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine; +using UnityEngine.Rendering; + +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine; +using UnityEngine.Rendering; + +[RequireComponent(typeof(Camera))] +public class DepthTextureFix : MonoBehaviour +{ + private Camera cam; + private CommandBuffer beforeCommandBuffer; + private CommandBuffer afterCommandBuffer; + + void Start() + { + cam = GetComponent(); + + // Ensure camera generates depth texture + cam.depthTextureMode |= DepthTextureMode.Depth; + + // Create command buffers + beforeCommandBuffer = new CommandBuffer(); + beforeCommandBuffer.name = "DepthTextureFix_Before"; + + afterCommandBuffer = new CommandBuffer(); + afterCommandBuffer.name = "DepthTextureFix_After"; + + // Add command buffers at the right events + cam.AddCommandBuffer(CameraEvent.BeforeDepthTexture, beforeCommandBuffer); + cam.AddCommandBuffer(CameraEvent.AfterDepthTexture, afterCommandBuffer); + } + + void OnPreRender() + { + // Set up command buffers each frame to handle dynamic changes + SetupCommandBuffers(); + } + + void SetupCommandBuffers() + { + // Get current camera viewport in pixels + Rect pixelRect = cam.pixelRect; + + // Before depth texture: override viewport to full screen + beforeCommandBuffer.Clear(); + beforeCommandBuffer.SetViewport(new Rect(0, 0, Screen.width, Screen.height)); + + // After depth texture: restore original viewport + afterCommandBuffer.Clear(); + afterCommandBuffer.SetViewport(pixelRect); + } + + void OnDestroy() + { + // Clean up + if (cam != null) + { + if (beforeCommandBuffer != null) + { + cam.RemoveCommandBuffer(CameraEvent.BeforeDepthTexture, beforeCommandBuffer); + beforeCommandBuffer.Dispose(); + } + + if (afterCommandBuffer != null) + { + cam.RemoveCommandBuffer(CameraEvent.AfterDepthTexture, afterCommandBuffer); + afterCommandBuffer.Dispose(); + } + } + } + + void OnDisable() + { + if (cam != null) + { + if (beforeCommandBuffer != null) + cam.RemoveCommandBuffer(CameraEvent.BeforeDepthTexture, beforeCommandBuffer); + if (afterCommandBuffer != null) + cam.RemoveCommandBuffer(CameraEvent.AfterDepthTexture, afterCommandBuffer); + } + } + + void OnEnable() + { + if (cam != null && beforeCommandBuffer != null && afterCommandBuffer != null) + { + cam.AddCommandBuffer(CameraEvent.BeforeDepthTexture, beforeCommandBuffer); + cam.AddCommandBuffer(CameraEvent.AfterDepthTexture, afterCommandBuffer); + } + } +} \ No newline at end of file diff --git a/ThirdPerson/CameraLogic.cs b/ThirdPerson/CameraLogic.cs index f1b83ef..a0ef565 100644 --- a/ThirdPerson/CameraLogic.cs +++ b/ThirdPerson/CameraLogic.cs @@ -13,7 +13,6 @@ internal static class CameraLogic private static float _dist; private static float _scale = 1f; private static Camera _thirdPersonCam; - private static Camera _uiCam; private static Camera _desktopCam; private static int _storedCamMask; private static CameraFovClone _cameraFovClone; @@ -51,11 +50,10 @@ internal static class CameraLogic _cameraFovClone = _thirdPersonCam.gameObject.AddComponent(); - _desktopCam = PlayerSetup.Instance.desktopCamera.GetComponent(); + _desktopCam = PlayerSetup.Instance.desktopCam; _cameraFovClone.targetCamera = _desktopCam; _thirdPersonCam.transform.SetParent(_desktopCam.transform); - _uiCam = _desktopCam.transform.Find("_UICamera").GetComponent(); RelocateCam(CameraLocation.Default); @@ -66,15 +64,15 @@ internal static class CameraLogic internal static void CopyPlayerCamValues() { - Camera activePlayerCam = PlayerSetup.Instance.GetActiveCamera().GetComponent(); - if (_thirdPersonCam == null || activePlayerCam == null) + Camera activePlayerCam = PlayerSetup.Instance.activeCam; + if (!_thirdPersonCam || !activePlayerCam) return; ThirdPerson.Logger.Msg("Copying active camera settings & components."); - CVRTools.CopyToDestCam(activePlayerCam, _thirdPersonCam, true); + CVRTools.CopyToDestCam(activePlayerCam, _thirdPersonCam); // Remove PlayerClone - _thirdPersonCam.cullingMask &= ~(1 << CVRLayers.PlayerClone); + // _thirdPersonCam.cullingMask &= ~(1 << CVRLayers.PlayerClone); if (!CheckIsRestricted()) return; @@ -116,9 +114,9 @@ internal static class CameraLogic private static void ResetDist() => _dist = 0; internal static void ScrollDist(float sign) { _dist += sign * 0.25f; RelocateCam(CurrentLocation); } - internal static void AdjustScale(float height) { _scale = height; RelocateCam(CurrentLocation); } + internal static void AdjustScale(float avatarScaleRelation) { _scale = avatarScaleRelation; RelocateCam(CurrentLocation); } internal static void CheckVRMode() { if (MetaPort.Instance.isUsingVr) State = false; } private static bool CheckIsRestricted() - => CVRWorld.Instance != null && !CVRWorld.Instance.enableZoom; + => CVRWorld.Instance && !CVRWorld.Instance.enableZoom; } \ No newline at end of file diff --git a/ThirdPerson/Patches.cs b/ThirdPerson/Patches.cs index 131b45b..02a60db 100644 --- a/ThirdPerson/Patches.cs +++ b/ThirdPerson/Patches.cs @@ -32,6 +32,6 @@ internal static class Patches //Copy camera settings & postprocessing components private static void OnPostWorldStart() => CopyPlayerCamValues(); //Adjust camera distance with height as modifier - private static void OnScaleAdjusted(float height) => AdjustScale(height); + private static void OnScaleAdjusted(ref float ____avatarScaleRelation) => AdjustScale(____avatarScaleRelation); private static void OnConfigureHudAffinity() => CheckVRMode(); } \ No newline at end of file diff --git a/ThirdPerson/Properties/AssemblyInfo.cs b/ThirdPerson/Properties/AssemblyInfo.cs index c2c7701..e6254b3 100644 --- a/ThirdPerson/Properties/AssemblyInfo.cs +++ b/ThirdPerson/Properties/AssemblyInfo.cs @@ -27,6 +27,6 @@ using System.Reflection; namespace NAK.ThirdPerson.Properties; internal static class AssemblyInfoParams { - public const string Version = "1.1.1"; + public const string Version = "1.1.2"; public const string Author = "Davi & NotAKidoS"; } \ No newline at end of file diff --git a/ThirdPerson/format.json b/ThirdPerson/format.json index 4cdca3e..52d5bc8 100644 --- a/ThirdPerson/format.json +++ b/ThirdPerson/format.json @@ -2,7 +2,7 @@ { "_id": 16, "name": "ThirdPerson", - "modversion": "1.1.1", + "modversion": "1.1.2", "gameversion": "2025r179", "loaderversion": "0.6.1", "modtype": "Mod", @@ -16,7 +16,7 @@ "requirements": [], "downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/ThirdPerson.dll", "sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/ThirdPerson", - "changelog": "- Recompiled for 2025r179", + "changelog": "- Adjusted the local player scaled event patch to work both on Stable and Nightly (r179 & r180)", "embedcolor": "#F61961" } ] \ No newline at end of file