mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Utilize the new IDetour::DetourSetup() code, IDetour::Attach and IDetour::Detach have been removed in favor of this (significantly reduces chance of user error). Since the template check happens in the idetour header, it is much more aggressive on type mismatches, such as a difference in parameter types, between the function and detour, will now raise a compile time error. As a result, some type mismatches have been fixed in this commit as well.
161 lines
4.9 KiB
C++
161 lines
4.9 KiB
C++
//=============================================================================//
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================//
|
|
#include "core/stdafx.h"
|
|
#include "tier1/cvar.h"
|
|
#include "game/server/ai_network.h"
|
|
|
|
int g_DebugConnectNode1 = -1;
|
|
int g_DebugConnectNode2 = -1;
|
|
#define DebuggingConnect( node1, node2 ) ( ( node1 == g_DebugConnectNode1 && node2 == g_DebugConnectNode2 ) || ( node1 == g_DebugConnectNode2 && node2 == g_DebugConnectNode1 ) )
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: debug logs node connections
|
|
// Input : node1 -
|
|
// node2 -
|
|
// *pszFormat -
|
|
// ... -
|
|
//-----------------------------------------------------------------------------
|
|
void CAI_Network::DebugConnectMsg(int node1, int node2, const char* pszFormat, ...)
|
|
{
|
|
if (ai_ainDebugConnect->GetBool())
|
|
{
|
|
if (DebuggingConnect(node1, node2))
|
|
{
|
|
static char buf[1024] = {};
|
|
{/////////////////////////////
|
|
va_list args{};
|
|
va_start(args, pszFormat);
|
|
|
|
vsnprintf(buf, sizeof(buf), pszFormat, args);
|
|
|
|
buf[sizeof(buf) - 1] = '\0';
|
|
va_end(args);
|
|
}/////////////////////////////
|
|
|
|
|
|
Msg(eDLL_T::SERVER, "%s", buf);
|
|
}
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the AI Network VTable
|
|
// Output : void*
|
|
//-----------------------------------------------------------------------------
|
|
void* CAI_Network::GetVTable(void) const
|
|
{
|
|
return m_pVTable;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the number of node links
|
|
// Output : int
|
|
//-----------------------------------------------------------------------------
|
|
int CAI_Network::NumLinks(void) const
|
|
{
|
|
return m_iNumLinks;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the number of zones
|
|
// Output : int
|
|
//-----------------------------------------------------------------------------
|
|
int CAI_Network::NumZones(void) const
|
|
{
|
|
return m_iNumZones;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the number of hints
|
|
// Output : int
|
|
//-----------------------------------------------------------------------------
|
|
int CAI_Network::NumHints(void) const
|
|
{
|
|
return m_iNumHints;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the number of script nodes
|
|
// Output : int
|
|
//-----------------------------------------------------------------------------
|
|
int CAI_Network::NumScriptNodes(void) const
|
|
{
|
|
return m_iNumScriptNodes;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the path nodes
|
|
// Output : int
|
|
//-----------------------------------------------------------------------------
|
|
int CAI_Network::NumPathNodes(void) const
|
|
{
|
|
return m_iNumNodes;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the specified hint from static array
|
|
// Input : nIndex -
|
|
// Output : int
|
|
//-----------------------------------------------------------------------------
|
|
short CAI_Network::GetHint(int nIndex) const
|
|
{
|
|
return m_Hints[nIndex];
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the pointer to script node array
|
|
// Output : CAI_ScriptNode*
|
|
//-----------------------------------------------------------------------------
|
|
CAI_ScriptNode* CAI_Network::GetScriptNodes(void) const
|
|
{
|
|
return m_ScriptNode;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: gets the pointer to path node
|
|
// Input : id -
|
|
// Output : CAI_Node**
|
|
//-----------------------------------------------------------------------------
|
|
CAI_Node* CAI_Network::GetPathNode(int id) const
|
|
{
|
|
if (id >= 0 &&
|
|
id < m_iNumNodes)
|
|
{
|
|
return m_pAInode[id];
|
|
}
|
|
|
|
Assert(0);
|
|
return NULL;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: adds a path node
|
|
// Input : *origin -
|
|
// jaw -
|
|
// Output : CAI_Node*
|
|
//-----------------------------------------------------------------------------
|
|
CAI_Node* CAI_Network::AddPathNode(const Vector3D* origin, const float jaw)
|
|
{
|
|
return v_CAI_Network__AddPathNode(this, origin, jaw);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: creates a node link
|
|
// Input : srcID -
|
|
// destID -
|
|
// Output : CAI_NodeLink*
|
|
//-----------------------------------------------------------------------------
|
|
CAI_NodeLink* CAI_Network::CreateNodeLink(int srcID, int destID)
|
|
{
|
|
return v_CAI_Network__CreateNodeLink(this, srcID, destID);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void VAI_Network::Detour(const bool bAttach) const
|
|
{
|
|
DetourSetup(&v_CAI_Network__DebugConnectMsg, &CAI_Network::DebugConnectMsg, bAttach);
|
|
}
|