VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
activeBotNavInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
14 #include "vrfNavigation/navArea.h"
16 #include "vrfNavigation/navBot.h"
18 
19 #include <matrix/vlVector.h>
20 
21 class DtNavTag;
22 
27 {
28 private:
35 
36 public:
37  static DtVrfObjectNavInterface* create(DtSharedVrfObjectReference vrfObject);
38 
39 protected:
43  virtual bool init();
44 
45 public:
46  virtual void firstTick();
47  virtual void tick();
48  virtual ~DtActiveBotNavInterface();
49 
53  virtual bool ableToNavigate() const;
54  DtNavArea* navArea() { return myNavArea; }
55  const DtNavArea* navArea() const { return myNavArea; }
56 
57  virtual const DtString& navProfile() const;
58  virtual void setNavProfile(const DtString& profile);
59 
60  virtual bool requestControl(int priority, const DtString& controller);
61  virtual bool hasControl(int priority);
62  virtual void releaseControl(int priority);
63 
68  virtual void setDestination(const DtVector& localDest);
69 
70  virtual void resetDestination();
71 
73  virtual void setPositionInvalid();
74 
75  virtual void setDesiredSpeed(double speed);
76 
77  virtual DtNavBot::PathStatus pathStatus(double atDistance);
79  virtual DtString pathStatusString();
80 
83  virtual double getOutputSpeed();
86  virtual double getOutputHeading();
87 
88  virtual bool currentPath(std::vector<DtVector>& path);
89  virtual bool abstractPath(std::vector<DtVector>& path);
90 
91  virtual bool currentPathEdge(DtVector& edgeStart, DtVector& edgeEnd);
92 
93  virtual unsigned currentAbstractPathIndex();
94 
97  virtual void setPathCostEvalFunction(DtNavBot::DtNavBotPathLocationEvalFcn fcn, void* usr);
98 
99  virtual DtVector transitionPoint() const { return myTransitionPoint; };
100 
101  virtual bool usingTransitionPoint() const;
102 
103  virtual bool nextTransitionPoint(DtVector& tPoint);
104 
106  virtual bool findingTransitionPoint() const;
107 
112  virtual std::vector<DtVector> searchInArea(double radius, double postSpacing, DtNavArea::DtPointOfInterestEvaluatorFcn = 0,
113  void* usrData = 0, int navTag = -1);
114  virtual std::vector<DtVector> searchInArea(const DtVector& startPoint,
115  double radius, double postSpacing, DtNavArea::DtPointOfInterestEvaluatorFcn = 0,
116  void* usrData = 0, int navTag = -1);
117 
120  virtual DtNavAreaQuery::Ptr findBestPathTo(const std::vector<DtVector>& localPositions,
122  DtNavArea::DtPathCalculatedEvaluatorFcn = 0, void* usrData = 0);
123 
126  virtual DtNavAreaQuery::Ptr findPathToLocation(const DtVector& start, const DtVector& destination,
127  bool useAbstractGraphs, const DtVector& locationToAvoid = DtVector(), double avoidanceRadius = 0);
128 
131  virtual bool findFarthestPositionAlongHeading(const DtVector& start,
132  double heading, double maxDistance, DtVector& result, bool& reachedMaxDist) const;
133 
135  virtual void cancelQuery(DtNavAreaQuery::Ptr);
136 
138  virtual void moveAlongPath(const std::vector<DtVector>&);
139 
142  virtual bool findFarthestPositionAlongHeading(double heading, double maxDistance,
143  DtVector& result, bool& reachedMaxDist) const;
144 
146  virtual DtNavTag navTagAtPosition(const DtVector& localPos) const;
147 
149  virtual DtNavTag upcomingNavTagOnPath() const;
150 
152  virtual void upcomingNavTagsOnPath(double distance, DtNavTagAndLocationList& navTags) const;
153 
155  virtual void setNavigationMethod(DtNavBot::NavigationMethod navMethod);
156 
158  virtual void resetNavigationMethod();
159 
161  virtual DtNavBot::NavigationMethod navigationMethod() const;
162 
165  virtual DtVector performMovement(double dt);
166 
169  virtual DtVector groundClamp(const DtVector& localPos, DtVector& normal);
170 
172  bool findValidPositionNearby(const DtVector& localStart, double radius, DtVector& result);
173 
174 protected:
177  virtual DtNavBot* navBot();
178 
180  virtual void changingNavArea(DtNavArea* newNavArea);
181 
183  static void setLocationCompleteCallback(const DtVrfObject* vrfObject, void* usr);
184  virtual void processSetLocationComplete(const DtVrfObject* vrfObject);
185 
186  virtual DtNavAreaQuery::Ptr findTransitionPoint(DtNavArea* navArea, const DtVector& localStart, const DtVector& localDest);
187  virtual DtNavAreaQuery::Ptr findBestExitPoint(DtNavArea* navArea, const DtVector& localStart, const DtVector& localDest);
188  virtual DtNavAreaQuery::Ptr findCoverPoint(DtNavArea* navArea, const DtVector& localStart,
189  const DtVector& localCoverFrom, double coverFromRadius, double distanceFromThreat);
190  virtual bool findInsidePositionFromOutsidePosition(DtNavArea* navArea,
191  const DtVector& localStart, const DtVector& localDest, DtVector& result, int& halfEdgeType);
192 
195  virtual DtVector adjustDestination(const DtVector& localDest);
196 
199  virtual DtVector localOrParentPos(const DtVector& localPos);
201  virtual DtVector objectLocationLocalOrParent() const;
202 
206  virtual bool botShouldBeActive();
207 
218  virtual void setCollisionAvoidParams(DtNavBot::CollisionAvoidanceConfiguration& collAvoidConfig);
219 
221  virtual void findTransitionPointStartingFrom(const DtVector& startingPoint,
222  const DtVector& to);
223 
224  virtual void removeDebugTransitionPoints();
225 
231  virtual void setNavigationConfigParams(DtNavBot::NavigationConfiguration& navConfig);
232 
233 protected:
237 
239 
243 
245  boost::shared_ptr<DtTransitionPointFinder> myPendingPointFinder;
246 
247  std::list<DtNavAreaQuery::WeakPtr> myActiveQueries;
248 
249  boost::shared_ptr<DtCoverPointFinder> myPendingCoverPointFinder;
250 
253 
255 
258 
259  std::vector<DtSharedVrfObjectReference> myDebugTransitionPoints;
260 
263 
269 
271 };
DtNavAreaQuery::Ptr myPendingQuery
Definition: activeBotNavInterface.h:244
const DtNavArea * navArea() const
Definition: activeBotNavInterface.h:55
Definition: vrfObjectNavInterface.h:18
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
void(* DtSearchAreaPointCostModifierEvaluatorFcn)(const DtVector &localPoint, float *currentCost, void *userData)
Definition: navArea.h:210
DtNavBot::DtNavBotPathLocationEvalFcn myPathCostEvalFcn
Definition: activeBotNavInterface.h:256
This is the DtVrfObjectNavInterface subclass for objects which are actively querying the navigation s...
Definition: activeBotNavInterface.h:26
DtVector myTransitionPoint
Definition: activeBotNavInterface.h:238
DtNavBot * myNavBot
Definition: activeBotNavInterface.h:235
boost::shared_ptr< DtCoverPointFinder > myPendingCoverPointFinder
Definition: activeBotNavInterface.h:249
boost::shared_ptr< DtTransitionPointFinder > myPendingPointFinder
Definition: activeBotNavInterface.h:245
DtOnPathToGraphVertexComputedResult(* DtPathCalculatedEvaluatorFcn)(const DtVector &localPoint, double pathCost, void *userData)
Definition: navArea.h:211
Wrapper for GameWare NavTag.
Definition: navDataTag.h:54
DtOnGraphVertexVisitedResult(* DtPointOfInterestEvaluatorFcn)(const DtVector &localPoint, void *userData)
Definition: navArea.h:208
bool myWaitingForInitialNav
Definition: activeBotNavInterface.h:264
DtSharedVrfObjectReference class will allocate an empty DtVrfObjectReference if one is not assigned s...
Definition: vrfObjectReference.h:102
DtTime myInitialSimTime
Definition: activeBotNavInterface.h:268
int myControllerPriority
Definition: activeBotNavInterface.h:251
bool mySetDestinationWaitingForNav
Definition: activeBotNavInterface.h:265
DtString myController
Definition: activeBotNavInterface.h:252
bool myFindingDestNavAreaTransitionPoint
Definition: activeBotNavInterface.h:242
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
Contains all the data and logic for navigation within a specific area.
Definition: navArea.h:181
virtual void firstTick()
virtual bool init()
Virtual init, called from the create() method.
DtVector myDestinationWaitingForNav
Definition: activeBotNavInterface.h:267
std::vector< DtSharedVrfObjectReference > myDebugTransitionPoints
Definition: activeBotNavInterface.h:259
DtVector myDestNavAreaTransitionPoint
Definition: activeBotNavInterface.h:241
DtString myStatusString
Definition: activeBotNavInterface.h:254
virtual DtVector transitionPoint() const
Definition: activeBotNavInterface.h:99
bool(* DtNavBotPathLocationEvalFcn)(const DtNavTag &navTag, float slope, float elevationChange, float *costMultiplier, void *userData)
Definition: navBot.h:121
boost::shared_ptr< DtNavAreaQuery > Ptr
Definition: navArea.h:59
bool myNavigationIsEnabled
Definition: activeBotNavInterface.h:266
Definition: navBot.h:38
*array controller(no time code)*/template< class Instance
//!//!//!//!//!//!//!//!//!//!//!//
DtNavArea * navArea()
Definition: activeBotNavInterface.h:54
DtString myProfile
Definition: activeBotNavInterface.h:234
bool myFailedToFindTransitionPoint
Definition: activeBotNavInterface.h:261
Definition: navBot.h:29
bool myFailedToFindCoverPoint
Definition: activeBotNavInterface.h:262
DtVrfObjectNavInterface & operator=(const DtVrfObjectNavInterface &orig)
Not Implemented.
DtNavArea * myDestNavArea
Definition: activeBotNavInterface.h:240
std::list< DtNavAreaQuery::WeakPtr > myActiveQueries
Definition: activeBotNavInterface.h:247
DtNavArea * myNavArea
Definition: activeBotNavInterface.h:236
PathStatus
Definition: navBot.h:125
virtual bool ableToNavigate() const
Generic call. Basic nav interfaces are not able to navigate.
NavigationMethod
Definition: navBot.h:32
virtual void changingNavArea(DtNavArea *newNavArea)
Called when about to change to a new navArea.
void * myPathCostEvalFcnUsrData
Definition: activeBotNavInterface.h:257
DtNavBot::NavigationMethod myDefaultNavigationMethod
Definition: activeBotNavInterface.h:270

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)