VR-Forces 4.8 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 
71  virtual void setPositionInvalid();
72 
73  virtual void setDesiredSpeed(double speed);
74 
75  virtual DtNavBot::PathStatus pathStatus(double atDistance);
77  virtual DtString pathStatusString();
78 
81  virtual double getOutputSpeed();
84  virtual double getOutputHeading();
85 
86  virtual bool currentPath(std::vector<DtVector>& path);
87  virtual bool abstractPath(std::vector<DtVector>& path);
88 
89  virtual bool currentPathEdge(DtVector& edgeStart, DtVector& edgeEnd);
90 
91  virtual unsigned currentAbstractPathIndex();
92 
95  virtual void setPathCostEvalFunction(DtNavBot::DtNavBotPathLocationEvalFcn fcn, void* usr);
96 
97  virtual DtVector transitionPoint() const { return myTransitionPoint; };
98 
99  virtual bool usingTransitionPoint() const;
100 
101  virtual bool nextTransitionPoint(DtVector& tPoint);
102 
104  virtual bool findingTransitionPoint() const;
105 
110  virtual std::vector<DtVector> searchInArea(double radius, double postSpacing, DtNavArea::DtPointOfInterestEvaluatorFcn = 0,
111  void* usrData = 0, int navTag = -1);
112  virtual std::vector<DtVector> searchInArea(const DtVector& startPoint,
113  double radius, double postSpacing, DtNavArea::DtPointOfInterestEvaluatorFcn = 0,
114  void* usrData = 0, int navTag = -1);
115 
118  virtual DtNavAreaQuery::Ptr findBestPathTo(const std::vector<DtVector>& localPositions,
120  DtNavArea::DtPathCalculatedEvaluatorFcn = 0, void* usrData = 0);
121 
124  virtual bool findFarthestPositionAlongHeading(const DtVector& start,
125  double heading, double maxDistance, DtVector& result, bool& reachedMaxDist) const;
126 
128  virtual void cancelQuery(DtNavAreaQuery::Ptr);
129 
131  virtual void moveAlongPath(const std::vector<DtVector>&);
132 
135  virtual bool findFarthestPositionAlongHeading(double heading, double maxDistance,
136  DtVector& result, bool& reachedMaxDist) const;
137 
139  virtual DtNavTag navTagAtPosition(const DtVector& localPos) const;
140 
142  virtual DtNavTag upcomingNavTagOnPath() const;
143 
145  virtual void upcomingNavTagsOnPath(double distance, DtNavTagAndLocationList& navTags) const;
146 
148  virtual void setNavigationMethod(DtNavBot::NavigationMethod navMethod);
149 
151  virtual void resetNavigationMethod();
152 
154  virtual DtNavBot::NavigationMethod navigationMethod() const;
155 
158  virtual DtVector performMovement(double dt);
159 
162  virtual DtVector groundClamp(const DtVector& localPos, DtVector& normal);
163 
165  bool findValidPositionNearby(const DtVector& localStart, double radius, DtVector& result);
166 
167 protected:
170  virtual DtNavBot* navBot();
171 
173  virtual void changingNavArea(DtNavArea* newNavArea);
174 
176  static void setLocationCompleteCallback(const DtVrfObject* vrfObject, void* usr);
177  virtual void processSetLocationComplete(const DtVrfObject* vrfObject);
178 
179  virtual DtNavAreaQuery::Ptr findTransitionPoint(DtNavArea* navArea, const DtVector& localStart, const DtVector& localDest);
180  virtual DtNavAreaQuery::Ptr findBestExitPoint(DtNavArea* navArea, const DtVector& localStart, const DtVector& localDest);
181  virtual DtNavAreaQuery::Ptr findCoverPoint(DtNavArea* navArea, const DtVector& localStart,
182  const DtVector& localCoverFrom, double coverFromRadius, double distanceFromThreat);
183  virtual bool findInsidePositionFromOutsidePosition(DtNavArea* navArea,
184  const DtVector& localStart, const DtVector& localDest, DtVector& result, int& halfEdgeType);
185 
188  virtual DtVector adjustDestination(const DtVector& localDest);
189 
192  virtual DtVector localOrParentPos(const DtVector& localPos);
194  virtual DtVector objectLocationLocalOrParent() const;
195 
199  virtual bool botShouldBeActive();
200 
211  virtual void setCollisionAvoidParams(DtNavBot::CollisionAvoidanceConfiguration& collAvoidConfig);
212 
214  virtual void findTransitionPointStartingFrom(const DtVector& startingPoint,
215  const DtVector& to);
216 
217  virtual void removeDebugTransitionPoints();
218 
224  virtual void setNavigationConfigParams(DtNavBot::NavigationConfiguration& navConfig);
225 
226 protected:
230 
232 
236 
238  boost::shared_ptr<DtTransitionPointFinder> myPendingPointFinder;
239 
240 
241  boost::shared_ptr<DtCoverPointFinder> myPendingCoverPointFinder;
242 
245 
247 
250 
251  std::vector<DtSharedVrfObjectReference> myDebugTransitionPoints;
252 
255 
261 
263 };
DtNavAreaQuery::Ptr myPendingQuery
Definition: activeBotNavInterface.h:237
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:200
DtNavBot::DtNavBotPathLocationEvalFcn myPathCostEvalFcn
Definition: activeBotNavInterface.h:248
This is the DtVrfObjectNavInterface subclass for objects which are actively querying the navigation s...
Definition: activeBotNavInterface.h:26
DtVector myTransitionPoint
Definition: activeBotNavInterface.h:231
DtNavBot * myNavBot
Definition: activeBotNavInterface.h:228
boost::shared_ptr< DtCoverPointFinder > myPendingCoverPointFinder
Definition: activeBotNavInterface.h:241
boost::shared_ptr< DtTransitionPointFinder > myPendingPointFinder
Definition: activeBotNavInterface.h:238
DtOnPathToGraphVertexComputedResult(* DtPathCalculatedEvaluatorFcn)(const DtVector &localPoint, double pathCost, void *userData)
Definition: navArea.h:201
Wrapper for GameWare NavTag.
Definition: navDataTag.h:54
DtOnGraphVertexVisitedResult(* DtPointOfInterestEvaluatorFcn)(const DtVector &localPoint, void *userData)
Definition: navArea.h:198
bool myWaitingForInitialNav
Definition: activeBotNavInterface.h:256
DtSharedVrfObjectReference class will allocate an empty DtVrfObjectReference if one is not assigned s...
Definition: vrfObjectReference.h:102
DtTime myInitialSimTime
Definition: activeBotNavInterface.h:260
int myControllerPriority
Definition: activeBotNavInterface.h:243
bool mySetDestinationWaitingForNav
Definition: activeBotNavInterface.h:257
DtString myController
Definition: activeBotNavInterface.h:244
bool myFindingDestNavAreaTransitionPoint
Definition: activeBotNavInterface.h:235
#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:179
virtual void firstTick()
virtual bool init()
Virtual init, called from the create() method.
DtVector myDestinationWaitingForNav
Definition: activeBotNavInterface.h:259
std::vector< DtSharedVrfObjectReference > myDebugTransitionPoints
Definition: activeBotNavInterface.h:251
DtVector myDestNavAreaTransitionPoint
Definition: activeBotNavInterface.h:234
DtString myStatusString
Definition: activeBotNavInterface.h:246
virtual DtVector transitionPoint() const
Definition: activeBotNavInterface.h:97
boost::shared_ptr< DtNavAreaQuery > Ptr
Definition: navArea.h:59
bool myNavigationIsEnabled
Definition: activeBotNavInterface.h:258
Definition: navBot.h:36
*array controller(no time code)*/template< class Instance
//!//!//!//!//!//!//!//!//!//!//!//
DtNavArea * navArea()
Definition: activeBotNavInterface.h:54
DtString myProfile
Definition: activeBotNavInterface.h:227
bool myFailedToFindTransitionPoint
Definition: activeBotNavInterface.h:253
Definition: navBot.h:27
bool myFailedToFindCoverPoint
Definition: activeBotNavInterface.h:254
DtVrfObjectNavInterface & operator=(const DtVrfObjectNavInterface &orig)
Not Implemented.
DtNavArea * myDestNavArea
Definition: activeBotNavInterface.h:233
DtNavArea * myNavArea
Definition: activeBotNavInterface.h:229
PathStatus
Definition: navBot.h:121
virtual bool ableToNavigate() const
Generic call. Basic nav interfaces are not able to navigate.
NavigationMethod
Definition: navBot.h:30
virtual void changingNavArea(DtNavArea *newNavArea)
Called when about to change to a new navArea.
void * myPathCostEvalFcnUsrData
Definition: activeBotNavInterface.h:249
DtNavBot::NavigationMethod myDefaultNavigationMethod
Definition: activeBotNavInterface.h:262
bool(* DtNavBotPathLocationEvalFcn)(const DtNavTag &navTag, float *costMultiplier, void *userData)
Definition: navBot.h:117

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)