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 
205  void setTickWhilePaused(bool);
206 
210  void setRespondToNewSensorContacts(bool);
211 
214  virtual void addPostSetDataCallback(const std::string& setDataType,
215  DtScriptFunctionReferencePtr functionReference);
216 
219  virtual void removePostSetDataCallback(const std::string& setDataType,
220  DtScriptFunctionReferencePtr functionReference);
221 
224  virtual void clearPostSetDataCallbacks();
225 
231  static void postSetDataCallback(DtSimMessage* msg, void* usr);
232  virtual void processPostSetData(DtSimMessage* msg);
234 
239  static void postTickCallback(void* usr);
240  virtual void processPostTick();
242 
247  virtual void invokePostSetDataCallback(
248  DtScriptFunctionReferencePtr functionReference,
249  DtSetDataRequestMessage* setDatRequest) = 0;
250 
262  virtual double getTerrainAltitude(const double lat, const double lon,
263  bool& dataAvailable, std::string &surface) const;
264 
267  virtual double getTerrainAltitudeBelow(const DtLocation3D& point,
268  bool& available, std::string &surfaceString)
269  const;
270 
286  virtual double getGroundAltitude(const double lat, const double lon,
287  bool&isWater, bool& dataAvailable);
288 
290  virtual void chordIntersectionDebug(const DtLocation3D& startLoc,
291  const DtLocation3D& endLoc);
292 
303  virtual bool doesChordHitTerrain(const DtLocation3D &pt1,
304  const DtLocation3D & pt2,
305  bool& dataAvailable) const;
306 
307  virtual DtLocation3D findClosestPointToRoad(const DtLocation3D& point, double searchRadius, bool& dataAvailable, bool& success, DtLocation3D& endA, DtLocation3D& endB) const;
308 
309  bool forcesHostile(std::string force1, std::string force2);
310 
312  virtual double gaussian();
314 
315 protected:
319  virtual void scriptTaskComplete(bool success);
320 
321  virtual void scriptTaskError();
322 
325  virtual bool scriptText(DtString& text);
326 
328  virtual bool scriptPath(DtString& path);
329 
330  virtual const DtReaderWriter* getTaskParam(const DtString& paramName);
331 
332  virtual bool getParamMetaDataType(const DtString& paramName, DtString& typeName);
333 
334  int myTaskId;
337  DtFilename myScriptPath;
345 
349 
353 
358 
365 
368 };
369 
370 
372 
373 typedef DtScriptInterface* (*DtScriptInterfaceCreatorFunc)();
374 
376 {
377 protected:
380  DtScriptInterfaceFactory& operator=(const DtScriptInterfaceFactory& other);
381 
382 public:
383  virtual ~DtScriptInterfaceFactory();
384 
386  static DtScriptInterfaceFactory* instance();
387 
389  virtual DtScriptInterface* createInstance(const DtString& type);
390 
393  virtual void registerCreator(const DtString& type, DtScriptInterfaceCreatorFunc func);
394 
396  static void setFactory(DtScriptInterfaceFactory* factory);
397  static DtScriptInterfaceFactory* create();
398 
399 protected:
400  std::map<DtString, DtScriptInterfaceCreatorFunc> myCreators;
402 };

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)