Skip to content

Commit

Permalink
More accurate CameraCollisionDelegate
Browse files Browse the repository at this point in the history
  • Loading branch information
chirpxiv authored and Fayti1703 committed Jun 14, 2023
1 parent ff95786 commit 0b73587
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 5 deletions.
2 changes: 1 addition & 1 deletion Ktisis/Camera/CameraService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
7 changes: 3 additions & 4 deletions Ktisis/Interop/Hooks/CameraHooks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -129,16 +128,16 @@ private static void CameraUiDetour(nint a1) {
private unsafe delegate nint TargetDelegate(GameCamera* a1);
private static Hook<TargetDelegate> 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<CameraCollisionDelegate> 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);
Expand Down

0 comments on commit 0b73587

Please sign in to comment.