quake4-sdk/source/game/ai/AAS_tactical.h
2007-06-15 00:00:00 +00:00

69 lines
2.6 KiB
C

///////////////////////////////////////////////////////////////////////////////
// AAS_tactical
//
// This file is the interface to an AAS Tactical Extractor, which can search
// out from a given start point and report a variety of tactically important
// objectives, including corners, walls, and pinch points.
//
// By seeing the AAS graph as a qualitative and simplified spatial
// representation of the game world. This representation is amply capapble of
// rendering higher level tactical data efficiently in real time.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef __AAS_TACTICAL_H__
#define __AAS_TACTICAL_H__
///////////////////////////////////////////////////////////////////////////////
// rvAASTacticalSensor
//
// The sensor structure is the public interface to the internals of AAS
// tactical features.
///////////////////////////////////////////////////////////////////////////////
struct rvAASTacticalSensor
{
// Regular Update Function
///////////////////////////////////////////////////////////////////////
virtual void Update() = 0;
virtual void Save(idSaveGame *savefile) = 0;
virtual void Restore(idRestoreGame *savefile) = 0;
virtual void Clear() = 0;
// Search
///////////////////////////////////////////////////////////////////////
virtual void SearchRadius(const idVec3& origin=vec3_origin, float rangeMin=0.0f, float rangeMax=1.0f) = 0;
virtual void SearchCover(float rangeMin=0.0f, float rangeMax=1.0f) = 0;
virtual void SearchHide(idEntity* from=0) = 0;
virtual void SearchFlank() = 0;
virtual void SearchAdvance() = 0;
virtual void SearchRetreat() = 0;
virtual void SearchAmbush() = 0;
virtual void SearchDebug() = 0;
// Feature Testing
///////////////////////////////////////////////////////////////////////
virtual bool TestValid(aasFeature_t* f, float walkDistanceToFeature) = 0;
virtual bool TestValidWithCurrentState(aasFeature_t* f=0) = 0;
// Feature Reservation
///////////////////////////////////////////////////////////////////////
virtual void Reserve(aasFeature_t* f) = 0;
// Access To Results
///////////////////////////////////////////////////////////////////////
virtual int FeatureCount() = 0;
virtual aasFeature_t* Feature(int i) = 0;
virtual aasFeature_t* Near() const = 0;
virtual aasFeature_t* Look() const = 0;
virtual aasFeature_t* Reserved() const = 0;
virtual const idVec3& ReservedOrigin() const = 0;
// STATIC SYSTEM FUNCTIONS
///////////////////////////////////////////////////////////////////////
static rvAASTacticalSensor* CREATE_SENSOR(idActor* owner);
};
#endif /* !__AAS_TACTICAL_H__ */