mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Inline every signature defined in the SDK (previously each translation unit had its own copy of the signature and function prototype). DLL init is near instant now (85% speed improvements).
65 lines
2.3 KiB
C++
65 lines
2.3 KiB
C++
#pragma once
|
|
#include "game/server/ai_node.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// CAI_Network
|
|
//
|
|
// Purpose: Stores a node graph through which an AI may pathfind
|
|
//-----------------------------------------------------------------------------
|
|
class CAI_Network
|
|
{
|
|
public:
|
|
static void DebugConnectMsg(int node1, int node2, const char* pszFormat, ...);
|
|
void* GetVTable(void) const;
|
|
int GetNumLinks(void) const;
|
|
int GetNumZones(void) const;
|
|
int GetNumHints(void) const;
|
|
int GetNumScriptNodes(void) const;
|
|
int64_t GetNumPathNodes(void) const;
|
|
|
|
short GetHint(int nIndex) const;
|
|
CAI_ScriptNode* GetScriptNodes(void) const;
|
|
CAI_Node** GetPathNodes(void) const;
|
|
|
|
public:
|
|
void* m_pVTable; // <-- 'this'.
|
|
|
|
int m_iNumLinks; // +0x0008
|
|
char unk1[0x7C]; // +0x000C
|
|
int m_iNumZones; // +0x0088
|
|
char unk2[0x10]; // +0x008C
|
|
|
|
// unk8 on disk
|
|
int unk5; // +0x009C
|
|
char unk6[0x4]; // +0x00A0
|
|
int m_iNumHints; // +0x00A4
|
|
|
|
short m_Hints[0x7D0]; // +0x00A8 <-- '2000' hints.
|
|
CAI_ScriptNode* m_ScriptNode; // +0x1048 <-- '[r5apex_ds.exe + 0xc6fd39]'.
|
|
int m_iNumScriptNodes; // +0x1050
|
|
|
|
char pad0[0x14]; // +0x1054 <-- !TODO
|
|
|
|
int64_t m_iNumNodes; // +0x1070
|
|
CAI_Node** m_pAInode; // +0x1078
|
|
};
|
|
|
|
void CAI_Network_Attach();
|
|
void CAI_Network_Detach();
|
|
|
|
inline ADDRESS p_CAI_Network__DebugConnectMsg = g_mGameDll.FindPatternSIMD(reinterpret_cast<rsig_t>("\x4C\x89\x4C\x24\x00\x48\x83\xEC\x18"), "xxxx?xxxx");
|
|
inline void (*v_CAI_Network__DebugConnectMsg)(int node1, int node2, const char* pszFormat, ...) = (void (*)(int, int, const char*, ...))p_CAI_Network__DebugConnectMsg.GetPtr(); /*4C 89 4C 24 ? 48 83 EC 18*/
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
class HAI_Network : public IDetour
|
|
{
|
|
virtual void debugp()
|
|
{
|
|
std::cout << "| FUN: CAI_Network::DebugConnectMsg : 0x" << std::hex << std::uppercase << p_CAI_Network__DebugConnectMsg.GetPtr() << std::setw(npad) << " |" << std::endl;
|
|
std::cout << "+----------------------------------------------------------------+" << std::endl;
|
|
}
|
|
};
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
REGISTER(HAI_Network);
|