WIP CZERO: Reversed Nav Area

This commit is contained in:
s1lentq 2015-12-07 20:18:21 +06:00
parent 03bc9da727
commit bd08ec6939
7 changed files with 3756 additions and 1899 deletions

View File

@ -36,6 +36,7 @@
#ifndef HOOK_GAMEDLL
#define IMPL IMPLEMENT_ARRAY
#define IMPLEMENT_ARRAY(var)\
var
@ -44,6 +45,7 @@
#else // HOOK_GAMEDLL
#define IMPL IMPLEMENT_ARRAY
#define IMPLEMENT_ARRAY(var)\
(*p##var)

View File

@ -32,7 +32,13 @@
#pragma once
#endif
#define COS_TABLE_SIZE 256
#define COS_TABLE_SIZE 256
#define RAD_TO_DEG(deg) ((deg) * 180.0 / M_PI)
#define DEG_TO_RAD(rad) ((rad) * M_PI / 180.0)
#define SIGN(num) (((num) < 0) ? -1 : 1)
#define ABS(num) (SIGN(num) * (num))
class CBasePlayer;
class BotProfile;

File diff suppressed because it is too large Load Diff

View File

@ -36,10 +36,31 @@
class CNavArea;
enum
{
MAX_BLOCKED_AREAS = 256
};
enum { MAX_BLOCKED_AREAS = 256 };
#ifdef HOOK_GAMEDLL
#define TheNavLadderList (*pTheNavLadderList)
#define TheHidingSpotList (*pTheHidingSpotList)
#define TheNavAreaList (*pTheNavAreaList)
#define TheNavAreaGrid (*pTheNavAreaGrid)
#define lastDrawTimestamp (*plastDrawTimestamp)
#define goodSizedAreaList (*pgoodSizedAreaList)
#define markedArea (*pmarkedArea)
#define lastSelectedArea (*plastSelectedArea)
#define markedCorner (*pmarkedCorner)
#define isCreatingNavArea (*pisCreatingNavArea)
#define isAnchored (*pisAnchored)
#define anchor (*panchor)
#define isPlaceMode (*pisPlaceMode)
#define isPlacePainting (*pisPlacePainting)
#define editTimestamp (*peditTimestamp)
#define BlockedID (*pBlockedID)
#define BlockedIDCount (*pBlockedIDCount)
#endif // HOOK_GAMEDLL
void DestroyHidingSpots(void);
NOBODY void StripNavigationAreas(void);
@ -207,15 +228,15 @@ public:
}
void Mark(void)
{
m_marker = IMPLEMENT_ARRAY(m_masterMarker);
m_marker = IMPL(m_masterMarker);
}
bool IsMarked(void) const
{
return (m_marker == IMPLEMENT_ARRAY(m_masterMarker)) ? true : false;
return (m_marker == IMPL(m_masterMarker)) ? true : false;
}
static void ChangeMasterMarker(void)
{
IMPLEMENT_ARRAY(m_masterMarker)++;
IMPL(m_masterMarker)++;
}
private:
@ -229,8 +250,8 @@ private:
#ifdef HOOK_GAMEDLL
public:
#endif // HOOK_GAMEDLL
static unsigned int IMPLEMENT_ARRAY(m_nextID);
static unsigned int IMPLEMENT_ARRAY(m_masterMarker);
static unsigned int IMPL(m_nextID);
static unsigned int IMPL(m_masterMarker);
};/* size: 24, cachelines: 1, members: 6 */
@ -401,17 +422,17 @@ public:
void ComputeApproachAreas(void);
static void MakeNewMarker(void)
{
IMPLEMENT_ARRAY(m_masterMarker)++;
if (IMPLEMENT_ARRAY(m_masterMarker) == 0)
IMPLEMENT_ARRAY(m_masterMarker) = 1;
IMPL(m_masterMarker)++;
if (IMPL(m_masterMarker) == 0)
IMPL(m_masterMarker) = 1;
}
void Mark(void)
{
m_marker = IMPLEMENT_ARRAY(m_masterMarker);
m_marker = IMPL(m_masterMarker);
}
BOOL IsMarked(void) const
{
return (m_marker == IMPLEMENT_ARRAY(m_masterMarker)) ? true : false;
return (m_marker == IMPL(m_masterMarker)) ? true : false;
}
void SetParent(CNavArea *parent, NavTraverseType how = NUM_TRAVERSE_TYPES)
{
@ -505,8 +526,8 @@ private:
#ifdef HOOK_GAMEDLL
public:
#endif // HOOK_GAMEDLL
static bool IMPLEMENT_ARRAY(m_isReset);
static unsigned int IMPLEMENT_ARRAY(m_nextID);
static bool IMPL(m_isReset);
static unsigned int IMPL(m_nextID);
#ifdef HOOK_GAMEDLL
private:
@ -542,7 +563,7 @@ public:
#ifdef HOOK_GAMEDLL
public:
#endif // HOOK_GAMEDLL
static unsigned int IMPLEMENT_ARRAY(m_masterMarker);
static unsigned int IMPL(m_masterMarker);
#ifdef HOOK_GAMEDLL
private:
@ -557,7 +578,7 @@ private:
#ifdef HOOK_GAMEDLL
public:
#endif // HOOK_GAMEDLL
static CNavArea *IMPLEMENT_ARRAY(m_openList);
static CNavArea *IMPL(m_openList);
#ifdef HOOK_GAMEDLL
private:
@ -602,13 +623,13 @@ inline CNavArea *CNavArea::GetAdjacentArea(NavDirType dir, int i) const
/* <5a01dc> ../game_shared/bot/nav_area.h:435 */
inline bool CNavArea::IsOpen(void) const
{
return (m_openMarker == IMPLEMENT_ARRAY(m_masterMarker)) ? true : false;
return (m_openMarker == IMPL(m_masterMarker)) ? true : false;
}
/* <5a0a62> ../game_shared/bot/nav_area.h:440 */
inline bool CNavArea::IsOpenListEmpty(void)
{
return (IMPLEMENT_ARRAY(m_openList) != NULL) ? false : true;
return (IMPL(m_openList) != NULL) ? false : true;
}
/* <5a1483> ../game_shared/bot/nav_area.h:445 */
@ -622,9 +643,9 @@ inline CNavArea *CNavArea::PopOpenList(void)
return area;
}
#else
if (IMPLEMENT_ARRAY(m_openList))
if (IMPL(m_openList))
{
CNavArea *area = IMPLEMENT_ARRAY(m_openList);
CNavArea *area = IMPL(m_openList);
area->RemoveFromOpenList();
return area;
}
@ -1216,30 +1237,6 @@ typedef void (HidingSpot::*CNAV_AREA_NAVNODE)(CNavNode *nwNode, class CNavNode *
#endif // HOOK_GAMEDLL
#ifdef HOOK_GAMEDLL
#define TheNavLadderList (*pTheNavLadderList)
#define TheHidingSpotList (*pTheHidingSpotList)
#define TheNavAreaList (*pTheNavAreaList)
#define TheNavAreaGrid (*pTheNavAreaGrid)
#define lastDrawTimestamp (*plastDrawTimestamp)
#define goodSizedAreaList (*pgoodSizedAreaList)
#define markedArea (*pmarkedArea)
#define lastSelectedArea (*plastSelectedArea)
#define markedCorner (*pmarkedCorner)
#define isCreatingNavArea (*pisCreatingNavArea)
//#define isAnchored (*pisAnchored)
//#define anchor (*panchor)
//#define isPlaceMode (*pisPlaceMode)
#define isPlacePainting (*pisPlacePainting)
#define editTimestamp (*peditTimestamp)
#define BlockedID (*pBlockedID)
#define BlockedIDCount (*pBlockedIDCount)
#endif // HOOK_GAMEDLL
extern NavLadderList TheNavLadderList;
extern HidingSpotList TheHidingSpotList;
extern NavAreaList TheNavAreaList;
@ -1250,9 +1247,9 @@ extern CNavArea *markedArea;
extern CNavArea *lastSelectedArea;
extern NavCornerType markedCorner;
extern bool isCreatingNavArea;
//extern bool isAnchored;
//extern Vector anchor;
//extern bool isPlaceMode;
extern bool isAnchored;
extern Vector anchor;
extern bool isPlaceMode;
extern bool isPlacePainting;
extern float editTimestamp;
@ -1301,6 +1298,5 @@ NOBODY void GenerateNavigationAreaMesh(void);
extern float (*pGetZ__Vector)(const Vector *pos);
extern CNavArea *(*pGetNearestNavArea)(const Vector *pos, bool anyZ);
extern CNavArea *(*pGetNavArea)(const Vector *pos, float beneathLimit);
extern void (*pDestroyNavigationMap)(void);
#endif // NAV_AREA_H

View File

@ -8,7 +8,7 @@
//NavDirType Opposite[ NUM_DIRECTIONS ] = { SOUTH, WEST, NORTH, EAST };
CNavNode *CNavNode::m_list = NULL;
//unsigned int CNavNode::m_listLength = 0;
unsigned int CNavNode::m_listLength = 0;
//Extent NodeMapExtent;
@ -17,7 +17,7 @@ CNavNode *CNavNode::m_list = NULL;
//NavDirType Opposite[ NUM_DIRECTIONS ];
CNavNode *IMPLEMENT_ARRAY_CLASS(CNavNode, m_list);
//unsigned int CNavNode::m_listLength;
unsigned int IMPLEMENT_ARRAY_CLASS(CNavNode, m_listLength);
//Extent NodeMapExtent;

View File

@ -32,6 +32,17 @@
#pragma once
#endif
#ifdef HOOK_GAMEDLL
//#define Opposite (*pOpposite)
//#define m_list (*pm_list)
//#define NodeMapExtent (*pNodeMapExtent)
#endif // HOOK_GAMEDLL
//extern NavDirType Opposite[ NUM_DIRECTIONS ];
//extern Extent NodeMapExtent;
class CNavNode
{
public:
@ -54,11 +65,11 @@ public:
static CNavNode *GetFirst(void)
{
return IMPLEMENT_ARRAY(m_list);
return IMPL(m_list);
}
static unsigned int GetListLength(void)
{
return m_listLength;
return IMPL(m_listLength);
}
CNavNode *GetNext(void)
{
@ -112,8 +123,8 @@ private:
#ifdef HOOK_GAMEDLL
public:
#endif // HOOK_GAMEDLL
static CNavNode *IMPLEMENT_ARRAY(m_list); // the master list of all nodes for this map
static unsigned int m_listLength;
static CNavNode *IMPL(m_list); // the master list of all nodes for this map
static unsigned int IMPL(m_listLength);
#ifdef HOOK_GAMEDLL
private:
#endif // HOOK_GAMEDLL
@ -173,18 +184,4 @@ inline CNavArea *CNavNode::GetArea(void) const
return m_area;
}
#ifdef HOOK_GAMEDLL
//#define Opposite (*pOpposite)
//#define m_list (*pm_list)
//#define m_listLength (*pm_listLength)
//#define NodeMapExtent (*pNodeMapExtent)
#endif // HOOK_GAMEDLL
//extern NavDirType Opposite[ NUM_DIRECTIONS ];
//extern CNavNode *CNavNode::m_list;
//extern unsigned int CNavNode::m_listLength;
//extern Extent NodeMapExtent;
#endif // NAV_NODE_H

View File

@ -4923,117 +4923,119 @@ FunctionHook g_FunctionHooks[] =
//{ 0x0, "_ZNK16CNavPathFollower21FindOurPositionOnPathEP6Vectorb", mfunc_ptr_cast(&CNavPathFollower::FindOurPositionOnPath) },
//{ 0x0, "_ZN16CNavPathFollower13FindPathPointEfP6VectorPi", mfunc_ptr_cast(&CNavPathFollower::FindPathPoint) },
//HidingSpot
//{ 0x0, "", mfunc_ptr_cast<HIDING_SPOT_VOID>(&HidingSpot::HidingSpot) },
//{ 0x0, "", mfunc_ptr_cast<HIDING_SPOT_VECTOR>(&HidingSpot::HidingSpot) },
//{ 0x0, "_ZNK10HidingSpot4SaveEij", mfunc_ptr_cast(&HidingSpot::Save) },
//{ 0x0, "_ZN10HidingSpot4LoadEP9SteamFilej", mfunc_ptr_cast(&HidingSpot::Load) },
//{ 0x01D37DB0, "", mfunc_ptr_cast<HIDING_SPOT_VOID>(&HidingSpot::HidingSpot) },
//{ 0x01D37E40, "", mfunc_ptr_cast<HIDING_SPOT_VECTOR>(&HidingSpot::HidingSpot) },
{ 0x01D37EC0, "_ZNK10HidingSpot4SaveEij", mfunc_ptr_cast(&HidingSpot::Save) },
{ 0x01D37F00, "_ZN10HidingSpot4LoadEP9SteamFilej", mfunc_ptr_cast(&HidingSpot::Load) },
//CNavArea
//{ 0x01D44F80, "_ZN8CNavArea4SaveEij", mfunc_ptr_cast<SAVE_FD>(&CNavArea::Save) },
//{ 0x0, "_ZNK8CNavArea4SaveEP8_IO_FILE", mfunc_ptr_cast<SAVE_FILE>(&CNavArea::Save) },
//{ 0x0, "", mfunc_ptr_cast<CNAV_AREA_VOID>(&CNavArea::CNavArea) },
//{ 0x01D38040, "", mfunc_ptr_cast<CNAV_AREA_VOID>(&CNavArea::CNavArea) },
//{ 0x0, "", mfunc_ptr_cast<CNAV_AREA_TWO_VECTOR>(&CNavArea::CNavArea) },
//{ 0x0, "", mfunc_ptr_cast<CNAV_AREA_VECTOR>(&CNavArea::CNavArea) },
//{ 0x0, "", mfunc_ptr_cast<CNAV_AREA_NAVNODE>(&CNavArea::CNavArea) },
//{ 0x01D386A0, "", mfunc_ptr_cast(&CNavArea::~CNavArea) },
//{ 0x0, "_ZN8CNavArea10InitializeEv", mfunc_ptr_cast(&CNavArea::Initialize) },
//{ 0x01D37FE0, "_ZN8CNavArea10InitializeEv", mfunc_ptr_cast(&CNavArea::Initialize) }, // PRIVATE
//{ 0x01D388A0, "_ZN8CNavArea15OnDestroyNotifyEPS_", mfunc_ptr_cast(&CNavArea::OnDestroyNotify) }, // NOXREF
//{ 0x0, "_ZN8CNavArea9ConnectToEPS_10NavDirType", mfunc_ptr_cast(&CNavArea::ConnectTo) },
//{ 0x01D38960, "_ZN8CNavArea9ConnectToEPS_10NavDirType", mfunc_ptr_cast(&CNavArea::ConnectTo) },
//{ 0x01D389D0, "_ZN8CNavArea10DisconnectEPS_", mfunc_ptr_cast(&CNavArea::Disconnect) }, // NOXREF
//{ 0x0, "_ZN8CNavArea11FinishMergeEPS_", mfunc_ptr_cast(&CNavArea::FinishMerge) },
//{ 0x0, "_ZN8CNavArea24MergeAdjacentConnectionsEPS_", mfunc_ptr_cast(&CNavArea::MergeAdjacentConnections) },
//{ 0x01D38D70, "_ZN8CNavArea11AssignNodesEPS_", mfunc_ptr_cast(&CNavArea::AssignNodes) },
//{ 0x0, "_ZN8CNavArea9SplitEditEbfPPS_S1_", mfunc_ptr_cast(&CNavArea::SplitEdit) },
//{ 0x01D390F0, "_ZNK8CNavArea11IsConnectedEPKS_10NavDirType", mfunc_ptr_cast(&CNavArea::IsConnected) },
//{ 0x0, "_ZN8CNavArea19ComputeHeightChangeEPKS_", mfunc_ptr_cast(&CNavArea::ComputeHeightChange) },
//{ 0x0, "_ZN8CNavArea15FinishSplitEditEPS_10NavDirType", mfunc_ptr_cast(&CNavArea::FinishSplitEdit) },
//{ 0x0, "_ZN8CNavArea10SpliceEditEPS_", mfunc_ptr_cast(&CNavArea::SpliceEdit) },
//{ 0x0, "_ZN8CNavArea9MergeEditEPS_", mfunc_ptr_cast(&CNavArea::MergeEdit) },
//{ 0x0, "_ZN8CNavArea5StripEv", mfunc_ptr_cast(&CNavArea::Strip) },
{ 0x01D38A40, "_ZN8CNavArea11FinishMergeEPS_", mfunc_ptr_cast(&CNavArea::FinishMerge) },
{ 0x01D38B60, "_ZN8CNavArea24MergeAdjacentConnectionsEPS_", mfunc_ptr_cast(&CNavArea::MergeAdjacentConnections) },
//{ 0x01D38D70, "_ZN8CNavArea11AssignNodesEPS_", mfunc_ptr_cast(&CNavArea::AssignNodes) }, // NOXREF
{ 0x01D38DC0, "_ZN8CNavArea9SplitEditEbfPPS_S1_", mfunc_ptr_cast(&CNavArea::SplitEdit) },
{ 0x01D390F0, "_ZNK8CNavArea11IsConnectedEPKS_10NavDirType", mfunc_ptr_cast(&CNavArea::IsConnected) },
{ 0x01D391B0, "_ZN8CNavArea19ComputeHeightChangeEPKS_", mfunc_ptr_cast(&CNavArea::ComputeHeightChange) },
{ 0x01D391E0, "_ZN8CNavArea15FinishSplitEditEPS_10NavDirType", mfunc_ptr_cast(&CNavArea::FinishSplitEdit) },
{ 0x01D39500, "_ZN8CNavArea10SpliceEditEPS_", mfunc_ptr_cast(&CNavArea::SpliceEdit) },
{ 0x01D39CA0, "_ZN8CNavArea9MergeEditEPS_", mfunc_ptr_cast(&CNavArea::MergeEdit) },
//{ 0x01D3A290, "_ZN8CNavArea5StripEv", mfunc_ptr_cast(&CNavArea::Strip) }, // NOXREF
{ 0x01D3C6C0, "_ZNK8CNavArea13IsOverlappingEPK6Vector", mfunc_ptr_cast<OVERLAP_VECTOR>(&CNavArea::IsOverlapping) },
//{ 0x0, "_ZNK8CNavArea13IsOverlappingEPKS_", mfunc_ptr_cast<OVERLAP_CNAV>(&CNavArea::IsOverlapping) },
//{ 0x0, "_ZNK8CNavArea14IsOverlappingXEPKS_", mfunc_ptr_cast(&CNavArea::IsOverlappingX) },
//{ 0x0, "_ZNK8CNavArea14IsOverlappingYEPKS_", mfunc_ptr_cast(&CNavArea::IsOverlappingY) },
//{ 0x01D3C7C0, "_ZNK8CNavArea8ContainsEPK6Vector", mfunc_ptr_cast(&CNavArea::Contains) },
//{ 0x0, "_ZNK8CNavArea10IsCoplanarEPKS_", mfunc_ptr_cast(&CNavArea::IsCoplanar) },
{ 0x01D3C710, "_ZNK8CNavArea13IsOverlappingEPKS_", mfunc_ptr_cast<OVERLAP_CNAV>(&CNavArea::IsOverlapping) },
//{ 0x01D3C760, "_ZNK8CNavArea14IsOverlappingXEPKS_", mfunc_ptr_cast(&CNavArea::IsOverlappingX) }, // NOXREF
//{ 0x01D3C790, "_ZNK8CNavArea14IsOverlappingYEPKS_", mfunc_ptr_cast(&CNavArea::IsOverlappingY) }, // NOXREF
{ 0x01D3C7C0, "_ZNK8CNavArea8ContainsEPK6Vector", mfunc_ptr_cast(&CNavArea::Contains) },
{ 0x01D3C8B0, "_ZNK8CNavArea10IsCoplanarEPKS_", mfunc_ptr_cast(&CNavArea::IsCoplanar) },
//!@{ 0x01D3CA60, "_ZNK8CNavArea4GetZEPK6Vector", mfunc_ptr_cast<GETZ_VECTOR>(&CNavArea::GetZ) }, // Used refs
//{ 0x0, "_ZNK8CNavArea4GetZEff", mfunc_ptr_cast<GETZ_TWO_FLOAT>(&CNavArea::GetZ) },
//{ 0x01D3CB50, "_ZNK8CNavArea4GetZEff", mfunc_ptr_cast<GETZ_TWO_FLOAT>(&CNavArea::GetZ) }, // NOXREF
{ 0x01D3CB80, "_ZNK8CNavArea21GetClosestPointOnAreaEPK6VectorPS0_", mfunc_ptr_cast(&CNavArea::GetClosestPointOnArea) },
//{ 0x0, "_ZNK8CNavArea25GetDistanceSquaredToPointEPK6Vector", mfunc_ptr_cast(&CNavArea::GetDistanceSquaredToPoint) },
//{ 0x0, "_ZNK8CNavArea21GetRandomAdjacentAreaE10NavDirType", mfunc_ptr_cast(&CNavArea::GetRandomAdjacentArea) },
//{ 0x0, "_ZNK8CNavArea13ComputePortalEPKS_10NavDirTypeP6VectorPf", mfunc_ptr_cast(&CNavArea::ComputePortal) },
//{ 0x0, "_ZNK8CNavArea27ComputeClosestPointInPortalEPKS_10NavDirTypePK6VectorPS3_", mfunc_ptr_cast(&CNavArea::ComputeClosestPointInPortal) },
//{ 0x0, "_ZNK8CNavArea6IsEdgeE10NavDirType", mfunc_ptr_cast(&CNavArea::IsEdge) },
//{ 0x0, "_ZNK8CNavArea16ComputeDirectionEP6Vector", mfunc_ptr_cast(&CNavArea::ComputeDirection) },
//{ 0x0, "_ZN8CNavArea4DrawEhhhi", mfunc_ptr_cast(&CNavArea::Draw) },
//{ 0x0, "_ZN8CNavArea16DrawMarkedCornerE13NavCornerTypehhhi", mfunc_ptr_cast(&CNavArea::DrawMarkedCorner) },
//{ 0x0, "_ZN8CNavArea13AddToOpenListEv", mfunc_ptr_cast(&CNavArea::AddToOpenList) },
//{ 0x0, "_ZN8CNavArea16UpdateOnOpenListEv", mfunc_ptr_cast(&CNavArea::UpdateOnOpenList) },
//{ 0x01D3DBC0, "_ZN8CNavArea18RemoveFromOpenListEv", mfunc_ptr_cast(&CNavArea::RemoveFromOpenList) },
//{ 0x01D3DC10, "_ZN8CNavArea16ClearSearchListsEv", mfunc_ptr_cast(&CNavArea::ClearSearchLists) },
//{ 0x0, "_ZNK8CNavArea9GetCornerE13NavCornerType", mfunc_ptr_cast(&CNavArea::GetCorner) },
//{ 0x0, "_ZNK8CNavArea21IsHidingSpotCollisionEPK6Vector", mfunc_ptr_cast(&CNavArea::IsHidingSpotCollision) },
//{ 0x0, "_ZN8CNavArea18ComputeHidingSpotsEv", mfunc_ptr_cast(&CNavArea::ComputeHidingSpots) },
//{ 0x0, "_ZN8CNavArea18ComputeSniperSpotsEv", mfunc_ptr_cast(&CNavArea::ComputeSniperSpots) },
//{ 0x0, "_ZN8CNavArea16GetSpotEncounterEPKS_S1_", mfunc_ptr_cast(&CNavArea::GetSpotEncounter) },
//{ 0x0, "_ZN8CNavArea17AddSpotEncountersEPKS_10NavDirTypeS1_S2_", mfunc_ptr_cast(&CNavArea::AddSpotEncounters) },
//{ 0x0, "_ZN8CNavArea21ComputeSpotEncountersEv", mfunc_ptr_cast(&CNavArea::ComputeSpotEncounters) },
//{ 0x01D3ED20, "_ZN8CNavArea11DecayDangerEv", mfunc_ptr_cast(&CNavArea::DecayDanger) },
//{ 0x0, "_ZN8CNavArea14IncreaseDangerEif", mfunc_ptr_cast(&CNavArea::IncreaseDanger) },
//{ 0x0, "_ZN8CNavArea9GetDangerEi", mfunc_ptr_cast(&CNavArea::GetDanger) },
//{ 0x0, "_ZNK8CNavArea14GetPlayerCountEiP11CBasePlayer", mfunc_ptr_cast(&CNavArea::GetPlayerCount) },
//{ 0x01D40340, "_ZN8CNavArea18DrawConnectedAreasEv", mfunc_ptr_cast(&CNavArea::DrawConnectedAreas) },
//{ 0x0, "_ZN8CNavArea11RaiseCornerE13NavCornerTypei", mfunc_ptr_cast(&CNavArea::RaiseCorner) },
//{ 0x0, "_ZN8CNavArea20ComputeApproachAreasEv", mfunc_ptr_cast(&CNavArea::ComputeApproachAreas) },
//{ 0x01D3CCD0, "_ZNK8CNavArea25GetDistanceSquaredToPointEPK6Vector", mfunc_ptr_cast(&CNavArea::GetDistanceSquaredToPoint) }, // NOXREF
//{ 0x01D3CDF0, "_ZNK8CNavArea21GetRandomAdjacentAreaE10NavDirType", mfunc_ptr_cast(&CNavArea::GetRandomAdjacentArea) }, // NOXREF
{ 0x01D3CE40, "_ZNK8CNavArea13ComputePortalEPKS_10NavDirTypeP6VectorPf", mfunc_ptr_cast(&CNavArea::ComputePortal) },
{ 0x01D3CFD0, "_ZNK8CNavArea27ComputeClosestPointInPortalEPKS_10NavDirTypePK6VectorPS3_", mfunc_ptr_cast(&CNavArea::ComputeClosestPointInPortal) },
//{ 0x01D3D280, "_ZNK8CNavArea6IsEdgeE10NavDirType", mfunc_ptr_cast(&CNavArea::IsEdge) }, // NOXREF
{ 0x01D3D310, "_ZNK8CNavArea16ComputeDirectionEP6Vector", mfunc_ptr_cast(&CNavArea::ComputeDirection) },
{ 0x01D3D420, "_ZN8CNavArea4DrawEhhhi", mfunc_ptr_cast(&CNavArea::Draw) },
{ 0x01D3D860, "_ZN8CNavArea16DrawMarkedCornerE13NavCornerTypehhhi", mfunc_ptr_cast(&CNavArea::DrawMarkedCorner) },
{ 0x01D3DAB0, "_ZN8CNavArea13AddToOpenListEv", mfunc_ptr_cast(&CNavArea::AddToOpenList) },
{ 0x01D3DB50, "_ZN8CNavArea16UpdateOnOpenListEv", mfunc_ptr_cast(&CNavArea::UpdateOnOpenList) },
{ 0x01D3DBC0, "_ZN8CNavArea18RemoveFromOpenListEv", mfunc_ptr_cast(&CNavArea::RemoveFromOpenList) },
{ 0x01D3DC10, "_ZN8CNavArea16ClearSearchListsEv", mfunc_ptr_cast(&CNavArea::ClearSearchLists) },
{ 0x01D3DC40, "_ZNK8CNavArea9GetCornerE13NavCornerType", mfunc_ptr_cast(&CNavArea::GetCorner) },
{ 0x01D3DCF0, "_ZNK8CNavArea21IsHidingSpotCollisionEPK6Vector", mfunc_ptr_cast(&CNavArea::IsHidingSpotCollision) },
{ 0x01D3DD50, "_Z19IsHidingSpotInCoverPK6Vector", (size_t)&IsHidingSpotInCover },
{ 0x01D3DEA0, "_ZN8CNavArea18ComputeHidingSpotsEv", mfunc_ptr_cast(&CNavArea::ComputeHidingSpots) },
{ 0x01D3E790, "_ZN8CNavArea18ComputeSniperSpotsEv", mfunc_ptr_cast(&CNavArea::ComputeSniperSpots) },
{ 0x01D3E7D0, "_ZN8CNavArea16GetSpotEncounterEPKS_S1_", mfunc_ptr_cast(&CNavArea::GetSpotEncounter) },
{ 0x01D3E810, "_ZN8CNavArea17AddSpotEncountersEPKS_10NavDirTypeS1_S2_", mfunc_ptr_cast(&CNavArea::AddSpotEncounters) },
{ 0x01D3EC50, "_ZN8CNavArea21ComputeSpotEncountersEv", mfunc_ptr_cast(&CNavArea::ComputeSpotEncounters) },
{ 0x01D3ED20, "_ZN8CNavArea11DecayDangerEv", mfunc_ptr_cast(&CNavArea::DecayDanger) },
{ 0x01D3ED60, "_ZN8CNavArea14IncreaseDangerEif", mfunc_ptr_cast(&CNavArea::IncreaseDanger) },
{ 0x01D3EDC0, "_ZN8CNavArea9GetDangerEi", mfunc_ptr_cast(&CNavArea::GetDanger) },
{ 0x01D40110, "_ZNK8CNavArea14GetPlayerCountEiP11CBasePlayer", mfunc_ptr_cast(&CNavArea::GetPlayerCount) },
{ 0x01D40340, "_ZN8CNavArea18DrawConnectedAreasEv", mfunc_ptr_cast(&CNavArea::DrawConnectedAreas) },
{ 0x01D40870, "_ZN8CNavArea11RaiseCornerE13NavCornerTypei", mfunc_ptr_cast(&CNavArea::RaiseCorner) },
{ 0x01D427C0, "_ZN8CNavArea20ComputeApproachAreasEv", mfunc_ptr_cast(&CNavArea::ComputeApproachAreas) },
//{ 0x0, "", mfunc_ptr_cast(&CollectHidingSpotsFunctor::CollectHidingSpotsFunctor) },
//{ 0x0, "_ZN25CollectHidingSpotsFunctor10RemoveSpotEi", mfunc_ptr_cast(&CollectHidingSpotsFunctor::RemoveSpot) },
//{ 0x0, "", mfunc_ptr_cast(&CNavAreaGrid::CNavAreaGrid) },
//{ 0x0, "", mfunc_ptr_cast(&CNavAreaGrid::~CNavAreaGrid) },
//{ 0x01D43000, "", mfunc_ptr_cast(&CNavAreaGrid::CNavAreaGrid) }, // NOXREF
//{ 0x01D43090, "", mfunc_ptr_cast(&CNavAreaGrid::~CNavAreaGrid) }, // NOXREF
//{ 0x01D43180, "_ZN12CNavAreaGrid5ResetEv", mfunc_ptr_cast(&CNavAreaGrid::Reset) }, // NOXREF
//{ 0x0, "_ZN12CNavAreaGrid10InitializeEffff", mfunc_ptr_cast(&CNavAreaGrid::Initialize) },
//{ 0x0, "_ZN12CNavAreaGrid10AddNavAreaEP8CNavArea", mfunc_ptr_cast(&CNavAreaGrid::AddNavArea) },
//{ 0x01D43560, "_ZN12CNavAreaGrid13RemoveNavAreaEP8CNavArea", mfunc_ptr_cast(&CNavAreaGrid::RemoveNavArea) },
{ 0x01D43360, "_ZN12CNavAreaGrid10InitializeEffff", mfunc_ptr_cast(&CNavAreaGrid::Initialize) },
{ 0x01D43390, "_ZN12CNavAreaGrid10AddNavAreaEP8CNavArea", mfunc_ptr_cast(&CNavAreaGrid::AddNavArea) },
{ 0x01D43560, "_ZN12CNavAreaGrid13RemoveNavAreaEP8CNavArea", mfunc_ptr_cast(&CNavAreaGrid::RemoveNavArea) },
//!@{ 0x01D43710, "_ZNK12CNavAreaGrid10GetNavAreaEPK6Vectorf", mfunc_ptr_cast(&CNavAreaGrid::GetNavArea) }, // Used refs
//!@{ 0x01D43860, "_ZNK12CNavAreaGrid17GetNearestNavAreaEPK6Vectorb", mfunc_ptr_cast(&CNavAreaGrid::GetNearestNavArea) }, // Used refs
//{ 0x0, "_ZNK12CNavAreaGrid14GetNavAreaByIDEj", mfunc_ptr_cast(&CNavAreaGrid::GetNavAreaByID) },
{ 0x01D439F0, "_ZNK12CNavAreaGrid8GetPlaceEPK6Vector", mfunc_ptr_cast(&CNavAreaGrid::GetPlace) },
//{ 0x0, "_Z19IsHidingSpotInCoverPK6Vector", (size_t)&IsHidingSpotInCover },
//{ 0x0, "_Z18ClassifySniperSpotP10HidingSpot", (size_t)&ClassifySniperSpot },
{ 0x01D3E4F0, "_Z18ClassifySniperSpotP10HidingSpot", (size_t)&ClassifySniperSpot },
//{ 0x0, "", (size_t)&buildGoodSizedList }, // NOXREF
{ 0x01D37CF0, "_Z18DestroyHidingSpotsv", (size_t)&DestroyHidingSpots },
//{ 0x01D40920, "_Z12EditNavAreas14NavEditCmdType", (size_t)&EditNavAreas },
{ 0x01D40920, "_Z12EditNavAreas14NavEditCmdType", (size_t)&EditNavAreas },
{ 0x01D42540, "_Z15GetGroundHeightPK6VectorPfPS_", (size_t)&GetGroundHeight },
{ 0x01D42740, "_Z21GetSimpleGroundHeightPK6VectorPfPS_", (size_t)&GetSimpleGroundHeight },
//{ 0x0, "", (size_t)&IsAreaVisible }, // NOXREF
//{ 0x01D40250, "_Z13GetMarkedAreav", (size_t)&GetMarkedArea },
{ 0x01D40250, "_Z13GetMarkedAreav", (size_t)&GetMarkedArea },
//{ 0x01D40260, "_Z17EditNavAreasResetv", (size_t)&EditNavAreasReset }, // NOXREF
//{ 0x0, "_Z15DrawHidingSpotsPK8CNavArea", (size_t)&DrawHidingSpots },
//{ 0x01D3EE10, "_Z20IncreaseDangerNearbyifP8CNavAreaPK6Vectorf", (size_t)&IncreaseDangerNearby },
//{ 0x01D3F020, "_Z10DrawDangerv", (size_t)&DrawDanger },
{ 0x01D40290, "_Z15DrawHidingSpotsPK8CNavArea", (size_t)&DrawHidingSpots },
{ 0x01D3EE10, "_Z20IncreaseDangerNearbyifP8CNavAreaPK6Vectorf", (size_t)&IncreaseDangerNearby },
{ 0x01D3F020, "_Z10DrawDangerv", (size_t)&DrawDanger },
{ 0x01D3F1C0, "_Z14IsSpotOccupiedP11CBaseEntityPK6Vector", (size_t)&IsSpotOccupied },
//{ 0x0, "_Z20FindNearbyHidingSpotP11CBaseEntityPK6VectorP8CNavAreafbb", (size_t)&FindNearbyHidingSpot },
//{ 0x01D3FDE0, "_Z21FindNearbyRetreatSpotP11CBaseEntityPK6VectorP8CNavAreafib", mfunc_ptr_cast<FIND_SPOT_CBASE>(&FindNearbyRetreatSpot) },
{ 0x01D3F2A0, "_Z20FindNearbyHidingSpotP11CBaseEntityPK6VectorP8CNavAreafbb", (size_t)&FindNearbyHidingSpot },
{ 0x01D3FDE0, "_Z21FindNearbyRetreatSpotP11CBaseEntityPK6VectorP8CNavAreafib", mfunc_ptr_cast<FIND_SPOT_CBASE>(&FindNearbyRetreatSpot) },
//{ 0x0, "_Z20IsCrossingLineOfFireRK6VectorS1_P11CBaseEntityi", (size_t)&IsCrossingLineOfFire },
//{ 0x0, "_Z20FindRandomHidingSpotP11CBaseEntityjb", (size_t)&FindRandomHidingSpot },
//{ 0x01D37FB0, "_Z17GetHidingSpotByIDj", (size_t)&GetHidingSpotByID },
{ 0x01D3F850, "_Z20FindRandomHidingSpotP11CBaseEntityjb", (size_t)&FindRandomHidingSpot },
{ 0x01D37FB0, "_Z17GetHidingSpotByIDj", (size_t)&GetHidingSpotByID },
{ 0x01D39F30, "_Z24ApproachAreaAnalysisPrepv", (size_t)&ApproachAreaAnalysisPrep },
{ 0x01D39FD0, "_Z31CleanupApproachAreaAnalysisPrepv", (size_t)&CleanupApproachAreaAnalysisPrep },
//{ 0x01D3A010, "_Z14DestroyLaddersv", (size_t)&DestroyLadders }, // NOXREF
//{ 0x01D3A060, "_Z20DestroyNavigationMapv", (size_t)&DestroyNavigationMap },
//!@{ 0x01D3A210, "_Z20StripNavigationAreasv", (size_t)&StripNavigationAreas },
//{ 0x0, "", (size_t)&FindFirstAreaInDirection }, // NOXREF
//{ 0x0, "", (size_t)&testJumpDown }, // NOXREF
{ 0x01D3A060, "_Z20DestroyNavigationMapv", (size_t)&DestroyNavigationMap },
{ 0x01D3A210, "_Z20StripNavigationAreasv", (size_t)&StripNavigationAreas },
#ifdef _WIN32
{ 0x01D3A870, "", (size_t)&FindFirstAreaInDirection },
{ 0x01D3A9E0, "", (size_t)&testJumpDown }, // NOXREF
{ 0x01D3AD20, "", (size_t)&IsAreaRoughlySquare }, // NOXREF
#endif // _WIN32
//{ 0x0, "", (size_t)&findJumpDownArea }, // NOXREF
//{ 0x0, "_Z21ConnectGeneratedAreasv", (size_t)&ConnectGeneratedAreas },
//{ 0x0, "_Z19MergeGeneratedAreasv", (size_t)&MergeGeneratedAreas },
//{ 0x0, "", (size_t)&IsAreaRoughlySquare }, // NOXREF
{ 0x01D3A330, "_Z21ConnectGeneratedAreasv", (size_t)&ConnectGeneratedAreas },
{ 0x01D3AAF0, "_Z19MergeGeneratedAreasv", (size_t)&MergeGeneratedAreas },
//{ 0x0, "_Z6SplitXP8CNavArea", (size_t)&SplitX },
//{ 0x0, "_Z6SplitYP8CNavArea", (size_t)&SplitY },
//{ 0x0, "_Z13SquareUpAreasv", (size_t)&SquareUpAreas },
//{ 0x0, "_Z8TestAreaP8CNavNodeii", (size_t)&TestArea },
//{ 0x0, "_Z9BuildAreaP8CNavNodeii", (size_t)&BuildArea },
//!@{ 0x01D3B3F0, "_Z12BuildLaddersv", (size_t)&BuildLadders },
//{ 0x0, "_Z13MarkJumpAreasv", (size_t)&MarkJumpAreas },
//{ 0x0, "_Z26GenerateNavigationAreaMeshv", (size_t)&GenerateNavigationAreaMesh },
{ 0x01D3B100, "_Z8TestAreaP8CNavNodeii", (size_t)&TestArea },
{ 0x01D3B2E0, "_Z9BuildAreaP8CNavNodeii", (size_t)&BuildArea },
{ 0x01D3B3F0, "_Z12BuildLaddersv", (size_t)&BuildLadders },
{ 0x01D3C1B0, "_Z13MarkJumpAreasv", (size_t)&MarkJumpAreas },
{ 0x01D3C280, "_Z26GenerateNavigationAreaMeshv", (size_t)&GenerateNavigationAreaMesh },
#endif // Nav_Region
@ -5578,7 +5580,6 @@ AddressRef g_FunctionRefs[] =
{ 0x01D19C70, "_ZN9BotPhrase9RandomizeEv", (size_t)&pBotPhrase__Randomize },
{ 0x01D25270, "_ZN13CCSBotManager6AddBotEPK10BotProfile18BotProfileTeamType", (size_t)&pCCSBotManager__AddBot },
{ 0x01D3A060, "_Z20DestroyNavigationMapv", (size_t)&pDestroyNavigationMap },
{ 0x01D80C90, "_Z16InstallGameRulesv", (size_t)&pInstallGameRules },
{ 0x01D4C450, "_ZN8CHostage9IdleThinkEv", (size_t)&pCHostage__IdleThink },
{ 0x01D517A0, "_ZN14CHostageImprov11FaceTowardsERK6Vectorf", (size_t)&pCHostageImprov__FaceTowards },
@ -6023,10 +6024,9 @@ AddressRef g_DataRefs[] =
{ 0x01E23470, "cv_tutor_hint_interval_time", (size_t)&pcv_tutor_hint_interval_time },
{ 0x01E11EE4, "cv_hostage_debug", (size_t)&pcv_hostage_debug },
{ 0x01E11EF8, "cv_hostage_stop", (size_t)&pcv_hostage_stop },
//{ 0x0, "_ZL14placeDirectory", (size_t)&pplaceDirectory },
{ 0x01E2A0E4, "TheNavLadderList", (size_t)&pTheNavLadderList },
{ 0x01E2A0F4, "TheHidingSpotList", (size_t)&pTheHidingSpotList },
{ 0x01E2A0F0, "TheHidingSpotList", (size_t)&pTheHidingSpotList },
{ 0x01E14C5C, "sPlayerModelFiles", (size_t)&psPlayerModelFiles },
{ 0x01E5D6F0, "g_flTimeLimit", (size_t)&pg_flTimeLimit },
{ 0x01E5D6F4, "g_flResetTime", (size_t)&pg_flResetTime },
@ -6045,9 +6045,12 @@ AddressRef g_DataRefs[] =
{ 0x01E2A0D8, "TheNavAreaList", (size_t)&pTheNavAreaList },
{ 0x01E29888, "TheNavAreaGrid", (size_t)&pTheNavAreaGrid },
{ 0x01E2A250, "_ZN8CNavNode6m_listE", mfunc_ptr_cast(&CNavNode::pm_list) },
{ 0x01E2A254, "_ZN8CNavNode12m_listLengthE", mfunc_ptr_cast(&CNavNode::pm_listLength) },
//{ 0x0, "_ZN8CNavArea8m_nextIDE", mfunc_ptr_cast(&CNavArea::m_nextID) },
{ 0x01E11584, "_ZN8CNavArea14m_masterMarkerE", mfunc_ptr_cast(&CNavArea::pm_masterMarker) },
{ 0x01E11588, "_ZN10HidingSpot8m_nextIDE", mfunc_ptr_cast(&HidingSpot::pm_nextID) },
{ 0x01E2A108, "_ZN10HidingSpot14m_masterMarkerE", mfunc_ptr_cast(&HidingSpot::pm_masterMarker) },
{ 0x01E11580, "_ZN8CNavArea8m_nextIDE", mfunc_ptr_cast(&CNavArea::pm_nextID) },
//{ 0x0, "_ZN10HidingSpot14m_masterMarkerE", mfunc_ptr_cast(&HidingSpot::m_masterMarker) },
{ 0x01E2A100, "_ZN8CNavArea9m_isResetE", mfunc_ptr_cast(&CNavArea::pm_isReset) },
@ -6060,48 +6063,38 @@ AddressRef g_DataRefs[] =
{ 0x01E2A110, "_ZL16lastSelectedArea", (size_t)&plastSelectedArea },
{ 0x01E1158C, "_ZL12markedCorner", (size_t)&pmarkedCorner },
{ 0x01E2A114, "_ZL17isCreatingNavArea", (size_t)&pisCreatingNavArea },
//{ 0x0, "isAnchored", (size_t)&pisAnchored },
//{ 0x0, "anchor", (size_t)&panchor },
//{ 0x0, "isPlaceMode", (size_t)&pisPlaceMode },
{ 0x01E2A115, "_ZL10isAnchored", (size_t)&pisAnchored },
{ 0x01E2A0C8, "_ZL6anchor", (size_t)&panchor },
{ 0x01E2A116, "_ZL11isPlaceMode", (size_t)&pisPlaceMode },
{ 0x01E2A117, "_ZL15isPlacePainting", (size_t)&pisPlacePainting },
{ 0x01E29CA4, "_ZL9BlockedID", (size_t)&pBlockedID },
{ 0x01E2A120, "_ZL14BlockedIDCount", (size_t)&pBlockedIDCount },
{ 0x01E14988, "_ZL14gFunctionTable", (size_t)&pgFunctionTable },
{ 0x01E14A50, "gNewDLLFunctions", (size_t)&pgNewDLLFunctions },
{ 0x01E28810, "TheBots", (size_t)&pTheBots },
{ 0x01E24950, "_ZL8taskInfo", (size_t)&ptaskInfo },
{ 0x01E76594, "TheCareerTasks", (size_t)&pTheCareerTasks },
{ 0x01E28C7C, "TheBotProfiles", (size_t)&pTheBotProfiles },
{ 0x01E287CC, "g_pSelectedZombieSpawn", (size_t)&pg_pSelectedZombieSpawn },
{ 0x01E287F0, "TheBotPhrases", (size_t)&pTheBotPhrases },
{ 0x01E7657C, "TheTutor", (size_t)&pTheTutor },
{ 0x01E2A25C, "g_pHostages", (size_t)&pg_pHostages },
{ 0x01E2A258, "g_iHostageNumber", (size_t)&pg_iHostageNumber },
{ 0x01E16EE0, "_ZL11outputLevel", (size_t)&poutputLevel },
{ 0x01E61B40, "_ZL19theDebugOutputTypes", (size_t)&ptheDebugOutputTypes },
{ 0x01E61740, "_ZL14theDebugBuffer", (size_t)&ptheDebugBuffer },
{ 0x01E75D04, "_ZL9g_LessCtx", (size_t)&pg_LessCtx },
{ 0x01E62670, "g_pevLastInflictor", (size_t)&pg_pevLastInflictor },
{ 0x01E62788, "g_pLastSpawn", (size_t)&pg_pLastSpawn },
{ 0x01E63590, "g_pLastCTSpawn", (size_t)&pg_pLastCTSpawn },
{ 0x01E63594, "g_pLastTerroristSpawn", (size_t)&pg_pLastTerroristSpawn },
{ 0x01E62990, "_ZL11zombieSpawn", (size_t)&pzombieSpawn },
{ 0x01E636E8, "_ZL16zombieSpawnCount", (size_t)&pzombieSpawnCount },
{ 0x01E13838, "svBlending", (size_t)&psvBlending },
{ 0x01E312D0, "IEngineStudio", (size_t)&pIEngineStudio },
{ 0x01E2DAA8, "g_pstudiohdr", (size_t)&pg_pstudiohdr },
{ 0x01E2F8C0, "g_pRotationMatrix", (size_t)&pg_pRotationMatrix },
{ 0x01E2F8B0, "g_pBoneTransform", (size_t)&pg_pBoneTransform },
{ 0x01E2F8BC, "omega", (size_t)&pomega },
{ 0x01E312E0, "cosom", (size_t)&pcosom },
{ 0x01E306C8, "sinom", (size_t)&psinom },