mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-02 14:29:25 +00:00
[ThirdPerson] Set camera cull mask instead of disabling
Least hacky fix to correct nameplate issue.
This commit is contained in:
parent
6f17010cae
commit
82eeced7cc
4 changed files with 10 additions and 18 deletions
|
@ -17,6 +17,7 @@ internal static class CameraLogic
|
||||||
private static float _scale = 1f;
|
private static float _scale = 1f;
|
||||||
private static Camera _ourCam;
|
private static Camera _ourCam;
|
||||||
private static Camera _desktopCam;
|
private static Camera _desktopCam;
|
||||||
|
private static int _desktopCamMask;
|
||||||
private static CameraFovClone _cameraFovClone;
|
private static CameraFovClone _cameraFovClone;
|
||||||
|
|
||||||
internal static CameraLocation CurrentLocation = CameraLocation.Default;
|
internal static CameraLocation CurrentLocation = CameraLocation.Default;
|
||||||
|
@ -36,14 +37,14 @@ internal static class CameraLogic
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_state = value;
|
_state = value;
|
||||||
_desktopCam.enabled = !_state;
|
_desktopCam.cullingMask = _state ? 0 : _desktopCamMask;
|
||||||
_ourCam.gameObject.SetActive(_state);
|
_ourCam.gameObject.SetActive(_state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool _setupPostProcessing;
|
static bool _setupPostProcessing;
|
||||||
private static readonly FieldInfo _ppResourcesFieldInfo = typeof(PostProcessLayer).GetField("m_Resources", BindingFlags.NonPublic | BindingFlags.Instance);
|
static readonly FieldInfo _ppResourcesFieldInfo = typeof(PostProcessLayer).GetField("m_Resources", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
private static readonly FieldInfo _ppOldResourcesFieldInfo = typeof(PostProcessLayer).GetField("m_OldResources", BindingFlags.NonPublic | BindingFlags.Instance);
|
static readonly FieldInfo _ppOldResourcesFieldInfo = typeof(PostProcessLayer).GetField("m_OldResources", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
|
|
||||||
internal static IEnumerator SetupCamera()
|
internal static IEnumerator SetupCamera()
|
||||||
{
|
{
|
||||||
|
@ -54,6 +55,7 @@ internal static class CameraLogic
|
||||||
_cameraFovClone = _ourCam.gameObject.AddComponent<CameraFovClone>();
|
_cameraFovClone = _ourCam.gameObject.AddComponent<CameraFovClone>();
|
||||||
|
|
||||||
_desktopCam = PlayerSetup.Instance.desktopCamera.GetComponent<Camera>();
|
_desktopCam = PlayerSetup.Instance.desktopCamera.GetComponent<Camera>();
|
||||||
|
_desktopCamMask = _desktopCam.cullingMask;
|
||||||
_cameraFovClone.targetCamera = _desktopCam;
|
_cameraFovClone.targetCamera = _desktopCam;
|
||||||
|
|
||||||
_ourCam.transform.SetParent(_desktopCam.transform);
|
_ourCam.transform.SetParent(_desktopCam.transform);
|
||||||
|
@ -178,7 +180,6 @@ internal static class CameraLogic
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ResetDist() => _dist = 0;
|
private static void ResetDist() => _dist = 0;
|
||||||
internal static void IncrementDist() { _dist += 0.25f; RelocateCam(CurrentLocation); }
|
internal static void ScrollDist(float sign) { _dist += sign * 0.25f; RelocateCam(CurrentLocation); }
|
||||||
internal static void DecrementDist() { _dist -= 0.25f; RelocateCam(CurrentLocation); }
|
|
||||||
internal static void AdjustScale(float height) { _scale = height; RelocateCam(CurrentLocation); }
|
internal static void AdjustScale(float height) { _scale = height; RelocateCam(CurrentLocation); }
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
using ABI.CCK.Components;
|
using ABI.CCK.Components;
|
||||||
using ABI_RC.Core.Player;
|
using ABI_RC.Core.Player;
|
||||||
using ABI_RC.Core.Util.Object_Behaviour;
|
|
||||||
using MelonLoader;
|
using MelonLoader;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using UnityEngine;
|
|
||||||
using static NAK.ThirdPerson.CameraLogic;
|
using static NAK.ThirdPerson.CameraLogic;
|
||||||
|
|
||||||
namespace NAK.ThirdPerson;
|
namespace NAK.ThirdPerson;
|
||||||
|
@ -24,16 +22,10 @@ internal static class Patches
|
||||||
typeof(PlayerSetup).GetMethod(nameof(PlayerSetup.SetupIKScaling), BindingFlags.NonPublic | BindingFlags.Instance),
|
typeof(PlayerSetup).GetMethod(nameof(PlayerSetup.SetupIKScaling), BindingFlags.NonPublic | BindingFlags.Instance),
|
||||||
postfix: typeof(Patches).GetMethod(nameof(OnScaleAdjusted), BindingFlags.NonPublic | BindingFlags.Static).ToNewHarmonyMethod()
|
postfix: typeof(Patches).GetMethod(nameof(OnScaleAdjusted), BindingFlags.NonPublic | BindingFlags.Static).ToNewHarmonyMethod()
|
||||||
);
|
);
|
||||||
harmony.Patch(
|
|
||||||
typeof(CameraFacingObject).GetMethod(nameof(CameraFacingObject.Start), BindingFlags.NonPublic | BindingFlags.Instance),
|
|
||||||
postfix: typeof(Patches).GetMethod(nameof(OnCameraFacingObjectStart), BindingFlags.NonPublic | BindingFlags.Static).ToNewHarmonyMethod()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Copy camera settings & postprocessing components
|
//Copy camera settings & postprocessing components
|
||||||
private static void OnWorldStart() => CopyPlayerCamValues();
|
private static void OnWorldStart() => 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(float height) => AdjustScale(height);
|
||||||
//Fix bug when in thirdperson and desktop camera is disabled for performance
|
|
||||||
private static void OnCameraFacingObjectStart(ref Camera ___m_Camera) { if (___m_Camera == null) ___m_Camera = PlayerSetup.Instance.GetActiveCamera().GetComponent<Camera>(); }
|
|
||||||
}
|
}
|
|
@ -20,7 +20,7 @@ using System.Reflection;
|
||||||
[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")]
|
[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")]
|
||||||
[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
|
[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
|
||||||
[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
|
[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
|
||||||
[assembly: MelonColor(ConsoleColor.DarkMagenta)]
|
[assembly: MelonColor(255, 139, 0, 139)]
|
||||||
|
|
||||||
namespace NAK.ThirdPerson.Properties;
|
namespace NAK.ThirdPerson.Properties;
|
||||||
internal static class AssemblyInfoParams
|
internal static class AssemblyInfoParams
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using MelonLoader;
|
using MelonLoader;
|
||||||
using System.Reflection;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using static NAK.ThirdPerson.CameraLogic;
|
using static NAK.ThirdPerson.CameraLogic;
|
||||||
|
|
||||||
|
@ -22,8 +21,8 @@ public class ThirdPerson : MelonMod
|
||||||
// Prevents scrolling while in Menus or UnityExplorer
|
// Prevents scrolling while in Menus or UnityExplorer
|
||||||
if (State && Cursor.lockState == CursorLockMode.Locked)
|
if (State && Cursor.lockState == CursorLockMode.Locked)
|
||||||
{
|
{
|
||||||
if (Input.GetAxis("Mouse ScrollWheel") > 0f) IncrementDist();
|
float scroll = Input.GetAxis("Mouse ScrollWheel");
|
||||||
else if (Input.GetAxis("Mouse ScrollWheel") < 0f) DecrementDist();
|
if (scroll != 0f) ScrollDist(Mathf.Sign(scroll));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Input.GetKey(KeyCode.LeftControl)) return;
|
if (!Input.GetKey(KeyCode.LeftControl)) return;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue