mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-02 14:29:25 +00:00
[ThirdPerson] Fixes for r173
This commit is contained in:
parent
fee053bb64
commit
0d4e6e6331
4 changed files with 8 additions and 103 deletions
|
@ -6,6 +6,7 @@ using Aura2API;
|
|||
using BeautifyEffect;
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using ABI_RC.Core;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AzureSky;
|
||||
using UnityEngine.Rendering.PostProcessing;
|
||||
|
@ -68,110 +69,16 @@ internal static class CameraLogic
|
|||
ThirdPerson.Logger.Msg("Finished setting up third person camera.");
|
||||
}
|
||||
|
||||
internal static void ResetPlayerCamValues()
|
||||
{
|
||||
Camera activePlayerCam = PlayerSetup.Instance.GetActiveCamera().GetComponent<Camera>();
|
||||
if (activePlayerCam == null)
|
||||
return;
|
||||
|
||||
ThirdPerson.Logger.Msg("Resetting active camera culling mask.");
|
||||
|
||||
// CopyRefCamValues does not reset to default before copying! Game issue, SetDefaultCamValues is fine.
|
||||
activePlayerCam.cullingMask = MetaPort.Instance.defaultCameraMask;
|
||||
}
|
||||
|
||||
internal static void CopyPlayerCamValues()
|
||||
{
|
||||
Camera ourCamComponent = _thirdpersonCam.GetComponent<Camera>();
|
||||
Camera ourCamComponent = _thirdpersonCam;
|
||||
Camera activePlayerCam = PlayerSetup.Instance.GetActiveCamera().GetComponent<Camera>();
|
||||
if (ourCamComponent == null || activePlayerCam == null)
|
||||
return;
|
||||
|
||||
ThirdPerson.Logger.Msg("Copying active camera settings & components.");
|
||||
|
||||
// Copy basic settings
|
||||
ourCamComponent.farClipPlane = activePlayerCam.farClipPlane;
|
||||
ourCamComponent.nearClipPlane = activePlayerCam.nearClipPlane;
|
||||
ourCamComponent.depthTextureMode = activePlayerCam.depthTextureMode;
|
||||
|
||||
// Copy and store the active camera mask
|
||||
var cullingMask= _storedCamMask = activePlayerCam.cullingMask;
|
||||
cullingMask &= -32769;
|
||||
cullingMask |= 256;
|
||||
cullingMask |= 512;
|
||||
cullingMask |= 32;
|
||||
cullingMask &= -4097;
|
||||
cullingMask |= 1024;
|
||||
cullingMask |= 8192;
|
||||
ourCamComponent.cullingMask = cullingMask;
|
||||
|
||||
// Copy post processing if added
|
||||
PostProcessLayer ppLayerPlayerCam = activePlayerCam.GetComponent<PostProcessLayer>();
|
||||
PostProcessLayer ppLayerThirdPerson = ourCamComponent.AddComponentIfMissing<PostProcessLayer>();
|
||||
if (ppLayerPlayerCam != null && ppLayerThirdPerson != null)
|
||||
{
|
||||
ppLayerThirdPerson.enabled = ppLayerPlayerCam.enabled;
|
||||
ppLayerThirdPerson.volumeLayer = ppLayerPlayerCam.volumeLayer;
|
||||
// Copy these via reflection, otherwise post processing will error
|
||||
if (!_setupPostProcessing)
|
||||
{
|
||||
_setupPostProcessing = true;
|
||||
PostProcessResources resources = (PostProcessResources)_ppResourcesFieldInfo.GetValue(ppLayerPlayerCam);
|
||||
PostProcessResources oldResources = (PostProcessResources)_ppOldResourcesFieldInfo.GetValue(ppLayerPlayerCam);
|
||||
_ppResourcesFieldInfo.SetValue(ppLayerThirdPerson, resources);
|
||||
_ppResourcesFieldInfo.SetValue(ppLayerThirdPerson, oldResources);
|
||||
}
|
||||
}
|
||||
|
||||
// Copy Aura camera settings
|
||||
AuraCamera auraPlayerCam = activePlayerCam.GetComponent<AuraCamera>();
|
||||
AuraCamera auraThirdPerson = ourCamComponent.AddComponentIfMissing<AuraCamera>();
|
||||
if (auraPlayerCam != null && auraThirdPerson != null)
|
||||
{
|
||||
auraThirdPerson.enabled = auraPlayerCam.enabled;
|
||||
auraThirdPerson.frustumSettings = auraPlayerCam.frustumSettings;
|
||||
}
|
||||
else
|
||||
{
|
||||
auraThirdPerson.enabled = false;
|
||||
}
|
||||
|
||||
// Copy Flare layer settings
|
||||
FlareLayer flarePlayerCam = activePlayerCam.GetComponent<FlareLayer>();
|
||||
FlareLayer flareThirdPerson = ourCamComponent.AddComponentIfMissing<FlareLayer>();
|
||||
if (flarePlayerCam != null && flareThirdPerson != null)
|
||||
{
|
||||
flareThirdPerson.enabled = flarePlayerCam.enabled;
|
||||
}
|
||||
else
|
||||
{
|
||||
flareThirdPerson.enabled = false;
|
||||
}
|
||||
|
||||
// Copy Azure Fog Scattering settings
|
||||
AzureFogScattering azureFogPlayerCam = activePlayerCam.GetComponent<AzureFogScattering>();
|
||||
AzureFogScattering azureFogThirdPerson = ourCamComponent.AddComponentIfMissing<AzureFogScattering>();
|
||||
if (azureFogPlayerCam != null && azureFogThirdPerson != null)
|
||||
{
|
||||
azureFogThirdPerson.fogScatteringMaterial = azureFogPlayerCam.fogScatteringMaterial;
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Object.Destroy(ourCamComponent.GetComponent<AzureFogScattering>());
|
||||
}
|
||||
|
||||
// Copy Beautify settings
|
||||
Beautify beautifyPlayerCam = activePlayerCam.GetComponent<Beautify>();
|
||||
Beautify beautifyThirdPerson = ourCamComponent.AddComponentIfMissing<Beautify>();
|
||||
if (beautifyPlayerCam != null && beautifyThirdPerson != null)
|
||||
{
|
||||
beautifyThirdPerson.quality = beautifyPlayerCam.quality;
|
||||
beautifyThirdPerson.profile = beautifyPlayerCam.profile;
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Object.Destroy(ourCamComponent.gameObject.GetComponent<Beautify>());
|
||||
}
|
||||
CVRTools.CopyToDestCam(_thirdpersonCam, activePlayerCam);
|
||||
}
|
||||
|
||||
internal static void RelocateCam(CameraLocation location, bool resetDist = false)
|
||||
|
|
|
@ -17,7 +17,6 @@ internal static class Patches
|
|||
);
|
||||
harmony.Patch(
|
||||
typeof(CVRWorld).GetMethod(nameof(CVRWorld.CopyRefCamValues), BindingFlags.NonPublic | BindingFlags.Instance),
|
||||
prefix: typeof(Patches).GetMethod(nameof(OnPreWorldStart), BindingFlags.NonPublic | BindingFlags.Static).ToNewHarmonyMethod(),
|
||||
postfix: typeof(Patches).GetMethod(nameof(OnPostWorldStart), BindingFlags.NonPublic | BindingFlags.Static).ToNewHarmonyMethod()
|
||||
);
|
||||
harmony.Patch(
|
||||
|
@ -31,7 +30,6 @@ internal static class Patches
|
|||
}
|
||||
|
||||
//Copy camera settings & postprocessing components
|
||||
private static void OnPreWorldStart() => ResetPlayerCamValues();
|
||||
private static void OnPostWorldStart() => CopyPlayerCamValues();
|
||||
//Adjust camera distance with height as modifier
|
||||
private static void OnScaleAdjusted(float height) => AdjustScale(height);
|
||||
|
|
|
@ -27,6 +27,6 @@ using System.Reflection;
|
|||
namespace NAK.ThirdPerson.Properties;
|
||||
internal static class AssemblyInfoParams
|
||||
{
|
||||
public const string Version = "1.0.5";
|
||||
public const string Version = "1.0.6";
|
||||
public const string Author = "Davi & NotAKidoS";
|
||||
}
|
|
@ -2,8 +2,8 @@
|
|||
{
|
||||
"_id": 16,
|
||||
"name": "ThirdPerson",
|
||||
"modversion": "1.0.5",
|
||||
"gameversion": "2023r171",
|
||||
"modversion": "1.0.6",
|
||||
"gameversion": "2023r173",
|
||||
"loaderversion": "0.6.1",
|
||||
"modtype": "Mod",
|
||||
"author": "Davi & NotAKidoS",
|
||||
|
@ -14,9 +14,9 @@
|
|||
"third person"
|
||||
],
|
||||
"requirements": [],
|
||||
"downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r16/ThirdPerson.dll",
|
||||
"downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r22/ThirdPerson.dll",
|
||||
"sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/ThirdPerson",
|
||||
"changelog": "- Fixed game issue where player camera culling mask was not being first reset when loading into a world with a custom reference camera specified.\n- Fixed not updating stored culling mask on world join or ThirdPerson toggle.\n\nThese changes should fix the Portable Camera not displaying anything once loading into a world while in Third Person.",
|
||||
"changelog": "- Fixed not updating stored culling mask on world join or ThirdPerson toggle.\n- Switched to using CVRTools.CopyToDestCam when copying camera settings.",
|
||||
"embedcolor": "#F61961"
|
||||
}
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue