mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2024-12-03 09:22:55 +00:00
Added navmesh support
This commit is contained in:
parent
3aacf913d5
commit
7b82d5ca27
10 changed files with 111 additions and 29 deletions
|
@ -5,8 +5,10 @@
|
|||
#ifndef _FUNCTOR_UTILS_H_
|
||||
#define _FUNCTOR_UTILS_H_
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
#include "NextBotInterface.h"
|
||||
#include "NextBotManager.h"
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
|
@ -321,12 +323,14 @@ inline bool ForEachActor( Functor &func )
|
|||
if ( !player->IsConnected() )
|
||||
continue;
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
// skip bots - ForEachCombatCharacter will catch them
|
||||
INextBot *bot = player->MyNextBotPointer();
|
||||
if ( bot )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( func( player ) == false )
|
||||
{
|
||||
|
@ -334,8 +338,12 @@ inline bool ForEachActor( Functor &func )
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
// iterate all NextBots
|
||||
return TheNextBots().ForEachCombatCharacter( func );
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -385,12 +393,14 @@ inline bool ForEachActor( IActorFunctor &func )
|
|||
if ( !player->IsConnected() )
|
||||
continue;
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
// skip bots - ForEachCombatCharacter will catch them
|
||||
INextBot *bot = dynamic_cast< INextBot * >( player );
|
||||
if ( bot )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( func( player ) == false )
|
||||
{
|
||||
|
@ -399,11 +409,13 @@ inline bool ForEachActor( IActorFunctor &func )
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
if ( !isComplete )
|
||||
{
|
||||
// iterate all NextBots
|
||||
isComplete = TheNextBots().ForEachCombatCharacter( func );
|
||||
}
|
||||
#endif
|
||||
|
||||
func.OnEndIteration( isComplete );
|
||||
|
||||
|
|
|
@ -104,8 +104,11 @@ extern ConVar tf_mm_trusted;
|
|||
extern ConVar tf_mm_servermode;
|
||||
#endif
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
#ifdef USE_NAV_MESH
|
||||
#include "nav_mesh.h"
|
||||
#endif
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
#include "NextBotManager.h"
|
||||
#endif
|
||||
|
||||
|
@ -730,7 +733,7 @@ bool CServerGameDLL::DLLInit( CreateInterfaceFn appSystemFactory,
|
|||
debugoverlay = (IVDebugOverlay *)appSystemFactory( VDEBUG_OVERLAY_INTERFACE_VERSION, NULL );
|
||||
|
||||
#ifndef _XBOX
|
||||
#ifdef NEXT_BOT
|
||||
#ifdef USE_NAV_MESH
|
||||
// create the Navigation Mesh interface
|
||||
TheNavMesh = NavMeshFactory();
|
||||
#endif
|
||||
|
@ -776,7 +779,7 @@ void CServerGameDLL::DLLShutdown( void )
|
|||
#endif
|
||||
|
||||
#ifndef _XBOX
|
||||
#ifdef NEXT_BOT
|
||||
#ifdef USE_NAV_MESH
|
||||
// destroy the Navigation Mesh interface
|
||||
if ( TheNavMesh )
|
||||
{
|
||||
|
@ -1125,7 +1128,7 @@ void CServerGameDLL::ServerActivate( edict_t *pEdictList, int edictCount, int cl
|
|||
}
|
||||
|
||||
#ifndef _XBOX
|
||||
#ifdef NEXT_BOT
|
||||
#ifdef USE_NAV_MESH
|
||||
// load the Navigation Mesh for this map
|
||||
TheNavMesh->Load();
|
||||
TheNavMesh->OnServerActivate();
|
||||
|
@ -1220,9 +1223,11 @@ void CServerGameDLL::GameFrame( bool simulating )
|
|||
GameStartFrame();
|
||||
|
||||
#ifndef _XBOX
|
||||
#ifdef NEXT_BOT
|
||||
#ifdef USE_NAV_MESH
|
||||
TheNavMesh->Update();
|
||||
#endif
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
TheNextBots().Update();
|
||||
#endif
|
||||
|
||||
|
@ -1388,7 +1393,7 @@ void CServerGameDLL::LevelShutdown( void )
|
|||
g_nCurrentChapterIndex = -1;
|
||||
|
||||
#ifndef _XBOX
|
||||
#ifdef NEXT_BOT
|
||||
#ifdef USE_NAV_MESH
|
||||
// reset the Navigation Mesh
|
||||
if ( TheNavMesh )
|
||||
{
|
||||
|
|
|
@ -53,7 +53,7 @@ uint32 CNavArea::s_nCurrVisTestCounter = 0;
|
|||
ConVar nav_coplanar_slope_limit( "nav_coplanar_slope_limit", "0.99", FCVAR_CHEAT );
|
||||
ConVar nav_coplanar_slope_limit_displacement( "nav_coplanar_slope_limit_displacement", "0.7", FCVAR_CHEAT );
|
||||
ConVar nav_split_place_on_ground( "nav_split_place_on_ground", "0", FCVAR_CHEAT, "If true, nav areas will be placed flush with the ground when split." );
|
||||
ConVar nav_area_bgcolor( "nav_area_bgcolor", "0 0 0 30", FCVAR_CHEAT, "RGBA color to draw as the background color for nav areas while editing." );
|
||||
ConVar nav_area_bgcolor( "nav_area_bgcolor", "0 0 0 128", FCVAR_CHEAT, "RGBA color to draw as the background color for nav areas while editing." );
|
||||
ConVar nav_corner_adjust_adjacent( "nav_corner_adjust_adjacent", "18", FCVAR_CHEAT, "radius used to raise/lower corners in nearby areas when raising/lowering corners." );
|
||||
ConVar nav_show_light_intensity( "nav_show_light_intensity", "0", FCVAR_CHEAT );
|
||||
ConVar nav_debug_blocked( "nav_debug_blocked", "0", FCVAR_CHEAT );
|
||||
|
@ -2778,7 +2778,7 @@ void CNavArea::Draw( void ) const
|
|||
NavEditColor color;
|
||||
bool useAttributeColors = true;
|
||||
|
||||
const float DebugDuration = NDEBUG_PERSIST_TILL_NEXT_SERVER;
|
||||
const float DebugDuration = 0;
|
||||
|
||||
if ( TheNavMesh->IsEditMode( CNavMesh::PLACE_PAINTING ) )
|
||||
{
|
||||
|
@ -3146,7 +3146,7 @@ void CNavArea::DrawFilled( int r, int g, int b, int a, float deltaT, bool noDept
|
|||
//--------------------------------------------------------------------------------------------------------
|
||||
void CNavArea::DrawSelectedSet( const Vector &shift ) const
|
||||
{
|
||||
const float deltaT = NDEBUG_PERSIST_TILL_NEXT_SERVER;
|
||||
const float deltaT = 0;
|
||||
int r = s_selectedSetColor.r();
|
||||
int g = s_selectedSetColor.g();
|
||||
int b = s_selectedSetColor.b();
|
||||
|
@ -3173,7 +3173,7 @@ void CNavArea::DrawSelectedSet( const Vector &shift ) const
|
|||
//--------------------------------------------------------------------------------------------------------
|
||||
void CNavArea::DrawDragSelectionSet( Color &dragSelectionSetColor ) const
|
||||
{
|
||||
const float deltaT = NDEBUG_PERSIST_TILL_NEXT_SERVER;
|
||||
const float deltaT = 0;
|
||||
int r = dragSelectionSetColor.r();
|
||||
int g = dragSelectionSetColor.g();
|
||||
int b = dragSelectionSetColor.b();
|
||||
|
|
|
@ -313,10 +313,12 @@ public:
|
|||
bool HasAvoidanceObstacle( float maxObstructionHeight = StepHeight ) const; // is there a large, immobile object obstructing this area
|
||||
float GetAvoidanceObstacleHeight( void ) const; // returns the maximum height of the obstruction above the ground
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
bool HasPrerequisite( CBaseCombatCharacter *actor = NULL ) const; // return true if this area has a prerequisite that applies to the given actor
|
||||
const CUtlVector< CHandle< CFuncNavPrerequisite > > &GetPrerequisiteVector( void ) const; // return vector of prerequisites that must be met before this area can be traversed
|
||||
void RemoveAllPrerequisites( void );
|
||||
void AddPrerequisite( CFuncNavPrerequisite *prereq );
|
||||
#endif
|
||||
|
||||
void ClearAllNavCostEntities( void ); // clear set of func_nav_cost entities that affect this area
|
||||
void AddFuncNavCostEntity( CFuncNavCost *cost ); // add the given func_nav_cost entity to the cost of this area
|
||||
|
@ -722,7 +724,9 @@ private:
|
|||
|
||||
void CalcDebugID();
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
CUtlVector< CHandle< CFuncNavPrerequisite > > m_prerequisiteVector; // list of prerequisites that must be met before this area can be traversed
|
||||
#endif
|
||||
|
||||
CNavArea *m_prevHash, *m_nextHash; // for hash table in CNavMesh
|
||||
|
||||
|
@ -765,24 +769,31 @@ extern NavAreaVector TheNavAreas;
|
|||
//
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
#ifdef NEXT_BOT
|
||||
inline bool CNavArea::HasPrerequisite( CBaseCombatCharacter *actor ) const
|
||||
{
|
||||
return m_prerequisiteVector.Count() > 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
#ifdef NEXT_BOT
|
||||
inline const CUtlVector< CHandle< CFuncNavPrerequisite > > &CNavArea::GetPrerequisiteVector( void ) const
|
||||
{
|
||||
return m_prerequisiteVector;
|
||||
}
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
#ifdef NEXT_BOT
|
||||
inline void CNavArea::RemoveAllPrerequisites( void )
|
||||
{
|
||||
m_prerequisiteVector.RemoveAll();
|
||||
}
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
#ifdef NEXT_BOT
|
||||
inline void CNavArea::AddPrerequisite( CFuncNavPrerequisite *prereq )
|
||||
{
|
||||
if ( m_prerequisiteVector.Find( prereq ) == m_prerequisiteVector.InvalidIndex() )
|
||||
|
@ -790,6 +801,7 @@ inline void CNavArea::AddPrerequisite( CFuncNavPrerequisite *prereq )
|
|||
m_prerequisiteVector.AddToTail( prereq );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
inline float CNavArea::GetDangerDecayRate( void ) const
|
||||
|
|
|
@ -79,8 +79,8 @@ void NavDrawLine( const Vector& from, const Vector& to, NavEditColor navColor )
|
|||
const Vector offset( 0, 0, 1 );
|
||||
|
||||
Color color = NavColors[navColor];
|
||||
NDebugOverlay::Line( from + offset, to + offset, color[0]/2, color[1]/2, color[2]/2, true, 0.1f );
|
||||
NDebugOverlay::Line( from + offset, to + offset, color[0], color[1], color[2], false, 0.15f );
|
||||
NDebugOverlay::Line( from + offset, to + offset, color[0]/2, color[1]/2, color[2]/2, true, 0 );
|
||||
NDebugOverlay::Line( from + offset, to + offset, color[0], color[1], color[2], false, 0 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -103,7 +103,7 @@ void NavDrawFilledTriangle( const Vector& point1, const Vector& point2, const Ve
|
|||
color[1] = color[1] / 2;
|
||||
color[2] = color[2] / 2;
|
||||
}
|
||||
NDebugOverlay::Triangle( point1, point2, point3, color[0], color[1], color[2], 255, true, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::Triangle( point1, point2, point3, color[0], color[1], color[2], 255, true, 0 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -113,8 +113,8 @@ void NavDrawHorizontalArrow( const Vector& from, const Vector& to, float width,
|
|||
const Vector offset( 0, 0, 1 );
|
||||
|
||||
Color color = NavColors[navColor];
|
||||
NDebugOverlay::HorzArrow( from + offset, to + offset, width, color[0]/2, color[1]/2, color[2]/2, 255, true, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::HorzArrow( from + offset, to + offset, width, color[0], color[1], color[2], 255, false, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::HorzArrow( from + offset, to + offset, width, color[0]/2, color[1]/2, color[2]/2, 255, true, 0 );
|
||||
NDebugOverlay::HorzArrow( from + offset, to + offset, width, color[0], color[1], color[2], 255, false, 0 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -142,8 +142,8 @@ void NavDrawDashedLine( const Vector& from, const Vector& to, NavEditColor navCo
|
|||
|
||||
distance += solidLen + gapLen;
|
||||
|
||||
NDebugOverlay::Line( start + offset, end + offset, color[0]/2, color[1]/2, color[2]/2, true, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::Line( start + offset, end + offset, color[0], color[1], color[2], false, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::Line( start + offset, end + offset, color[0]/2, color[1]/2, color[2]/2, true, 0 );
|
||||
NDebugOverlay::Line( start + offset, end + offset, color[0], color[1], color[2], false, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -732,8 +732,10 @@ void CNavMesh::DrawEditMode( void )
|
|||
static ConVarRef host_thread_mode( "host_thread_mode" );
|
||||
host_thread_mode.SetValue( 0 );
|
||||
|
||||
#ifdef TERROR
|
||||
static ConVarRef sb_perf_collect( "sb_perf_collect" );
|
||||
sb_perf_collect.SetValue( 0 );
|
||||
#endif
|
||||
|
||||
const float maxRange = 1000.0f; // 500
|
||||
|
||||
|
@ -808,7 +810,7 @@ void CNavMesh::DrawEditMode( void )
|
|||
|
||||
if ( m_climbableSurface )
|
||||
{
|
||||
NDebugOverlay::Cross3D( m_editCursorPos, cursorSize, 0, 255, 0, true, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::Cross3D( m_editCursorPos, cursorSize, 0, 255, 0, true, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -823,19 +825,19 @@ void CNavMesh::DrawEditMode( void )
|
|||
|
||||
pos = m_editCursorPos;
|
||||
AddDirectionVector( &pos, NORTH, offset );
|
||||
NDebugOverlay::Text( pos, "N", false, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::Text( pos, "N", false, 0 );
|
||||
|
||||
pos = m_editCursorPos;
|
||||
AddDirectionVector( &pos, SOUTH, offset );
|
||||
NDebugOverlay::Text( pos, "S", false, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::Text( pos, "S", false, 0 );
|
||||
|
||||
pos = m_editCursorPos;
|
||||
AddDirectionVector( &pos, EAST, offset );
|
||||
NDebugOverlay::Text( pos, "E", false, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::Text( pos, "E", false, 0 );
|
||||
|
||||
pos = m_editCursorPos;
|
||||
AddDirectionVector( &pos, WEST, offset );
|
||||
NDebugOverlay::Text( pos, "W", false, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::Text( pos, "W", false, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -908,7 +910,7 @@ void CNavMesh::DrawEditMode( void )
|
|||
{
|
||||
V_snprintf( buffer, sizeof( buffer ), "Ladder #%d\n", m_selectedLadder->GetID() );
|
||||
}
|
||||
NDebugOverlay::ScreenText( 0.5, 0.53, buffer, 255, 255, 0, 128, nav_show_area_info.GetBool() ? 0.1 : 0.5 );
|
||||
NDebugOverlay::ScreenText( 0.5, 0.53, buffer, 255, 255, 0, 128, 0 );
|
||||
}
|
||||
|
||||
// draw the ladder we are pointing at and all connected areas
|
||||
|
@ -1003,7 +1005,7 @@ void CNavMesh::DrawEditMode( void )
|
|||
}
|
||||
|
||||
Q_snprintf( buffer, sizeof( buffer ), "Area #%d %s %s\n", m_selectedArea->GetID(), locName, attrib );
|
||||
NDebugOverlay::ScreenText( 0.5, 0.53, buffer, 255, 255, 0, 128, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
NDebugOverlay::ScreenText( 0.5, 0.53, buffer, 255, 255, 0, 128, 0 );
|
||||
|
||||
// do "place painting"
|
||||
if ( m_isPlacePainting )
|
||||
|
|
|
@ -380,7 +380,7 @@ int CFuncNavBlocker::DrawDebugTextOverlays( void )
|
|||
CNavArea *area = collector.m_area[i];
|
||||
Extent areaExtent;
|
||||
area->GetExtent( &areaExtent );
|
||||
debugoverlay->AddBoxOverlay( vec3_origin, areaExtent.lo, areaExtent.hi, vec3_angle, 0, 255, 0, 10, NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
debugoverlay->AddBoxOverlay( vec3_origin, areaExtent.lo, areaExtent.hi, vec3_angle, 0, 255, 0, 10, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -614,11 +614,11 @@ int CFuncNavObstruction::DrawDebugTextOverlays( void )
|
|||
{
|
||||
if ( CanObstructNavAreas() )
|
||||
{
|
||||
EntityText( offset++, "Obstructing nav", NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
EntityText( offset++, "Obstructing nav", 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
EntityText( offset++, "Not obstructing nav", NDEBUG_PERSIST_TILL_NEXT_SERVER );
|
||||
EntityText( offset++, "Not obstructing nav", 0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,13 +21,15 @@
|
|||
#endif
|
||||
#include "functorutils.h"
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
#include "NextBot/NavMeshEntities/func_nav_prerequisite.h"
|
||||
#endif
|
||||
|
||||
// NOTE: This has to be the last file included!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
|
||||
#define DrawLine( from, to, duration, red, green, blue ) NDebugOverlay::Line( from, to, red, green, blue, true, 0.1f )
|
||||
#define DrawLine( from, to, duration, red, green, blue ) NDebugOverlay::Line( from, to, red, green, blue, true, 0 )
|
||||
|
||||
|
||||
/**
|
||||
|
@ -571,6 +573,7 @@ void CNavMesh::OnServerActivate( void )
|
|||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
#ifdef NEXT_BOT
|
||||
class CRegisterPrerequisite
|
||||
{
|
||||
public:
|
||||
|
@ -587,6 +590,7 @@ public:
|
|||
|
||||
CFuncNavPrerequisite *m_prereq;
|
||||
};
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
|
@ -609,6 +613,7 @@ void CNavMesh::OnRoundRestart( void )
|
|||
{
|
||||
m_updateBlockedAreasTimer.Start( 1.0f );
|
||||
|
||||
#ifdef NEXT_BOT
|
||||
FOR_EACH_VEC( TheNavAreas, pit )
|
||||
{
|
||||
CNavArea *area = TheNavAreas[ pit ];
|
||||
|
@ -626,6 +631,7 @@ void CNavMesh::OnRoundRestart( void )
|
|||
|
||||
ForAllAreasOverlappingExtent( apply, prereqExtent );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -1420,7 +1426,7 @@ void CNavMesh::DrawPlayerCounts( void ) const
|
|||
|
||||
if (area->GetPlayerCount() > 0)
|
||||
{
|
||||
NDebugOverlay::Text( area->GetCenter(), msg.sprintf( "%d (%d/%d)", area->GetPlayerCount(), area->GetPlayerCount(1), area->GetPlayerCount(2) ), false, 0.1f );
|
||||
NDebugOverlay::Text( area->GetCenter(), msg.sprintf( "%d (%d/%d)", area->GetPlayerCount(), area->GetPlayerCount(1), area->GetPlayerCount(2) ), false, 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
44
mp/src/game/server/nav_mesh.vpc
Normal file
44
mp/src/game/server/nav_mesh.vpc
Normal file
|
@ -0,0 +1,44 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// NAV_MESH.VPC
|
||||
//
|
||||
// Project script for navigation mesh files (no NextBot files), used by Source
|
||||
// SDK HL2MP build
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
$Configuration
|
||||
{
|
||||
$Compiler
|
||||
{
|
||||
$PreprocessorDefinitions "$BASE;USE_NAV_MESH"
|
||||
}
|
||||
}
|
||||
|
||||
$Project
|
||||
{
|
||||
$Folder "Source Files"
|
||||
{
|
||||
$Folder "Nav Mesh"
|
||||
{
|
||||
$File "nav.h"
|
||||
$File "nav_area.cpp"
|
||||
$File "nav_area.h"
|
||||
$File "nav_colors.cpp"
|
||||
$File "nav_colors.h"
|
||||
$File "nav_edit.cpp"
|
||||
$File "nav_entities.cpp"
|
||||
$File "nav_entities.h"
|
||||
$File "nav_file.cpp"
|
||||
$File "nav_generate.cpp"
|
||||
$File "nav_ladder.cpp"
|
||||
$File "nav_ladder.h"
|
||||
$File "nav_merge.cpp"
|
||||
$File "nav_mesh.cpp"
|
||||
$File "nav_mesh.h"
|
||||
$File "nav_mesh_factory.cpp"
|
||||
$File "nav_node.cpp"
|
||||
$File "nav_node.h"
|
||||
$File "nav_pathfind.h"
|
||||
$File "nav_simplify.cpp"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,6 +9,7 @@ $Macro GAMENAME "hl2mp" [!$SOURCESDK]
|
|||
$Macro GAMENAME "mod_hl2mp" [$SOURCESDK]
|
||||
|
||||
$Include "$SRCDIR\game\server\server_base.vpc"
|
||||
$Include "$SRCDIR\game\server\nav_mesh.vpc" [$SOURCESDK]
|
||||
|
||||
$Configuration
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue