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 +++++++++++++++++++++++++++++++++++++++++---------------------- Plugin.cs | 56 +++++++++++++++++-------------------------- 2 files changed, 75 insertions(+), 63 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? 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]; diff --git a/Plugin.cs b/Plugin.cs index 4bf07e3..ae13e55 100755 --- a/Plugin.cs +++ b/Plugin.cs @@ -391,16 +391,15 @@ namespace NewCamera private string typedPositionName = ""; private string selectedPositionName = ""; + public static int updateTick = 0; + #if HOOK_ORDER_ASSERTS private int hookOrder = 0; - private int frameTick = 0; #endif - private void debugLog(string message) + public static void debugLog(string message) { #if LOG_DEBUG_MESSAGES - Log.Info(message); -#else Log.Debug(message); #endif } @@ -790,12 +789,14 @@ namespace NewCamera public void OnUpdate(float deltaTime) { + if (updateTick == int.MaxValue) updateTick = 0; + else updateTick++; + + debugLog($"OnUpdate() @ {updateTick}"); + #if HOOK_ORDER_ASSERTS Assert(hookOrder == 0 || hookOrder == 4); hookOrder = 0; - if (frameTick == int.MaxValue) frameTick = 0; - else frameTick++; - debugLog($"OnUpdate() @ {frameTick}"); #endif #if MOUSE_AND_KEYBOARD_LAYER @@ -1419,8 +1420,9 @@ namespace NewCamera private void SetCameraHook(nint cameraPointer) { + debugLog($"SetCameraHook(0x{cameraPointer:X}) @ {updateTick}"); + #if HOOK_ORDER_ASSERTS - debugLog($"SetCameraHook(0x{cameraPointer:X}) @ {frameTick}"); Assert(hookOrder == 0); hookOrder = 1; #endif @@ -1462,8 +1464,9 @@ namespace NewCamera // If camera.Move = false, this hook won't run. private void CalculateCameraHook(nint cameraPointer) { + debugLog($"CalculateCameraHook(0x{cameraPointer:X}) @ {updateTick}"); + #if HOOK_ORDER_ASSERTS - debugLog($"CalculateCameraHook(0x{cameraPointer:X}) @ {frameTick}"); Assert(hookOrder == 2); hookOrder = 3; #endif @@ -1538,8 +1541,9 @@ namespace NewCamera private void CheckCameraHook(nint cameraPointer) { + debugLog($"CheckCameraHook(0x{cameraPointer:X}) @ {updateTick}"); + #if HOOK_ORDER_ASSERTS - debugLog($"CheckCameraHook(0x{cameraPointer:X}) @ {frameTick}"); Assert(hookOrder == 1); hookOrder = 2; #endif @@ -1565,9 +1569,7 @@ namespace NewCamera private void StartViewModeHook(nint viewModeObject) { -#if HOOK_ORDER_ASSERTS - debugLog($"StartViewMode(0x{viewModeObject:X}) @ {frameTick}"); -#endif + debugLog($"StartViewMode(0x{viewModeObject:X}) @ {updateTick}"); if (overrideViewMode && vCamera != null) { @@ -1578,10 +1580,8 @@ namespace NewCamera private void SetCameraTentHook(nint unknownPtr) { -#if HOOK_ORDER_ASSERTS // The order of this hook between SetCameraHook() and CalculateCameraHook() is inconsistent. - debugLog($"SetCameraTentHook(0x{unknownPtr:X}) @ {frameTick}"); -#endif + debugLog($"SetCameraTentHook(0x{unknownPtr:X}) @ {updateTick}"); if (freeCamera && vCamera != null) { @@ -1603,9 +1603,7 @@ namespace NewCamera private void SetCameraCutsceneHook(nint unknownPtr) { -#if HOOK_ORDER_ASSERTS - debugLog($"SetCameraCutsceneHook(0x{unknownPtr:X}) @ {frameTick}"); -#endif + debugLog($"SetCameraCutsceneHook(0x{unknownPtr:X}) @ {updateTick}"); setCameraCutsceneHook!.Original(unknownPtr); @@ -1667,9 +1665,7 @@ namespace NewCamera // This can undoubtedly be simplified. private void WritePadInputHook(nint unknownPtr, nint unknownPtr2, nint unknownPtr3) { -#if HOOK_ORDER_ASSERTS - debugLog($"WritePadInputHook(0x{unknownPtr:X}, 0x{unknownPtr2:X}, 0x{unknownPtr3:X}) @ {frameTick}"); -#endif + debugLog($"WritePadInputHook(0x{unknownPtr:X}, 0x{unknownPtr2:X}, 0x{unknownPtr3:X}) @ {updateTick}"); // Assume the primary pad always comes first. if (primaryPad == 0x0) primaryPad = unknownPtr2; @@ -1973,9 +1969,7 @@ namespace NewCamera private float CheckMovementHook(int stickValue, float alwaysZero) { -#if HOOK_ORDER_ASSERTS - debugLog($"CheckMovementHook({stickValue:X}, {alwaysZero}) @ {frameTick}"); -#endif + debugLog($"CheckMovementHook({stickValue:X}, {alwaysZero}) @ {updateTick}"); if (freeCamera) { @@ -1998,9 +1992,7 @@ namespace NewCamera private void UnderwaterCheckHook(nint unknownPtr) { -#if HOOK_ORDER_ASSERTS - debugLog($"UnderwaterCheckHook(0x{unknownPtr:X}) @ {frameTick}"); -#endif + debugLog($"UnderwaterCheckHook(0x{unknownPtr:X}) @ {updateTick}"); underwaterCheckHook!.Original(unknownPtr); @@ -2012,9 +2004,7 @@ namespace NewCamera private void CameraEffectHook(nint unknownPtr, nint unknownPtr2, nint unknownPtr3) { -#if HOOK_ORDER_ASSERTS - debugLog($"CameraEffectHook(0x{unknownPtr:X}, 0x{unknownPtr2:X}, 0x{unknownPtr3:X}) @ {frameTick}"); -#endif + debugLog($"CameraEffectHook(0x{unknownPtr:X}, 0x{unknownPtr2:X}, 0x{unknownPtr3:X}) @ {updateTick}"); if (!enableUnderwaterCamera) { @@ -2405,9 +2395,7 @@ namespace NewCamera public void OnImGuiRender() { -#if HOOK_ORDER_ASSERTS - debugLog($"OnImGuiRender() @ {frameTick}"); -#endif + debugLog($"OnImGuiRender() @ {updateTick}"); float width = ImGui.GetWindowWidth(); width /= width / 600.0f; -- cgit v1.2.3-101-g0448