virtualvoidReset(void);///< destroy Navigation Mesh data and revert to initial state
virtualvoidUpdate(void);///< invoked on each game frame
virtualNavErrorTypeLoad(void);///< load navigation data from a file
boolIsLoaded(void)const{returnm_isLoaded;}///< return true if a Navigation Mesh has been loaded
virtualboolSave(void)const;///< store Navigation Mesh to a file
boolIsFromCurrentMap(void)const{returnm_isFromCurrentMap;}///< return true if the Navigation Mesh was last edited with the current map version
unsignedintGetNavAreaCount(void)const{returnm_areaCount;}///< return total number of nav areas
CNavArea*GetNavArea(constVector&pos,floatbeneathLimt=120.0f)const;///< given a position, return the nav area that IsOverlapping and is *immediately* beneath it
PlaceGetPlace(constVector&pos)const;///< return Place at given coordinate
constchar*PlaceToName(Placeplace)const;///< given a place, return its name
PlaceNameToPlace(constchar*name)const;///< given a place name, return a place ID or zero if no place is defined
PlacePartialNameToPlace(constchar*name)const;///< given the first part of a place name, return a place ID or zero if no place is defined, or the partial match is ambiguous
voidPrintAllPlaces(void)const;///< output a list of names to the console
intPlaceNameAutocomplete(charconst*partial,charcommands[COMMAND_COMPLETION_MAXITEMS][COMMAND_COMPLETION_ITEM_LENGTH]);///< Given a partial place name, fill in possible place names for ConCommand autocomplete
boolGetGroundHeight(constVector&pos,float*height,Vector*normal=NULL)const;///< get the Z coordinate of the topmost ground level below the given point
boolGetSimpleGroundHeight(constVector&pos,float*height,Vector*normal=NULL)const;///< get the Z coordinate of the ground level directly below the given point
/// increase "danger" weights in the given nav area and nearby ones
floatSnapToGrid(floatx,boolforceGrid=false)const;///< snap given coordinate to generation grid boundary
VectorSnapToGrid(constVector&in,boolsnapX=true,boolsnapY=true,boolforceGrid=false)const;///< snap given vector's X & Y coordinates to generation grid boundary
constVector&GetEditCursorPosition(void)const{returnm_editCursorPos;}///< return position of edit cursor
voidStripNavigationAreas(void);
constchar*GetFilename(void)const;///< return the filename for this map's "nav" file
unsignedintm_navPlace;///< current navigation place for editing
voidOnEditModeStart(void);///< called when edit mode has just been enabled
voidDrawEditMode(void);///< draw navigation areas
voidOnEditModeEnd(void);///< called when edit mode has just been disabled
boolm_isEditing;///< true if in edit mode
Vectorm_editCursorPos;///< current position of the cursor
CNavArea*m_markedArea;///< currently marked area for edit operations
CNavArea*m_selectedArea;///< area that is selected this frame
CNavArea*m_lastSelectedArea;///< area that was selected last frame
NavCornerTypem_markedCorner;///< currently marked corner for edit operations
Vectorm_anchor;///< first corner of an area being created
boolm_isPlacePainting;///< if true, we set an area's place by pointing at it
boolm_splitAlongX;///< direction the selected nav area would be split
floatm_splitEdge;///< location of the possible split
enumNavEditMode{
NAV_EDIT_NORMAL=0,
NAV_EDIT_CREATE,///< manually creating a new nav area
NAV_EDIT_RESIZE_HORIZONTAL,
NAV_EDIT_RESIZE_VERTICAL,
NAV_EDIT_PLACE///< place-editing mode
};
NavEditModem_navEditMode;
boolm_climbableSurface;///< if true, the cursor is pointing at a climable surface
Vectorm_surfaceNormal;///< Normal of the surface the cursor is pointing at
Vectorm_ladderAnchor;///< first corner of a ladder being created
Vectorm_ladderNormal;///< Normal of the surface of the ladder being created
boolm_isCreatingLadder;///< if true, we are manually creating a ladder
CNavLadder*m_selectedLadder;///< ladder that is selected this frame
CNavLadder*m_lastSelectedLadder;///< ladder that was selected last frame
CNavLadder*m_markedLadder;///< currently marked ladder for edit operations
boolGetActiveNavArea(void);///< Finds the area or ladder the local player is currently pointing at. Returns true if a surface was hit by the traceline.
voidSetEditMode(boolisPlaceMode);///< sets/clears place mode
voidSetPlacePaintingMode(boolpainting);///< Sets place-painting, if we're in place mode
voidSetMarkedLadder(CNavLadder*ladder);///< mark ladder for further edit operations
voidSetMarkedArea(CNavArea*area);///< mark area for further edit operations
CountdownTimerm_showAreaInfoTimer;///< Timer that controls how long area info is displayed