[ThirdPerson] Fixes for r173

This commit is contained in:
NotAKidoS 2023-11-08 20:30:46 -06:00
parent fee053bb64
commit 0d4e6e6331
4 changed files with 8 additions and 103 deletions

View file

@ -6,6 +6,7 @@ using Aura2API;
using BeautifyEffect; using BeautifyEffect;
using System.Collections; using System.Collections;
using System.Reflection; using System.Reflection;
using ABI_RC.Core;
using UnityEngine; using UnityEngine;
using UnityEngine.AzureSky; using UnityEngine.AzureSky;
using UnityEngine.Rendering.PostProcessing; using UnityEngine.Rendering.PostProcessing;
@ -68,110 +69,16 @@ internal static class CameraLogic
ThirdPerson.Logger.Msg("Finished setting up third person camera."); 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() internal static void CopyPlayerCamValues()
{ {
Camera ourCamComponent = _thirdpersonCam.GetComponent<Camera>(); Camera ourCamComponent = _thirdpersonCam;
Camera activePlayerCam = PlayerSetup.Instance.GetActiveCamera().GetComponent<Camera>(); Camera activePlayerCam = PlayerSetup.Instance.GetActiveCamera().GetComponent<Camera>();
if (ourCamComponent == null || activePlayerCam == null) if (ourCamComponent == null || activePlayerCam == null)
return; return;
ThirdPerson.Logger.Msg("Copying active camera settings & components."); ThirdPerson.Logger.Msg("Copying active camera settings & components.");
// Copy basic settings CVRTools.CopyToDestCam(_thirdpersonCam, activePlayerCam);
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>());
}
} }
internal static void RelocateCam(CameraLocation location, bool resetDist = false) internal static void RelocateCam(CameraLocation location, bool resetDist = false)

View file

@ -17,7 +17,6 @@ internal static class Patches
); );
harmony.Patch( harmony.Patch(
typeof(CVRWorld).GetMethod(nameof(CVRWorld.CopyRefCamValues), BindingFlags.NonPublic | BindingFlags.Instance), 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() postfix: typeof(Patches).GetMethod(nameof(OnPostWorldStart), BindingFlags.NonPublic | BindingFlags.Static).ToNewHarmonyMethod()
); );
harmony.Patch( harmony.Patch(
@ -31,7 +30,6 @@ internal static class Patches
} }
//Copy camera settings & postprocessing components //Copy camera settings & postprocessing components
private static void OnPreWorldStart() => ResetPlayerCamValues();
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(float height) => AdjustScale(height);

View file

@ -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.0.5"; public const string Version = "1.0.6";
public const string Author = "Davi & NotAKidoS"; public const string Author = "Davi & NotAKidoS";
} }

View file

@ -2,8 +2,8 @@
{ {
"_id": 16, "_id": 16,
"name": "ThirdPerson", "name": "ThirdPerson",
"modversion": "1.0.5", "modversion": "1.0.6",
"gameversion": "2023r171", "gameversion": "2023r173",
"loaderversion": "0.6.1", "loaderversion": "0.6.1",
"modtype": "Mod", "modtype": "Mod",
"author": "Davi & NotAKidoS", "author": "Davi & NotAKidoS",
@ -14,9 +14,9 @@
"third person" "third person"
], ],
"requirements": [], "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", "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" "embedcolor": "#F61961"
} }
] ]