summaryrefslogtreecommitdiff
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
parent1b71d0d64832f182e06ac71a2163b7a5dea4bbfd (diff)
downloadNewCamera-efe79b34954a393346f853c5bb77756286fcccae.tar.gz
NewCamera-efe79b34954a393346f853c5bb77756286fcccae.tar.bz2
NewCamera-efe79b34954a393346f853c5bb77756286fcccae.zip
Cleanup debugLog/frameTick
Signed-off-by: Andrew Opalach <andrew@akon.city>
-rw-r--r--Player.cs82
-rwxr-xr-xPlugin.cs56
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<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];
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;