From efe79b34954a393346f853c5bb77756286fcccae Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 21 Sep 2026 14:10:55 -0400 Subject: Cleanup debugLog/frameTick Signed-off-by: Andrew Opalach --- Player.cs | 82 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 53 insertions(+), 29 deletions(-) (limited to 'Player.cs') 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? 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(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 rotations) in faceRotations) { MemoryUtil.GetRef(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(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 offsets) in faceOffsets) { MemoryUtil.GetRef(addr + 0x50) += offsets[0]; -- cgit v1.2.3-101-g0448