Compare commits

...

3 commits

Author SHA1 Message Date
NotAKidoS
c455d20f9c [ThirdPerson] update format.json 2025-07-15 21:13:55 -05:00
NotAKidoS
0cdef04a53 Create DepthCameraFix.cs 2025-07-15 21:02:05 -05:00
NotAKidoS
e96a0e164d [ThirdPerson] Fixed for Stable and Nightly, did some cleanup
- Adjusted the local player scaled event patch to work both on Stable and Nightly
2025-07-15 21:02:03 -05:00
5 changed files with 117 additions and 13 deletions

View file

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

View file

@ -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<CameraFovClone>();
_desktopCam = PlayerSetup.Instance.desktopCamera.GetComponent<Camera>();
_desktopCam = PlayerSetup.Instance.desktopCam;
_cameraFovClone.targetCamera = _desktopCam;
_thirdPersonCam.transform.SetParent(_desktopCam.transform);
_uiCam = _desktopCam.transform.Find("_UICamera").GetComponent<Camera>();
RelocateCam(CameraLocation.Default);
@ -66,15 +64,15 @@ internal static class CameraLogic
internal static void CopyPlayerCamValues()
{
Camera activePlayerCam = PlayerSetup.Instance.GetActiveCamera().GetComponent<Camera>();
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;
}

View file

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

View file

@ -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";
}

View file

@ -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"
}
]