summaryrefslogtreecommitdiff
path: root/Player.cs
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-09-21 14:10:55 -0400
committerAndrew Opalach <andrew@akon.city> 2026-09-21 14:10:55 -0400
commitefe79b34954a393346f853c5bb77756286fcccae (patch)
tree9a5015c17495d5ee9029eeade0f234ac46bd1342 /Player.cs
parent1b71d0d64832f182e06ac71a2163b7a5dea4bbfd (diff)
downloadNewCamera-efe79b34954a393346f853c5bb77756286fcccae.tar.gz
NewCamera-efe79b34954a393346f853c5bb77756286fcccae.tar.bz2
NewCamera-efe79b34954a393346f853c5bb77756286fcccae.zip
Cleanup debugLog/frameTick
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'Player.cs')
-rw-r--r--Player.cs82
1 files changed, 53 insertions, 29 deletions
diff --git a/Player.cs b/Player.cs
index dea9261..85ba0a2 100644
--- a/Player.cs
+++ b/Player.cs
@@ -145,6 +145,7 @@ namespace NewCamera
private static nint[] playerArmor = new nint[10];
private static nint[] playerJoints = new nint[0xFF];
+ private static int lastArmorRefresh = -1;
private delegate void UpdateJoints(nint obj);
private static Hook<UpdateJoints>? updateJointRotationHook;
@@ -481,9 +482,7 @@ namespace NewCamera
private static void CollisionCheckHook(nint unknownPtr, nint unknownPtr2)
{
-#if HOOK_ORDER_ASSERTS
- debugLog($"CollisionCheckHook(0x{unknownPtr:X}, 0x{unknownPtr2:X}) @ {frameTick}");
-#endif
+ debugLog($"CollisionCheckHook(0x{unknownPtr:X}, 0x{unknownPtr2:X}) @ {updateTick}");
Player? player = null;
if (enableCrawl && (player = getPlayer()) != null)
@@ -510,9 +509,7 @@ namespace NewCamera
private static void SetZoneStateHook(nint player, int flags)
{
-#if HOOK_ORDER_ASSERTS
- debugLog($"SetZoneStateHook(0x{player:X}, 0x{flags:X}) @ {frameTick}");
-#endif
+ debugLog($"SetZoneStateHook(0x{player:X}, 0x{flags:X}) @ {updateTick}");
#if QUARANTINED_FEATURES
nint zoneStateAddr = MemoryUtil.Read<nint>(0x1451C42B8);
@@ -556,9 +553,7 @@ namespace NewCamera
private static void RefreshEntityParamsHook(nint entity, nint unknownPtr2)
{
-#if HOOK_ORDER_ASSERTS
- debugLog($"RefreshEntityParamsHook(0x{entity:X}, 0x{unknownPtr2:X}) @ {frameTick}");
-#endif
+ debugLog($"RefreshEntityParamsHook(0x{entity:X}, 0x{unknownPtr2:X}) @ {updateTick}");
refreshEntityParamsHook!.Original(entity, unknownPtr2);
@@ -1550,22 +1545,22 @@ namespace NewCamera
{
dropJointOffsets();
}
- }
-
- private static bool usingArmorState()
- {
- return (bodyRotations.Count > 0 || bodyOffsets.Count > 0 || faceRotations.Count > 0 || faceOffsets.Count > 0) ||
- (enableFreeCamera && orbitPlayer && orbitJoint >= 0);
+ lastArmorRefresh = updateTick;
}
private static void UpdateJointRotationHook(nint model)
{
-#if HOOK_ORDER_ASSERTS
- debugLog($"UpdateJointRotationHook(0x{model:X}) @ {frameTick}");
-#endif
- if (usingArmorState())
+ debugLog($"UpdateJointRotationHook(0x{model:X}) @ {updateTick}");
+
+ Player? player = null;
+ bool updateBody = bodyRotations.Count() > 0 || (enableFreeCamera && orbitPlayer && orbitJoint >= 0);
+ if (updateBody || faceRotations.Count() > 0)
+ {
+ player = getPlayerWithFallback();
+ }
+
+ if (updateBody)
{
- Player? player = getPlayerWithFallback();
if (player != null && model == player.Instance)
{
refreshArmorState(player);
@@ -1581,9 +1576,20 @@ namespace NewCamera
}
*/
}
- else if (player != null && model == playerArmor[Armor.Face])
+ }
+
+ if (faceRotations.Count() > 0)
+ {
+ if (player != null && model == playerArmor[Armor.Face])
{
- refreshArmorState(player);
+ if (!updateBody)
+ {
+ refreshArmorState(player);
+ }
+ else
+ {
+ Assert(lastArmorRefresh == updateTick);
+ }
foreach ((nint addr, List<Vector3> rotations) in faceRotations)
{
MemoryUtil.GetRef<Quaternion>(addr + 0x70) *= Quaternion.CreateFromYawPitchRoll(rotations[0].X, rotations[0].Y, rotations[0].Z);
@@ -1591,18 +1597,25 @@ namespace NewCamera
}
}
+
updateJointRotationHook!.Original(model);
}
private static void UpdateJointPositionHook(nint model)
{
-#if HOOK_ORDER_ASSERTS
- debugLog($"UpdateJointPositionHook(0x{model:X}) @ {frameTick}");
-#endif
+ debugLog($"UpdateJointPositionHook(0x{model:X}) @ {updateTick}");
+
updateJointPositionHook!.Original(model);
- if (usingArmorState())
+
+ Player? player = null;
+ bool updateBody = bodyOffsets.Count() > 0;
+ if (updateBody || faceOffsets.Count() > 0)
+ {
+ player = getPlayerWithFallback();
+ }
+
+ if (updateBody)
{
- Player? player = getPlayerWithFallback();
if (player != null && model == player.Instance)
{
refreshArmorState(player);
@@ -1611,9 +1624,20 @@ namespace NewCamera
MemoryUtil.GetRef<Vector3>(addr + 0x50) += offsets[0];
}
}
- else if (player != null && model == playerArmor[Armor.Face])
+ }
+
+ if (faceOffsets.Count() > 0)
+ {
+ if (player != null && model == playerArmor[Armor.Face])
{
- refreshArmorState(player);
+ if (!updateBody)
+ {
+ refreshArmorState(player);
+ }
+ else
+ {
+ Assert(lastArmorRefresh == updateTick);
+ }
foreach ((nint addr, List<Vector3> offsets) in faceOffsets)
{
MemoryUtil.GetRef<Vector3>(addr + 0x50) += offsets[0];