VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
scriptInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
8 
13 
14 #include "vlutil/vlString.h"
15 
16 #include <deque>
17 
18 class DtVrfObject;
20 
27 
29 {
30 public:
31 
40  {
41  public:
44 
46  virtual bool operator<(const DtScriptFunctionReference& other) const = 0;
47  };
48 
50  typedef boost::shared_ptr<DtScriptFunctionReference> DtScriptFunctionReferencePtr;
51 
53  typedef std::pair<std::string, DtScriptFunctionReferencePtr> DtPostCallbackEntry;
54 
57  {
58  bool operator()(DtPostCallbackEntry lhs, DtPostCallbackEntry rhs)
59  {
60  if (lhs.first < rhs.first) return true;
61  else if (lhs.first > rhs.first) return false;
62  else if (*lhs.second.get() < *rhs.second.get()) return true;
63  else return false;
64  }
65  };
66 
67  typedef std::set<DtPostCallbackEntry, PostSetDataCallbackLessThan> DtPostSetDataCallbackSet;
68  typedef std::vector<DtSimMessage*> DtSetDataMessageVector;
69  typedef std::map<DtPostCallbackEntry, bool> DtPostCallbackEntryPendingChanges;
70 
71 protected:
75  DtScriptInterface& operator=(const DtScriptInterface& other);
76 
77 public:
78  virtual ~DtScriptInterface();
79 
80  virtual bool invokeInit() = 0;
81  virtual void invokeSuspend() = 0;
82  virtual bool invokeResume() = 0;
83 
85  virtual void invokeTick() = 0;
86 
88  virtual bool loadScript(bool reload = false) = 0;
89 
90  virtual void invokeCheckInit() = 0;
91  virtual bool invokeCheck() = 0;
92 
93  virtual void invokeShutdown() = 0;
94 
97  virtual void invokeDisable() = 0;
98 
100  virtual DtString type() const = 0;
101 
102  virtual void setTaskId(int taskId) { myTaskId = taskId; }
103  virtual int taskId() const { return myTaskId; }
104 
105  virtual void setScriptId(const DtString& scriptId) { myScriptId = scriptId; }
106  virtual const DtString& scriptId() const { return myScriptId; }
107 
108  virtual void setSystemName(const DtString& system) { mySystemName = system; }
109  virtual const DtString& systemName() const { return mySystemName; }
110 
111  virtual void setScriptPath(const DtFilename& scriptPath) { myScriptPath = scriptPath; }
112  virtual const DtFilename& scriptPath() const { return myScriptPath; }
113 
114  virtual void setEntity(DtVrfObject* entity) { myEntity = entity; }
115  virtual DtVrfObject* entity() const { return myEntity; }
116 
118  virtual void init() { }
119 
120 
121  virtual void setTaskVariables(const DtRwVariableBindings& variables) { myTaskVariables = variables; }
122  virtual const DtRwVariableBindings& taskVariables() const { return myTaskVariables; }
123  virtual bool updateTaskVariables();
124 
127  virtual DtReaderWriter* saveState() = 0;
128 
132  virtual bool loadState(const DtReaderWriter* savedState) = 0;
133 
141  virtual void processClearForReuse();
142 
143  virtual void setTaskStarting(bool v);
144  virtual bool taskStarting() const;
145 
147 
148  virtual void setTaskResuming(bool v);
149  virtual bool taskResuming() const;
151 
153 
154  virtual void setIsBackgroundProces(bool isBgProc);
155  virtual bool isBackgroundProcess() const;
157 
158  virtual void setController(DtScriptTaskControllerInterface* controller) { myControllerInterface = controller; }
159  virtual DtScriptTaskControllerInterface* controller() { return myControllerInterface; }
160 
162  virtual void processEntityDestroyed() {}
163 
166  double scriptGetExerciseTime();
167 
168  int scriptGetApplicationId();
169 
170  double scriptGetSimulationTime();
171 
172  double scriptGetTimeMultiplier();
173 
174  double scriptGetTimeOfDay();
175 
177  double scriptGetWindSpeed();
178 
180  double scriptGetWindDirection();
181 
182  DtScriptVrfObject scriptGetVrfObjectByName(const std::string name);
183  DtScriptVrfObject scriptGetVrfObjectByUUID(const std::string name);
184  void printError(const std::string message);
185  void printErrorToChannel(const std::string channel, const std::string message);
186  void printErrorTranslatableStream(const DtTranslatableStream& message);
187  void printWarn(const std::string message);
188  void printWarnToChannel(const std::string channel, const std::string message);
189  void printWarnTranslatableStream(const DtTranslatableStream& message);
190  void printInfo(const std::string message);
191  void printInfoToChannel(const std::string channel, const std::string message);
192  void printInfoTranslatableStream(const DtTranslatableStream& message);
193  void printVerbose(const std::string message);
194  void printVerboseToChannel(const std::string channel, const std::string message);
195  void printVerboseTranslatableStream(const DtTranslatableStream& message);
196  void printDebug(const std::string message);
197  void printDebugToChannel(const std::string channel, const std::string message);
198  void printDebugTranslatableStream(const DtTranslatableStream& message);
199  bool entityTypeMatches(const std::string&, const std::string&);
200 
202  void setTickPeriod(double);
203 
207  void setRespondToNewSensorContacts(bool);
208 
211  virtual void addPostSetDataCallback(const std::string& setDataType,
212  DtScriptFunctionReferencePtr functionReference);
213 
216  virtual void removePostSetDataCallback(const std::string& setDataType,
217  DtScriptFunctionReferencePtr functionReference);
218 
221  virtual void clearPostSetDataCallbacks();
222 
228  static void postSetDataCallback(DtSimMessage* msg, void* usr);
229  virtual void processPostSetData(DtSimMessage* msg);
231 
236  static void postTickCallback(void* usr);
237  virtual void processPostTick();
239 
244  virtual void invokePostSetDataCallback(
245  DtScriptFunctionReferencePtr functionReference,
246  DtSetDataRequestMessage* setDatRequest) = 0;
247 
259  virtual double getTerrainAltitude(const double lat, const double lon,
260  bool& dataAvailable, std::string &surface) const;
261 
264  virtual double getTerrainAltitudeBelow(const DtLocation3D& point,
265  bool& available, std::string &surfaceString)
266  const;
267 
283  virtual double getGroundAltitude(const double lat, const double lon,
284  bool&isWater, bool& dataAvailable);
285 
287  virtual void chordIntersectionDebug(const DtLocation3D& startLoc,
288  const DtLocation3D& endLoc);
289 
300  virtual bool doesChordHitTerrain(const DtLocation3D &pt1,
301  const DtLocation3D & pt2,
302  bool& dataAvailable) const;
303 
304  virtual DtLocation3D findClosestPointToRoad(const DtLocation3D& point, double searchRadius, bool& dataAvailable, bool& success, DtLocation3D& endA, DtLocation3D& endB) const;
305 
306  bool forcesHostile(std::string force1, std::string force2);
307 
309  virtual double gaussian();
311 
312 protected:
316  virtual void scriptTaskComplete(bool success);
317 
318  virtual void scriptTaskError();
319 
322  virtual bool scriptText(DtString& text);
323 
325  virtual bool scriptPath(DtString& path);
326 
327  virtual const DtReaderWriter* getTaskParam(const DtString& paramName);
328 
329  virtual bool getParamMetaDataType(const DtString& paramName, DtString& typeName);
330 
331  int myTaskId;
334  DtFilename myScriptPath;
342 
346 
350 
355 
362 
365 };
366 
367 
369 
370 typedef DtScriptInterface* (*DtScriptInterfaceCreatorFunc)();
371 
373 {
374 protected:
377  DtScriptInterfaceFactory& operator=(const DtScriptInterfaceFactory& other);
378 
379 public:
380  virtual ~DtScriptInterfaceFactory();
381 
383  static DtScriptInterfaceFactory* instance();
384 
386  virtual DtScriptInterface* createInstance(const DtString& type);
387 
390  virtual void registerCreator(const DtString& type, DtScriptInterfaceCreatorFunc func);
391 
393  static void setFactory(DtScriptInterfaceFactory* factory);
394  static DtScriptInterfaceFactory* create();
395 
396 protected:
397  std::map<DtString, DtScriptInterfaceCreatorFunc> myCreators;
399 };

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)