//=========================================================================== // called everytime a map changes // // Parameter: - // Returns: - // Changes Globals: - //=========================================================================== int AAS_LoadMap(const char *mapname) { int errnum; //if no mapname is provided then the string indexes are updated if (!mapname) { return 0; } //end if // aasworld.initialized = qfalse; //NOTE: free the routing caches before loading a new map because // to free the caches the old number of areas, number of clusters // and number of areas in a clusters must be available AAS_FreeRoutingCaches(); //load the map errnum = AAS_LoadFiles(mapname); if (errnum != BLERR_NOERROR) { aasworld.loaded = qfalse; return errnum; } //end if // AAS_InitSettings(); //initialize the AAS link heap for the new map AAS_InitAASLinkHeap(); //initialize the AAS linked entities for the new map AAS_InitAASLinkedEntities(); //initialize reachability for the new map AAS_InitReachability(); //initialize the alternative routing AAS_InitAlternativeRouting(); //everything went ok return 0; } //end of the function AAS_LoadMap
int AAS_LoadMap(const char *mapname) { int errnum; int i; char this_mapname[256]; //, intstr[4]; qboolean loaded = qfalse; int missingErrNum = 0; for(i = 0; i < MAX_AAS_WORLDS; i++) { AAS_SetCurrentWorld(i); strncpy(this_mapname, mapname, 256); //strncat( this_mapname, "_b", 256 ); //sprintf( intstr, "%i", i ); //strncat( this_mapname, intstr, 256 ); //if no mapname is provided then the string indexes are updated if(!mapname) { return 0; } //end if // (*aasworld).initialized = qfalse; //NOTE: free the routing caches before loading a new map because // to free the caches the old number of areas, number of clusters // and number of areas in a clusters must be available AAS_FreeRoutingCaches(); //load the map errnum = AAS_LoadFiles(this_mapname); if(errnum != BLERR_NOERROR) { (*aasworld).loaded = qfalse; // RF, we are allowed to skip one of the files, but not both //return errnum; missingErrNum = errnum; continue; } //end if // loaded = qtrue; // AAS_InitSettings(); //initialize the AAS link heap for the new map AAS_InitAASLinkHeap(); //initialize the AAS linked entities for the new map AAS_InitAASLinkedEntities(); //initialize reachability for the new map AAS_InitReachability(); //initialize the alternative routing AAS_InitAlternativeRouting(); } if(!loaded) { return missingErrNum; } //everything went ok return 0; } //end of the function AAS_LoadMap
//=========================================================================== // // Parameter: - // Returns: - // Changes Globals: - //=========================================================================== void AAS_Shutdown(void) { // Ridah, do each of the worlds int i; for(i = 0; i < MAX_AAS_WORLDS; i++) { AAS_SetCurrentWorld(i); // Ridah, kill the route-table data AAS_RT_ShutdownRouteTable(); AAS_ShutdownAlternativeRouting(); AAS_DumpBSPData(); //free routing caches AAS_FreeRoutingCaches(); //free aas link heap AAS_FreeAASLinkHeap(); //free aas linked entities AAS_FreeAASLinkedEntities(); //free the aas data AAS_DumpAASData(); if(i == 0) { //free the entities if((*aasworld).entities) { FreeMemory((*aasworld).entities); } } //clear the (*aasworld) structure memset(&(*aasworld), 0, sizeof(aas_t)); //aas has not been initialized (*aasworld).initialized = qfalse; } //NOTE: as soon as a new .bsp file is loaded the .bsp file memory is // freed an reallocated, so there's no need to free that memory here //print shutdown botimport.Print(PRT_MESSAGE, "AAS shutdown.\n"); } //end of the function AAS_Shutdown
//=========================================================================== // // Parameter: - // Returns: - // Changes Globals: - //=========================================================================== void AAS_Shutdown(void) { AAS_ShutdownAlternativeRouting(); // AAS_DumpBSPData(); //free routing caches AAS_FreeRoutingCaches(); //free aas link heap AAS_FreeAASLinkHeap(); //free aas linked entities AAS_FreeAASLinkedEntities(); //free the aas data AAS_DumpAASData(); //free the entities if (aasworld.entities) FreeMemory(aasworld.entities); //clear the aasworld structure Com_Memset(&aasworld, 0, sizeof(aas_t)); //aas has not been initialized aasworld.initialized = qfalse; //NOTE: as soon as a new .bsp file is loaded the .bsp file memory is // freed an reallocated, so there's no need to free that memory here //print shutdown botimport.Print(PRT_MESSAGE, "AAS shutdown.\n"); } //end of the function AAS_Shutdown