VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
luaNavJob.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
8 #include "vrfLua/vrfLuaDefines.h"
9 #include "vrfLua/luaAsyncJob.h"
10 #include "vrfutil/scriptGeometry.h"
14 #include "vrfNavigation/navArea.h"
16 #include "vrfutil/rwUUID.h"
17 #include "vrfutil/movementModes.h"
18 
19 #include <luabind/luabind.hpp>
20 
21 class DtSimObject;
22 class DtCoverPointFinder;
24 
27 {
28 public:
29  typedef std::list<DtLocation3D> Points;
30 
32  DtLuaNavJob();
33 
35  ~DtLuaNavJob();
36 
38  virtual luabind::object getObject(lua_State* L, int& index, std::string& message) = 0;
39 
41  virtual luabind::object getDebugObject(lua_State* L) { return luabind::newtable(L); };
42 
44  virtual void cancel(lua_State* L) {};
45 
47  void addMessage(DtAlgorithmManager::Severity, std::string);
48 
52 
53  virtual DtString serialize();
54  virtual bool deserialize(const DtString&);
55 
56  virtual DtString objectType() const = 0;
57 
58  //Tick the job.
59  virtual void run(const DtAlgorithmManager& mgr = DtAlgorithmManager()) = 0;
60 
61  virtual bool complete();
62 
63 protected:
64 
68  DtString navigationProfile,
69  DtLocation3D startPoint,
70  DtLocation3D accessPoint = DtLocation3D(DtVector::zero()),
71  Points boundingArea = Points());
72 
73  //Initialize the job. This version must be called by derived start functions.
74  virtual void start();
75 
77  virtual void taskComplete() = 0;
78 
79  //Common parameters for nav jobs.
84 
85  std::string myMessage;
86 
88 };
89 
93 {
94 public:
95  static boost::shared_ptr<DtLuaNavRandomPointJob> Make(
97  DtString navigationProfile,
98  DtLocation3D startPoint,
99  double minDistanceFromStart,
100  double maxDistanceFromStart,
101  DtLocation3D accessPoint = DtLocation3D(DtVector::zero()),
102  Points boundingArea = Points(),
103  int numberOfPoints = 1,
104  double minDistanceBetweenPoints = 0.0,
105  DtString placementRestriction = DtMovementModeFree,
106  bool isStrict = true,
107  bool tightlyPack = false,
108  bool needLos = false,
109  bool groundClamp = false,
110  Points leftOfLine = Points(),
111  const DtSimObject* parentObject = 0);
112 
115 
118 
120  virtual luabind::object getObject(lua_State* L, int& index, std::string& message);
121 
124  virtual luabind::object getDebugObject(lua_State* L);
125 
127  virtual void cancel(lua_State* L);
128 
132 
133  static DtAsciiSerializable* creator();
134 
135  //Returns LuaNavRandomPointJob
136  virtual DtString objectType() const { return DtLuaNavRandomPointJobType; };
137 
138  //Initialize the job.
139  virtual void start();
140 
141  //Tick the job.
142  virtual void run(const DtAlgorithmManager& mgr = DtAlgorithmManager());
143 
146  virtual bool beginPointGeneration();
147 
148  //Returns true when the job is done.
149  virtual bool complete();
150 
152  virtual void taskComplete();
153 
154 protected:
155 
159  DtString navigationProfile,
160  DtLocation3D startPoint,
161  double minDistanceFromStart,
162  double maxDistanceFromStart,
163  DtLocation3D accessPoint = DtLocation3D(DtVector::zero()),
164  Points boundingArea = Points(),
165  int numberOfPoints = 1,
166  double minDistanceBetweenPoints = 0.0,
167  DtString placementRestriction = DtMovementModeFree,
168  bool isStrict = true,
169  bool tightlyPack = false,
170  bool needLos = false,
171  bool groundClamp = false,
172  Points leftOfLine = Points(),
173  const DtSimObject* parentObject = 0);
174 
182  bool myNeedLos;
188  bool myRanOnce;
195 };
196 
199 {
200 public:
201  static boost::shared_ptr<DtLuaNavPointOfInterestJob> Make(
203  DtString navigationProfile,
204  DtLocation3D startPoint,
205  DtUUID hostUuid,
206  int navTag = -1);
207 
210 
213 
215  virtual luabind::object getObject(lua_State* L, int& index, std::string& message);
216 
220 
221  static DtAsciiSerializable* creator();
222 
223  //Returns LuaNavRandomPointJob
224  virtual DtString objectType() const { return DtLuaNavRandomPointJobType; };
225 
226  //Initialize the job.
227  virtual void start();
228 
229  //Tick the job.
230  virtual void run(const DtAlgorithmManager& mgr = DtAlgorithmManager());
231 
233  virtual void taskComplete();
234 
235 protected:
236 
240  DtString navigationProfile,
241  DtLocation3D startPoint,
242  int navTag = -1);
243 
244  int myNavTag;
247 };
248 
251 {
252 public:
253  static boost::shared_ptr<DtLuaNavCoverPointJob> Make(
255  DtString navigationProfile,
256  DtLocation3D startPoint,
257  DtLocation3D coverFromPoint,
258  double threatRadius,
259  double distanceFromThreat,
260  double range,
261  unsigned numberOfPoints,
262  unsigned int queryQueuePriority);
263 
266 
269 
271  virtual luabind::object getObject(lua_State* L, int& index, std::string& message);
272 
276 
277  static DtAsciiSerializable* creator();
278 
279  //Returns LuaNavCoverPointJob
280  virtual DtString objectType() const { return DtLuaNavCoverPointJobType; };
281 
282  //Initialize the job.
283  virtual void start();
284 
285  //Tick the job.
286  virtual void run(const DtAlgorithmManager& mgr = DtAlgorithmManager());
287 
289  virtual void taskComplete();
290 
291 protected:
292 
296  DtString navigationProfile,
297  DtLocation3D startPoint,
298  DtLocation3D threatPoint,
299  double threatRadius,
300  double distanceFromThreat,
301  double range,
302  unsigned numberOfPoints,
303  unsigned int queryQueuePriority);
304 
307  double myRange;
309  std::set<DtCoverPoint> myResultPoints;
313 
314  boost::shared_ptr<DtCoverPointFinder> myPendingCoverPointFinder;
315 };
316 
319 {
320 public:
321  static boost::shared_ptr<DtLuaNavFindPathJob> Make(DtSimulationServices* mgr,
322  DtString navigationProfile,
323  DtLocation3D startPoint,
324  DtLocation3D endPoint,
325  bool useAbstractGraphs,
326  const DtLocation3D& avoidLocation, double avoidanceRadius,
327  DtActiveBotNavInterface* navIf = 0);
328 
331 
334 
336  virtual luabind::object getObject(lua_State* L, int& index, std::string& message);
337 
339  virtual luabind::object getDebugObject(lua_State* L);
340 
344 
345  static DtAsciiSerializable* creator();
346 
347  //Returns LuaNavCoverPointJob
348  virtual DtString objectType() const { return DtLuaNavCoverPointJobType; };
349 
350  //Initialize the job.
351  virtual void start();
352 
353  //Tick the job.
354  virtual void run(const DtAlgorithmManager& mgr = DtAlgorithmManager());
355 
357  virtual void taskComplete();
358 
359 protected:
360 
363  DtString navigationProfile,
364  DtLocation3D startPoint,
365  DtLocation3D endPoint,
366  bool useAbstractGraphs,
367  const DtLocation3D& avoidLocation, double avoidanceRadius,
368  DtActiveBotNavInterface* navIf = 0);
369 
376  double myPathCost;
378 
380 };
381 
383 {
384 public:
387  virtual void tick();
388  virtual void addJob(boost::shared_ptr<DtLuaNavJob> job);
389 protected:
390  std::list<boost::shared_ptr<DtLuaNavJob> > myJobs;
391 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
bool myGenerated
Definition: luaNavJob.h:377
const DtString DtLuaNavCoverPointJobType
Definition: asciiSerializable.h:23
const char DtMovementModeFree[]
Definition: movementModes.h:11
Points myDebugPoints
Definition: luaNavJob.h:379
int myNavTag
Definition: luaNavJob.h:244
Severity
Definition: algorithmManager.h:29
virtual void addJob(boost::shared_ptr< DtLuaNavJob > job)
Lua object class which represents a feature navigation task.
Definition: luaNavJob.h:198
double myMinDistanceBetweenPoints
Definition: luaNavJob.h:178
bool myRanOnce
Definition: luaNavJob.h:188
DtLocation3D myThreatPoint
Definition: luaNavJob.h:308
std::list< DtLocation3D > Points
Definition: luaNavJob.h:29
Lua object class which finds a path to the specified location.
Definition: luaNavJob.h:318
This is the DtVrfObjectNavInterface subclass for objects which are actively querying the navigation s...
Definition: activeBotNavInterface.h:27
virtual void run(const DtAlgorithmManager &mgr=DtAlgorithmManager())=0
unsigned myQueryQueuePriority
Definition: luaNavJob.h:311
Lua object class which represents a feature navigation task.
Definition: luaNavJob.h:26
bool myIsStrict
Definition: luaNavJob.h:180
virtual luabind::object getObject(lua_State *L, int &index, std::string &message)=0
Retrieve value.
Points myPathPoints
Definition: luaNavJob.h:371
Definition: asciiSerializable.h:34
Interface for getting asynchronously computed data into Lua.
Definition: luaAsyncJob.h:29
virtual bool deserialize(const DtString &)=0
This function should take the string that was serialized via serialize() and fill this object with th...
unsigned myNumberOfPoints
Definition: luaNavJob.h:310
int myNumberOfPoints
Definition: luaNavJob.h:175
virtual DtString objectType() const
Should return the string name of this object. The object name should not be part of the serialization...
Definition: luaNavJob.h:136
boost::shared_ptr< DtCoverPointFinder > myPendingCoverPointFinder
Definition: luaNavJob.h:314
Contains the DtUUID class declaration.
std::list< boost::shared_ptr< DtLuaNavJob > > myJobs
Definition: luaNavJob.h:390
virtual void taskComplete()=0
Called by task object whenever it is done.
virtual DtString serialize()=0
The following characters are reserved and cannot be used in serialization: &#39;|&#39;, &#39;:&#39;.
double myAvoidanceRadius
Definition: luaNavJob.h:374
virtual void start()
double myThreatRadius
Definition: luaNavJob.h:305
virtual void cancel(lua_State *L)
Cancels the job. By default this is a no-op, we let the job finish on its own.
Definition: luaNavJob.h:44
virtual DtString objectType() const
Should return the string name of this object. The object name should not be part of the serialization...
Definition: luaNavJob.h:348
DtLocation3D myStartPoint
Definition: luaNavJob.h:81
std::list< DtLocation3D > Points
Definition: luaTerrainReasoningJob.h:290
Points myBoundingArea
Definition: luaNavJob.h:83
std::set< DtCoverPoint > myResultPoints
Definition: luaNavJob.h:309
DtLocation3D myEndPoint
Definition: luaNavJob.h:370
const DtSimObject * myParentObject
Definition: luaNavJob.h:187
Definition: asyncJobServer.h:37
bool myGenerated
Definition: luaNavJob.h:189
DtLocation3D myAvoidLocation
Definition: luaNavJob.h:373
Lua object class for finding random points within a nav area.
Definition: luaNavJob.h:92
double myMinDistanceFromStart
Definition: luaNavJob.h:176
bool myNoNavArea
Definition: luaNavJob.h:191
bool myGenerated
Definition: luaNavJob.h:246
bool myGenerated
Definition: luaNavJob.h:312
bool myUseAbstractGraphs
Definition: luaNavJob.h:372
DtLocation3D myResultPoint
Definition: luaNavJob.h:245
DtLocalVertexList myBoundary
Definition: luaNavJob.h:193
#define DT_DLL_vrfLua
This file is used to determine how to build.
Definition: vrfLuaDefines.h:25
Lua object class which finds a cover point from the specified location.
Definition: luaNavJob.h:250
const DtString DtLuaNavRandomPointJobType
Definition: asciiSerializable.h:22
double myMaxDistanceFromStart
Definition: luaNavJob.h:177
std::string myMessage
Definition: luaNavJob.h:85
DtLocation3D myAccessPoint
Definition: luaNavJob.h:82
boost::shared_ptr< DtNavAreaQuery > Ptr
Definition: navArea.h:60
virtual luabind::object getObject(lua_State *L, int &index, std::string &message)=0
Retrieve current value.
DtLocalVertexList myLeftOfLineVertices
Definition: luaNavJob.h:194
double myRange
Definition: luaNavJob.h:307
Points myResultPoints
Definition: luaNavJob.h:185
virtual DtString objectType() const =0
Should return the string name of this object. The object name should not be part of the serialization...
bool myTightlyPack
Definition: luaNavJob.h:181
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
double myDistanceFromThreat
Definition: luaNavJob.h:306
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:79
double myPathCost
Definition: luaNavJob.h:376
bool myNeedLos
Definition: luaNavJob.h:182
virtual void tick()
bool myGroundClamp
Definition: luaNavJob.h:183
virtual luabind::object getDebugObject(lua_State *L)
Retrieve debug data, if available. Default behavior is an empty table.
Definition: luaNavJob.h:41
Points myLeftOfLine
Definition: luaNavJob.h:184
DtString myNavigationProfile
Definition: luaNavJob.h:80
virtual bool complete()
virtual DtString objectType() const
Should return the string name of this object. The object name should not be part of the serialization...
Definition: luaNavJob.h:280
class DtLocalVertexList:
Definition: localVertexList.h:20
DtNavAreaQuery::Ptr myQuery
Definition: luaNavJob.h:87
Definition: luaNavJob.h:382
Points myDebugPoints
Definition: luaNavJob.h:186
virtual DtString objectType() const
Should return the string name of this object. The object name should not be part of the serialization...
Definition: luaNavJob.h:224
bool myDataAvailable
Definition: luaNavJob.h:190
Used to find the best cover point(s) to take cover from attacker at a specified location. If myBestCoverPoint is not DtVector::zero(), it will be the cover point to use.
Definition: coverPointFinder.h:36
DtVector myLocalAccessPoint
Definition: luaNavJob.h:192
DtActiveBotNavInterface * myNavIf
Definition: luaNavJob.h:375
General interface which can be passed into an algorithm to control its behavior.
Definition: algorithmManager.h:24
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22
DtString myPlacementRestriction
Definition: luaNavJob.h:179

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)