From 0b7358751799688a1c98e51734eb52b68e45d56d Mon Sep 17 00:00:00 2001 From: chirp Date: Wed, 14 Jun 2023 16:30:45 +0100 Subject: [PATCH] More accurate CameraCollisionDelegate --- Ktisis/Camera/CameraService.cs | 2 +- Ktisis/Interop/Hooks/CameraHooks.cs | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Ktisis/Camera/CameraService.cs b/Ktisis/Camera/CameraService.cs index 7c00e21f0..e4ff832e7 100644 --- a/Ktisis/Camera/CameraService.cs +++ b/Ktisis/Camera/CameraService.cs @@ -18,7 +18,7 @@ namespace Ktisis.Camera { internal static class CameraService { // Camera override - internal unsafe static GameCamera* Override; + internal unsafe static GameCamera* Override = null; // Camera list diff --git a/Ktisis/Interop/Hooks/CameraHooks.cs b/Ktisis/Interop/Hooks/CameraHooks.cs index 3af0ec23d..fd7d12f2b 100644 --- a/Ktisis/Interop/Hooks/CameraHooks.cs +++ b/Ktisis/Interop/Hooks/CameraHooks.cs @@ -3,7 +3,6 @@ using Dalamud.Hooking; using Dalamud.Logging; -using Dalamud.Game.ClientState.Objects.Types; using FFXIVClientStructs.FFXIV.Common.Math; using GameCamera = FFXIVClientStructs.FFXIV.Client.Game.Camera; @@ -129,16 +128,16 @@ private static void CameraUiDetour(nint a1) { private unsafe delegate nint TargetDelegate(GameCamera* a1); private static Hook TargetHook = null!; private unsafe static nint TargetDetour(GameCamera* a1) { - if (CameraService.GetTargetLock((nint)a1) is GameObject tar) + if (CameraService.GetTargetLock((nint)a1) is { Address: not 0 } tar) return tar.Address; return TargetHook.Original(a1); } // Camera collision - private unsafe delegate char CameraCollisionDelegate(GameCamera* a1, float* a2, float* a3, float* a4, int a5, int a6, nint a7); + private unsafe delegate char CameraCollisionDelegate(GameCamera* a1, float* a2, float* a3, float* a4, float a5, float a6, int a7); private static Hook CameraCollisionHook = null!; - private unsafe static char CameraCollisionDetour(GameCamera* a1, float* a2, float* a3, float* a4, int a5, int a6, nint a7) { + private unsafe static char CameraCollisionDetour(GameCamera* a1, float* a2, float* a3, float* a4, float a5, float a6, int a7) { if (Ktisis.IsInGPose && CameraService.GetCameraByAddress((nint)a1) is { CameraEdit.NoClip: true }) return (char)0; return CameraCollisionHook.Original(a1, a2, a3, a4, a5, a6, a7);