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 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)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
|
@ -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"
|
||||||
}
|
}
|
||||||
]
|
]
|
Loading…
Add table
Add a link
Reference in a new issue