disable main cam when thirdperson

disable desktop camera while in thirdperson for performance
This commit is contained in:
NotAKidoS 2023-04-25 18:47:29 -05:00
parent 08d305f3a5
commit 5c0e8a2ff4
2 changed files with 19 additions and 19 deletions

View file

@ -14,8 +14,8 @@ namespace NAK.ThirdPerson;
internal static class CameraLogic internal static class CameraLogic
{ {
private static float _dist; private static float _dist;
private static GameObject _ourCam; private static Camera _ourCam;
private static GameObject _desktopCam; private static Camera _desktopCam;
private static CameraFovClone _cameraFovClone; private static CameraFovClone _cameraFovClone;
internal static CameraLocation CurrentLocation = CameraLocation.Default; internal static CameraLocation CurrentLocation = CameraLocation.Default;
@ -35,7 +35,8 @@ internal static class CameraLogic
set set
{ {
_state = value; _state = value;
_ourCam.SetActive(_state); _desktopCam.enabled = !_state;
_ourCam.gameObject.SetActive(_state);
} }
} }
@ -47,13 +48,12 @@ internal static class CameraLogic
{ {
yield return new WaitUntil(() => PlayerSetup.Instance); yield return new WaitUntil(() => PlayerSetup.Instance);
_ourCam = new GameObject("ThirdPersonCameraObj") { }; _ourCam = new GameObject("ThirdPersonCameraObj", typeof(Camera)).GetComponent<Camera>();
_ourCam.AddComponent<Camera>();
_cameraFovClone = _ourCam.AddComponent<CameraFovClone>(); _cameraFovClone = _ourCam.gameObject.AddComponent<CameraFovClone>();
_desktopCam = PlayerSetup.Instance.desktopCamera; _desktopCam = PlayerSetup.Instance.desktopCamera.GetComponent<Camera>();
_cameraFovClone.targetCamera = _desktopCam.GetComponent<Camera>(); _cameraFovClone.targetCamera = _desktopCam;
_ourCam.transform.SetParent(_desktopCam.transform); _ourCam.transform.SetParent(_desktopCam.transform);
@ -67,24 +67,24 @@ internal static class CameraLogic
internal static void CopyFromPlayerCam() internal static void CopyFromPlayerCam()
{ {
Camera ourCamComponent = _ourCam.GetComponent<Camera>(); Camera ourCamComponent = _ourCam.GetComponent<Camera>();
Camera playerCamComponent = _desktopCam.GetComponent<Camera>(); Camera playerCamComponent = PlayerSetup.Instance.GetActiveCamera().GetComponent<Camera>();
if (ourCamComponent == null || playerCamComponent == null) return; if (ourCamComponent == null || playerCamComponent == null) return;
ThirdPerson.Logger.Msg("Copying active camera settings & components."); ThirdPerson.Logger.Msg("Copying active camera settings & components.");
//steal basic settings // Copy basic settings
ourCamComponent.farClipPlane = playerCamComponent.farClipPlane; ourCamComponent.farClipPlane = playerCamComponent.farClipPlane;
ourCamComponent.nearClipPlane = playerCamComponent.nearClipPlane; ourCamComponent.nearClipPlane = playerCamComponent.nearClipPlane;
ourCamComponent.cullingMask = playerCamComponent.cullingMask; ourCamComponent.cullingMask = playerCamComponent.cullingMask;
ourCamComponent.depthTextureMode = playerCamComponent.depthTextureMode; ourCamComponent.depthTextureMode = playerCamComponent.depthTextureMode;
//steal post processing if added // Copy post processing if added
PostProcessLayer ppLayerPlayerCam = playerCamComponent.GetComponent<PostProcessLayer>(); PostProcessLayer ppLayerPlayerCam = playerCamComponent.GetComponent<PostProcessLayer>();
PostProcessLayer ppLayerThirdPerson = ourCamComponent.AddComponentIfMissing<PostProcessLayer>(); PostProcessLayer ppLayerThirdPerson = ourCamComponent.AddComponentIfMissing<PostProcessLayer>();
if (ppLayerPlayerCam != null && ppLayerThirdPerson != null) if (ppLayerPlayerCam != null && ppLayerThirdPerson != null)
{ {
ppLayerThirdPerson.enabled = ppLayerPlayerCam.enabled; ppLayerThirdPerson.enabled = ppLayerPlayerCam.enabled;
ppLayerThirdPerson.volumeLayer = ppLayerPlayerCam.volumeLayer; ppLayerThirdPerson.volumeLayer = ppLayerPlayerCam.volumeLayer;
//need to copy these via reflection, otherwise post processing will error // Copy these via reflection, otherwise post processing will error
if (!_setupPostProcessing) if (!_setupPostProcessing)
{ {
_setupPostProcessing = true; _setupPostProcessing = true;
@ -95,7 +95,7 @@ internal static class CameraLogic
} }
} }
//what even is this aura camera stuff // Copy Aura camera settings
AuraCamera auraPlayerCam = playerCamComponent.GetComponent<AuraCamera>(); AuraCamera auraPlayerCam = playerCamComponent.GetComponent<AuraCamera>();
AuraCamera auraThirdPerson = ourCamComponent.AddComponentIfMissing<AuraCamera>(); AuraCamera auraThirdPerson = ourCamComponent.AddComponentIfMissing<AuraCamera>();
if (auraPlayerCam != null && auraThirdPerson != null) if (auraPlayerCam != null && auraThirdPerson != null)
@ -108,7 +108,7 @@ internal static class CameraLogic
auraThirdPerson.enabled = false; auraThirdPerson.enabled = false;
} }
//flare layer thing? the sun :_:_:_:_:_: // Copy Flare layer settings
FlareLayer flarePlayerCam = playerCamComponent.GetComponent<FlareLayer>(); FlareLayer flarePlayerCam = playerCamComponent.GetComponent<FlareLayer>();
FlareLayer flareThirdPerson = ourCamComponent.AddComponentIfMissing<FlareLayer>(); FlareLayer flareThirdPerson = ourCamComponent.AddComponentIfMissing<FlareLayer>();
if (flarePlayerCam != null && flareThirdPerson != null) if (flarePlayerCam != null && flareThirdPerson != null)
@ -120,7 +120,7 @@ internal static class CameraLogic
flareThirdPerson.enabled = false; flareThirdPerson.enabled = false;
} }
//and now what the fuck is fog scattering // Copy Azure Fog Scattering settings
AzureFogScattering azureFogPlayerCam = playerCamComponent.GetComponent<AzureFogScattering>(); AzureFogScattering azureFogPlayerCam = playerCamComponent.GetComponent<AzureFogScattering>();
AzureFogScattering azureFogThirdPerson = ourCamComponent.AddComponentIfMissing<AzureFogScattering>(); AzureFogScattering azureFogThirdPerson = ourCamComponent.AddComponentIfMissing<AzureFogScattering>();
if (azureFogPlayerCam != null && azureFogThirdPerson != null) if (azureFogPlayerCam != null && azureFogThirdPerson != null)
@ -132,7 +132,7 @@ internal static class CameraLogic
Object.Destroy(ourCamComponent.GetComponent<AzureFogScattering>()); Object.Destroy(ourCamComponent.GetComponent<AzureFogScattering>());
} }
//why is there so many thingsssssssss // Copy Beautify settings
Beautify beautifyPlayerCam = playerCamComponent.GetComponent<Beautify>(); Beautify beautifyPlayerCam = playerCamComponent.GetComponent<Beautify>();
Beautify beautifyThirdPerson = ourCamComponent.AddComponentIfMissing<Beautify>(); Beautify beautifyThirdPerson = ourCamComponent.AddComponentIfMissing<Beautify>();
if (beautifyPlayerCam != null && beautifyThirdPerson != null) if (beautifyPlayerCam != null && beautifyThirdPerson != null)

View file

@ -7,7 +7,7 @@
"loaderversion": "0.5.7", "loaderversion": "0.5.7",
"modtype": "Mod", "modtype": "Mod",
"author": "Davi & NotAKidoS", "author": "Davi & NotAKidoS",
"description": "Allows you to go into third person view by pressing Ctrl + T to toggle and Ctrl + Y to change the mode", "description": "Allows you to go into third person view by pressing Ctrl + T to toggle and Ctrl + Y to cycle modes.",
"searchtags": [ "searchtags": [
"third person view", "third person view",
"3rd person", "3rd person",
@ -15,8 +15,8 @@
], ],
"requirements": [], "requirements": [],
"downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r2/ThirdPerson.dll", "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r2/ThirdPerson.dll",
"sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/", "sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/ThirdPerson",
"changelog": "- Made thirdperson Desktop only.\n- Copy postprocessing settings on world start.\n- Added CameraFovClone component to copy zoom from desktop camera.\n- Removed logic that disabled thirdperson when opening a menu, as Game UI renders on top anyways.", "changelog": "- Made thirdperson Desktop only.\n- Copy postprocessing settings on world start.\n- Added CameraFovClone component to copy zoom from desktop camera.\n- Removed logic that disabled thirdperson when opening a menu, as Game UI renders on top anyways.\n- Prevent thirdperson zooming while in Menus or UnityExplorer.\n- Inverted thirdperson zoom direction when in Front View.",
"embedcolor": "F61961" "embedcolor": "F61961"
} }
] ]