VR-Forces 4.3.1 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  void printError(const std::string message);
184  void printErrorTranslatableStream(const DtTranslatableStream& message);
185  void printWarn(const std::string message);
186  void printWarnTranslatableStream(const DtTranslatableStream& message);
187  void printInfo(const std::string message);
188  void printInfoTranslatableStream(const DtTranslatableStream& message);
189  void printVerbose(const std::string message);
190  void printVerboseTranslatableStream(const DtTranslatableStream& message);
191  void printDebug(const std::string message);
192  void printDebugTranslatableStream(const DtTranslatableStream& message);
193  bool entityTypeMatches(const std::string&, const std::string&);
194 
196  void setTickPeriod(double);
197 
201  void setRespondToNewSensorContacts(bool);
202 
205  virtual void addPostSetDataCallback(const std::string& setDataType,
206  DtScriptFunctionReferencePtr functionReference);
207 
210  virtual void removePostSetDataCallback(const std::string& setDataType,
211  DtScriptFunctionReferencePtr functionReference);
212 
215  virtual void clearPostSetDataCallbacks();
216 
222  static void postSetDataCallback(DtSimMessage* msg, void* usr);
223  virtual void processPostSetData(DtSimMessage* msg);
225 
230  static void postTickCallback(void* usr);
231  virtual void processPostTick();
233 
238  virtual void invokePostSetDataCallback(
239  DtScriptFunctionReferencePtr functionReference,
240  DtSetDataRequestMessage* setDatRequest) = 0;
241 
253  double getTerrainAltitude(const double lat, const double lon,
254  bool& dataAvailable, std::string &surface) const;
255 
271  double getGroundAltitude(const double lat, const double lon,
272  bool&isWater, bool& dataAvailable);
273 
275  void chordIntersectionDebug(const DtLocation3D& startLoc,
276  const DtLocation3D& endLoc);
277 
286  bool doesChordHitTerrain(const DtLocation3D &pt1,
287  const DtLocation3D & pt2,
288  bool& dataAvailable
289  ) const;
290 
291  DtLocation3D findClosestPointToRoad(const DtLocation3D& point, double searchRadius, bool& dataAvailable, bool& success) const;
292 
293  std::string getForceName(int forceType);
294  bool forcesHostile(std::string force1, std::string force2);
295 
297  double gaussian();
299 
300 protected:
304  virtual void scriptTaskComplete(bool success);
305 
306  virtual void scriptTaskError();
307 
310  virtual bool scriptText(DtString& text);
311 
313  virtual bool scriptPath(DtString& path);
314 
315  virtual const DtReaderWriter* getTaskParam(const DtString& paramName);
316 
317  virtual bool getParamMetaDataType(const DtString& paramName, DtString& typeName);
318 
319  int myTaskId;
322  DtFilename myScriptPath;
330 
334 
338 
343 
350 
353 };
354 
355 
357 
358 typedef DtScriptInterface* (*DtScriptInterfaceCreatorFunc)();
359 
361 {
362 protected:
365  DtScriptInterfaceFactory& operator=(const DtScriptInterfaceFactory& other);
366 
367 public:
368  virtual ~DtScriptInterfaceFactory();
369 
371  static DtScriptInterfaceFactory* instance();
372 
374  virtual DtScriptInterface* createInstance(const DtString& type);
375 
378  virtual void registerCreator(const DtString& type, DtScriptInterfaceCreatorFunc func);
379 
381  static void setFactory(DtScriptInterfaceFactory* factory);
382  static DtScriptInterfaceFactory* create();
383 
384 protected:
385  std::map<DtString, DtScriptInterfaceCreatorFunc> myCreators;
387 };

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)