/* * AI_InitEntitiesData */ void AI_InitEntitiesData( void ) { int newlinks, newjumplinks; edict_t *ent; if( !nav.num_nodes ) { if( g_numbots->integer ) trap_Cvar_Set( "g_numbots", "0" ); return; } // create nodes for navigable map entities ( must happen after finding teams ) for( ent = game.edicts + 1 + gs.maxclients; ENTNUM( ent ) < game.numentities; ent++ ) AI_AddNavigableEntity( ent ); // add all clients to goalEntities so they can be tracked as enemies for( ent = game.edicts + 1; PLAYERNUM( ent ) < gs.maxclients; ent++ ) AI_AddGoalEntity( ent ); // link all newly added nodes newlinks = AI_LinkServerNodes( nav.serverNodesStart ); newjumplinks = AI_LinkCloseNodes_JumpPass( nav.serverNodesStart ); if( developer->integer ) { G_Printf( " : added nodes:%i.\n", nav.num_nodes - nav.serverNodesStart ); G_Printf( " : total nodes:%i.\n", nav.num_nodes ); G_Printf( " : added links:%i.\n", newlinks ); G_Printf( " : added jump links:%i.\n", newjumplinks ); } G_Printf( " : AI Navigation Initialized.\n" ); nav.loaded = qtrue; }
//========================================== // AI_InitNavigationData // Setup nodes & links for this map //========================================== void AI_InitNavigationData(void) { int i; int newlinks; int newjumplinks; int linkscount; int servernodesstart = 0; //Init nodes arrays nav.num_nodes = 0; memset( nodes, 0, sizeof(nav_node_t) * MAX_NODES ); memset( pLinks, 0, sizeof(nav_plink_t) * MAX_NODES ); //Load nodes from file nav.loaded = AI_LoadPLKFile( level.mapname ); if( !nav.loaded ) { Com_Printf( "AI: FAILED to load nodes file.\n"); return; } servernodesstart = nav.num_nodes; for( linkscount = 0, i = 0; i< nav.num_nodes; i++ ) linkscount += pLinks[i].numLinks; //create nodes for map entities AI_CreateNodesForEntities(); newlinks = AI_LinkServerNodes( servernodesstart ); newjumplinks = AI_LinkCloseNodes_JumpPass( servernodesstart ); Com_Printf("-------------------------------------\n" ); Com_Printf(" : AI: Nodes Initialized.\n" ); Com_Printf(" : loaded nodes:%i.\n", servernodesstart ); Com_Printf(" : added nodes:%i.\n", nav.num_nodes - servernodesstart ); Com_Printf(" : total nodes:%i.\n", nav.num_nodes ); Com_Printf(" : loaded links:%i.\n", linkscount ); Com_Printf(" : added links:%i.\n", newlinks ); Com_Printf(" : added jump links:%i.\n", newjumplinks ); }