mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-04 23:39:22 +00:00
Compare commits
3 commits
bf877124c1
...
c455d20f9c
Author | SHA1 | Date | |
---|---|---|---|
|
c455d20f9c | ||
|
0cdef04a53 | ||
|
e96a0e164d |
5 changed files with 117 additions and 13 deletions
106
.Deprecated/SuperAwesomeMod/DepthCameraFix.cs
Normal file
106
.Deprecated/SuperAwesomeMod/DepthCameraFix.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,7 +13,6 @@ internal static class CameraLogic
|
||||||
private static float _dist;
|
private static float _dist;
|
||||||
private static float _scale = 1f;
|
private static float _scale = 1f;
|
||||||
private static Camera _thirdPersonCam;
|
private static Camera _thirdPersonCam;
|
||||||
private static Camera _uiCam;
|
|
||||||
private static Camera _desktopCam;
|
private static Camera _desktopCam;
|
||||||
private static int _storedCamMask;
|
private static int _storedCamMask;
|
||||||
private static CameraFovClone _cameraFovClone;
|
private static CameraFovClone _cameraFovClone;
|
||||||
|
@ -51,11 +50,10 @@ internal static class CameraLogic
|
||||||
|
|
||||||
_cameraFovClone = _thirdPersonCam.gameObject.AddComponent<CameraFovClone>();
|
_cameraFovClone = _thirdPersonCam.gameObject.AddComponent<CameraFovClone>();
|
||||||
|
|
||||||
_desktopCam = PlayerSetup.Instance.desktopCamera.GetComponent<Camera>();
|
_desktopCam = PlayerSetup.Instance.desktopCam;
|
||||||
_cameraFovClone.targetCamera = _desktopCam;
|
_cameraFovClone.targetCamera = _desktopCam;
|
||||||
|
|
||||||
_thirdPersonCam.transform.SetParent(_desktopCam.transform);
|
_thirdPersonCam.transform.SetParent(_desktopCam.transform);
|
||||||
_uiCam = _desktopCam.transform.Find("_UICamera").GetComponent<Camera>();
|
|
||||||
|
|
||||||
RelocateCam(CameraLocation.Default);
|
RelocateCam(CameraLocation.Default);
|
||||||
|
|
||||||
|
@ -66,15 +64,15 @@ internal static class CameraLogic
|
||||||
|
|
||||||
internal static void CopyPlayerCamValues()
|
internal static void CopyPlayerCamValues()
|
||||||
{
|
{
|
||||||
Camera activePlayerCam = PlayerSetup.Instance.GetActiveCamera().GetComponent<Camera>();
|
Camera activePlayerCam = PlayerSetup.Instance.activeCam;
|
||||||
if (_thirdPersonCam == null || activePlayerCam == null)
|
if (!_thirdPersonCam || !activePlayerCam)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ThirdPerson.Logger.Msg("Copying active camera settings & components.");
|
ThirdPerson.Logger.Msg("Copying active camera settings & components.");
|
||||||
CVRTools.CopyToDestCam(activePlayerCam, _thirdPersonCam, true);
|
CVRTools.CopyToDestCam(activePlayerCam, _thirdPersonCam);
|
||||||
|
|
||||||
// Remove PlayerClone
|
// Remove PlayerClone
|
||||||
_thirdPersonCam.cullingMask &= ~(1 << CVRLayers.PlayerClone);
|
// _thirdPersonCam.cullingMask &= ~(1 << CVRLayers.PlayerClone);
|
||||||
|
|
||||||
if (!CheckIsRestricted())
|
if (!CheckIsRestricted())
|
||||||
return;
|
return;
|
||||||
|
@ -116,9 +114,9 @@ internal static class CameraLogic
|
||||||
|
|
||||||
private static void ResetDist() => _dist = 0;
|
private static void ResetDist() => _dist = 0;
|
||||||
internal static void ScrollDist(float sign) { _dist += sign * 0.25f; RelocateCam(CurrentLocation); }
|
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; }
|
internal static void CheckVRMode() { if (MetaPort.Instance.isUsingVr) State = false; }
|
||||||
|
|
||||||
private static bool CheckIsRestricted()
|
private static bool CheckIsRestricted()
|
||||||
=> CVRWorld.Instance != null && !CVRWorld.Instance.enableZoom;
|
=> CVRWorld.Instance && !CVRWorld.Instance.enableZoom;
|
||||||
}
|
}
|
|
@ -32,6 +32,6 @@ internal static class Patches
|
||||||
//Copy camera settings & postprocessing components
|
//Copy camera settings & postprocessing components
|
||||||
private static void OnPostWorldStart() => CopyPlayerCamValues();
|
private static void OnPostWorldStart() => CopyPlayerCamValues();
|
||||||
//Adjust camera distance with height as modifier
|
//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();
|
private static void OnConfigureHudAffinity() => CheckVRMode();
|
||||||
}
|
}
|
|
@ -27,6 +27,6 @@ using System.Reflection;
|
||||||
namespace NAK.ThirdPerson.Properties;
|
namespace NAK.ThirdPerson.Properties;
|
||||||
internal static class AssemblyInfoParams
|
internal static class AssemblyInfoParams
|
||||||
{
|
{
|
||||||
public const string Version = "1.1.1";
|
public const string Version = "1.1.2";
|
||||||
public const string Author = "Davi & NotAKidoS";
|
public const string Author = "Davi & NotAKidoS";
|
||||||
}
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
"_id": 16,
|
"_id": 16,
|
||||||
"name": "ThirdPerson",
|
"name": "ThirdPerson",
|
||||||
"modversion": "1.1.1",
|
"modversion": "1.1.2",
|
||||||
"gameversion": "2025r179",
|
"gameversion": "2025r179",
|
||||||
"loaderversion": "0.6.1",
|
"loaderversion": "0.6.1",
|
||||||
"modtype": "Mod",
|
"modtype": "Mod",
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/ThirdPerson.dll",
|
"downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r46/ThirdPerson.dll",
|
||||||
"sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/ThirdPerson",
|
"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"
|
"embedcolor": "#F61961"
|
||||||
}
|
}
|
||||||
]
|
]
|
Loading…
Add table
Add a link
Reference in a new issue