17 #include <matrix/vlVector.h>
19 #include "boost/shared_ptr.hpp"
20 #include "boost/weak_ptr.hpp"
59 typedef boost::shared_ptr<DtNavAreaQuery>
Ptr;
60 typedef boost::weak_ptr<DtNavAreaQuery>
WeakPtr;
66 virtual bool tick() = 0;
67 virtual bool success() = 0;
70 virtual bool navDataChanged() = 0;
71 virtual bool outOfWorkingMemory() = 0;
72 virtual bool hadComputationError() = 0;
74 virtual std::vector<DtVector> results() = 0;
76 virtual std::vector<DtVector>
debugPoints() {
return std::vector<DtVector>(); };
77 virtual void* internalQuery() = 0;
88 virtual bool tick() {
return true; };
94 virtual std::vector<DtVector>
results() {
return std::vector<DtVector>(); };
102 maxRegenerationThreads(2), regenerationDelay(2.5), queryTimeBudget(1) {};
106 int workingMemorySize;
210 typedef void (*DtSearchAreaPointCostModifierEvaluatorFcn)(
const DtVector& localPoint,
float* currentCost,
void* userData);
212 typedef void(*DtSectorRegenerationCb)(
void* userData);
215 static void setNavAreaCreatorFcn(DtNavAreaCreatorFcn fcn);
217 static bool navAreaDebuggingEnabled();
218 static void setNavAreaDebuggingEnabled(
bool enable);
223 std::vector<DtString> profiles = std::vector<DtString>()) = 0;
224 virtual void update(
float deltaTimeInSeconds) = 0;
228 virtual bool inNavArea(
const DtVector& localPos)
const = 0;
234 virtual bool validPosition(
const DtString& profile,
const DtVector& localPos,
238 virtual bool validForProfile(
const DtString& profile)
const = 0;
240 virtual DtNavDataDebugInfo* debugInfo() = 0;
242 virtual void setExtent(
DtExtent* e) = 0;
252 DtPointOfInterestEvaluatorFcn evalFcn = 0, DtPathCalculatedEvaluatorFcn pathFcn = 0,
void* evalFcnUserData = 0) = 0;
258 bool useHighPriorityQueue,
260 DtPointOfInterestNavTagEvaluatorFcn evalFcn = 0, DtPathCalculatedEvaluatorFcn pathFcn = 0,
void* evalFcnUserData = 0) = 0;
264 virtual void findNearbyNavEdgesUsingNavTags(
const DtString& profile,
double searchRadius,
const DtVector& fromFromHere,
265 const std::vector<DtInputNavTag>& navTagVals, std::list<DtNavEdge*>& result)
const = 0;
268 virtual void findVerticesUsingNavTags(
const DtString& profile,
double searchRadius,
const DtVector& fromFromHere,
269 const std::vector<DtInputNavTag>& navTagVals, std::list<DtVector>& result)
const = 0;
276 DtPointOfInterestEvaluatorFcn evalFcn = 0, DtPathCalculatedEvaluatorFcn pathFcn = 0,
void* evalFcnUserData = 0) = 0;
279 virtual bool findInsidePositionFromOutsidePosition(
const DtString& profile,
280 double searchRadius,
double searchHeight,
const DtVector& fromFromHere,
281 DtVector& result,
int& halfEdgeType)
const = 0;
285 const std::vector<DtVector>& localDestinationPositions,
DtNavBot* searcher,
int tag = -1,
286 DtSearchAreaPointCostModifierEvaluatorFcn = 0, DtPointOfInterestEvaluatorFcn = 0, DtPathCalculatedEvaluatorFcn = 0,
287 void* usrData = 0,
bool startMovingWhenFound =
false) = 0;
291 const DtVector& destination,
bool useAbstractGraphs =
true,
297 virtual bool findFarthestPositionAlongHeading(
const DtString& profile,
const DtVector& start,
298 double heading,
double maxDistance,
DtVector& result,
bool& reachedMaxDist)
const = 0;
301 virtual bool doesNavIntersectBetweenTwoPoints(
const DtString& profile,
const DtVector& start,
const DtVector& end)
const = 0;
334 const DtVector& localAccessibilityPoint = DtVector::zero(),
335 double minRadius = -1,
336 double maxRadius = -1,
338 unsigned numberOfPoints = 1,
339 double minDistanceBetweenPoints = 0.0,
340 const DtString& placementRestriction = DtString::nullString(),
341 bool isStrict =
true,
342 bool tightlyPack =
false,
343 bool needLos =
false,
344 bool groundClamp =
false,
346 DtLocalPointUserEvalCallback callbackFcn = emptyCallback,
347 void* userData = 0) = 0;
350 virtual bool tagVolumesToBeIntegrated()
const = 0;
359 virtual std::vector<DtVector> searchInArea(
const DtString& profile,
360 const DtVector& startLocalPos,
double radius,
double postSpacing,
DtNavBot* searcher,
361 DtPointOfInterestEvaluatorFcn evalFcn = 0,
void* evalFcnUserData = 0,
int tag = -1)
const = 0;
363 virtual bool navTrianglesInArea(
const DtString& profile,
const DtVector& location,
double radius, std::list<DtNavTriangleInfo>& triangles) = 0;
366 virtual unsigned newNavTagId() = 0;
369 virtual void associateNavTagIdWithObject(
unsigned tagVolumeId,
const DtUUID& objectUUID) = 0;
372 virtual void disassociateNavTagId(
unsigned navTagId) = 0;
376 virtual DtUUID uuidFromNavTagId(
unsigned navTagId)
const = 0;
380 virtual unsigned navTagVolumeIdFromUuid(
const DtUUID& objectUUID) = 0;
390 virtual void addSectorRegenerationCallback(DtSectorRegenerationCb cb,
void* usr) = 0;
391 virtual void removeSectorRegenerationCallback(DtSectorRegenerationCb cb,
void* usr) = 0;
397 const std::set<DtString>& profiles = std::set<DtString>()) = 0;
405 virtual unsigned addNavEdge(
const DtString& profile, std::vector<DtVector>& LocalPoints,
411 virtual unsigned addNavIEdge(
const DtString& profile, std::vector<DtVector>& LocalPoints, std::vector< std::vector<DtVector> >& localIPoints,
415 virtual void removeNavEdge(
unsigned edgeId) = 0;
420 virtual unsigned addCoverPoint(
const DtString& profile,
const DtVector& localPoint,
421 bool& creationComplete) = 0;
424 virtual bool isCoverPointCreated(
unsigned coverPointId) = 0;
427 virtual void removeCoverPoint(
unsigned coverPointId) = 0;
430 virtual void printNavDataInfoForLocation(
const DtVector& location, std::ostream& strm)
const = 0;
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
This class is just used to count the nav generation threads to ensure we do not start too many thread...
Definition: navArea.h:141
DtNavAreaQuery()
Definition: navArea.h:62
DtNavTagExt navTagExt
Definition: navArea.h:204
bool regenerateAtRuntime
Whether nav data should be regenerated at runtime.
Definition: navArea.h:112
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
DtNavGenerationThreadCounter(unsigned maxThreads)
Definition: navArea.h:144
DtOnPathToGraphVertexComputedResult
Definition: navArea.h:40
virtual ~DtNavAreaQuery()
Definition: navArea.h:63
Definition: navArea.h:200
virtual bool tick()
Definition: navArea.h:88
DtVrfObject * myAttachedObject
Points to the host object if this navArea is attached to an object like a cultural feature or a large...
Definition: navArea.h:439
virtual bool outOfWorkingMemory()
Definition: navArea.h:92
double queryTimeBudget
The time budget per frame for path queries in ms. Default value is 1.
Definition: navArea.h:109
virtual bool success()
Definition: navArea.h:89
DtNavAreaNullQuery()
Definition: navArea.h:84
virtual ~DtNavArea()
Definition: navArea.h:220
double regenerationDelay
Minimum delay between an event resulting in nav data regeneration and the start of the regeneration t...
Definition: navArea.h:119
const int DtNavDataTagAny
Definition: navDataTag.h:17
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
std::set< DtNavSectorName > DtNavSectorNames
Definition: navArea.h:48
virtual void cancel()
Definition: navArea.h:90
Wrapper for GameWare NavTag.
Definition: navDataTag.h:54
static bool theNavAreaDebuggingEnabled
Definition: navArea.h:435
static DtNavAreaCreatorFcn theNavAreaCreatorFcn
Definition: navArea.h:433
Definition: asyncJobServer.h:37
void releaseThread()
Definition: navArea.h:163
static const DtUUID & nullUUID()
DtOnGraphVertexVisitedResult
Definition: navArea.h:31
Definition: coordSystem.h:54
virtual void * internalQuery(void)
Definition: navArea.h:95
virtual ~DtNavRegenRequestIdData()
Definition: navArea.h:128
Contains all the data and logic for navigation within a specific area.
Definition: navArea.h:181
DtVrfObject * attachedObject()
Definition: navArea.h:352
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
Contains all the data and logic for navigation within a specific edge.
Definition: navEdge.h:18
virtual ~DtNavAreaNullQuery()
Definition: navArea.h:85
int port
Definition: navArea.h:187
This is just an abstract base class for the data contained in a DtNavRegenRequestId.
Definition: navArea.h:125
bool(* DtNavBotPathLocationEvalFcn)(const DtNavTag &navTag, float slope, float elevationChange, float *costMultiplier, void *userData)
Definition: navBot.h:121
DtNavRegenRequestIdData(const DtNavRegenRequestIdData &)
Definition: navArea.h:132
DtTerrainInterface allows access to common terrain calls without having to know the terrain implement...
Definition: terrainInterface.h:88
boost::shared_ptr< DtNavAreaQuery > Ptr
Definition: navArea.h:59
virtual std::vector< DtVector > debugPoints()
Definition: navArea.h:76
int maxRegenerationThreads
Maximum number of threads performing nav data regeneration at a time.
Definition: navArea.h:115
DtNavRegenRequestIdData()
Definition: navArea.h:131
static const DtVariableBindingsList & nullVariableReference()
bool claimThread()
Definition: navArea.h:153
void setMaxThreads(unsigned maxThreads)
Definition: navArea.h:146
unsigned myUsedThreads
Definition: navArea.h:174
Definition: navArea.h:184
void setAttachedObject(DtVrfObject *object)
Definition: navArea.h:353
virtual bool navDataChanged()
Returns true if the nav data has changed during this query.
Definition: navArea.h:91
DtNavAreaConfig()
Definition: navArea.h:101
#define DT_DLL_vrfNavigation
This file is used to determine how to build.
Definition: vrfNavigationDefines.h:26
Configuration options for DtNavArea.
Definition: navArea.h:99
DtString status
Definition: navArea.h:189
virtual double outputValue()
Definition: navArea.h:75
DtNavTag navTag
Definition: navArea.h:197
Extended DtNavTag class that keep a local copy of myData.
Definition: navDataTag.h:77
boost::weak_ptr< DtNavRegenRequestIdData > DtNavRegenRequestId
Id used as a handle for nav regen requests. This is just an abstract base class.
Definition: navArea.h:137
virtual bool hadComputationError()
Definition: navArea.h:93
class DtLocalVertexList:
Definition: localVertexList.h:20
DtString navAreaName
Definition: navArea.h:186
std::vector< DtRwString > profiles
Definition: navArea.h:188
Used by the Debud Draw tool.
Definition: navArea.h:193
virtual std::vector< DtVector > results()
Definition: navArea.h:94
boost::weak_ptr< DtNavAreaQuery > WeakPtr
Definition: navArea.h:60
virtual bool complete()
Definition: navArea.h:87
unsigned myMaxThreads
Definition: navArea.h:173
unsigned maxThreads() const
Definition: navArea.h:151