VR-Forces 4.5 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 
159 
160  virtual void setIsSet(bool isSet);
161  virtual bool isSet() const;
163 
164  virtual void setController(DtScriptTaskControllerInterface* controller) { myControllerInterface = controller; }
165  virtual DtScriptTaskControllerInterface* controller() { return myControllerInterface; }
166 
168  virtual void processEntityDestroyed() {}
169 
172  double scriptGetExerciseTime();
173 
174  int scriptGetApplicationId();
175 
176  double scriptGetSimulationTime();
177 
178  double scriptGetTimeMultiplier();
179 
180  double scriptGetTimeOfDay();
181 
182  double scriptGetDateAndTimeOfDay();
183 
185  double scriptGetWindSpeed();
186 
188  double scriptGetWindDirection();
189 
190  DtScriptVrfObject scriptGetVrfObjectByName(const std::string name);
191  DtScriptVrfObject scriptGetVrfObjectByUUID(const std::string name);
192  void printError(const std::string message);
193  void printErrorToChannel(const std::string channel, const std::string message);
194  void printErrorTranslatableStream(const DtTranslatableStream& message);
195  void printWarn(const std::string message);
196  void printWarnToChannel(const std::string channel, const std::string message);
197  void printWarnTranslatableStream(const DtTranslatableStream& message);
198  void printInfo(const std::string message);
199  void printInfoToChannel(const std::string channel, const std::string message);
200  void printInfoTranslatableStream(const DtTranslatableStream& message);
201  void printVerbose(const std::string message);
202  void printVerboseToChannel(const std::string channel, const std::string message);
203  void printVerboseTranslatableStream(const DtTranslatableStream& message);
204  void printDebug(const std::string message);
205  void printDebugToChannel(const std::string channel, const std::string message);
206  void printDebugTranslatableStream(const DtTranslatableStream& message);
207  bool entityTypeMatches(const std::string&, const std::string&);
208 
210  void setTickPeriod(double);
211 
213  void setTickWhilePaused(bool);
214 
218  void setRespondToNewSensorContacts(bool);
219 
222  virtual void addPostSetDataCallback(const std::string& setDataType,
223  DtScriptFunctionReferencePtr functionReference);
224 
227  virtual void removePostSetDataCallback(const std::string& setDataType,
228  DtScriptFunctionReferencePtr functionReference);
229 
232  virtual void clearPostSetDataCallbacks();
233 
239  static void postSetDataCallback(DtSimMessage* msg, void* usr);
240  virtual void processPostSetData(DtSimMessage* msg);
242 
247  static void postTickCallback(void* usr);
248  virtual void processPostTick();
250 
255  virtual void invokePostSetDataCallback(
256  DtScriptFunctionReferencePtr functionReference,
257  DtSetDataRequestMessage* setDatRequest) = 0;
258 
270  virtual double getTerrainAltitude(const double lat, const double lon,
271  bool& dataAvailable, std::string &surface) const;
272 
275  virtual double getTerrainAltitudeBelow(const DtLocation3D& point,
276  bool& available, std::string &surfaceString)
277  const;
278 
294  virtual double getGroundAltitude(const double lat, const double lon,
295  bool&isWater, bool& dataAvailable);
296 
298  virtual void chordIntersectionDebug(const DtLocation3D& startLoc,
299  const DtLocation3D& endLoc);
300 
311  virtual bool doesChordHitTerrain(const DtLocation3D &pt1,
312  const DtLocation3D & pt2,
313  bool& dataAvailable) const;
314 
321  bool chordIntersectsTerrain(const DtLocation3D &pt1,
322  const DtLocation3D & pt2,
323  bool& dataAvailable,
324  DtLocation3D &intersection) const;
325 
326  virtual DtLocation3D findClosestPointToRoad(const DtLocation3D& point,
327  double searchRadius, bool& dataAvailable, bool& success,
328  DtLocation3D& endA, DtLocation3D& endB, double& offsetToOutsideLane) const;
329 
331  virtual std::list<std::string> getDynamicTerrainFeatureChangeTypes(
332  const DtLocation3D& location, double radius, bool& dataVailable);
333 
336  virtual std::list<DtLocation3D> getDynamicTerrainFeatureLocationsForChangeType(
337  const std::string& changeType, const DtLocation3D& location, double radius, bool& dataVailable);
338 
341  virtual std::list<std::string> getDynamicTerrainFeatureValuesForChangeType(
342  const std::string& changeType, const DtLocation3D& location, double radius, bool& dataVailable);
343 
345  virtual void changeDynamicTerrain(const std::string& changeType, const std::string& changeValue,
346  const DtLocation3D& location, double radius);
347 
348  bool forcesHostile(std::string force1, std::string force2);
349 
351  virtual double gaussian();
353 
354 protected:
358  virtual void scriptTaskComplete(bool success);
359 
360  virtual void scriptTaskError();
361 
364  virtual bool scriptText(DtString& text);
365 
367  virtual bool scriptPath(DtString& path);
368 
369  virtual const DtReaderWriter* getTaskParam(const DtString& paramName);
370 
371  virtual bool getParamMetaDataType(const DtString& paramName, DtString& typeName);
372 
373  int myTaskId;
376  DtFilename myScriptPath;
384  bool myIsSet;
385 
389 
393 
398 
405 
408 };
409 
410 
412 
413 typedef DtScriptInterface* (*DtScriptInterfaceCreatorFunc)();
414 
416 {
417 protected:
420  DtScriptInterfaceFactory& operator=(const DtScriptInterfaceFactory& other);
421 
422 public:
423  virtual ~DtScriptInterfaceFactory();
424 
426  static DtScriptInterfaceFactory* instance();
427 
429  virtual DtScriptInterface* createInstance(const DtString& type);
430 
433  virtual void registerCreator(const DtString& type, DtScriptInterfaceCreatorFunc func);
434 
436  static void setFactory(DtScriptInterfaceFactory* factory);
437  static DtScriptInterfaceFactory* create();
438 
439 protected:
440  std::map<DtString, DtScriptInterfaceCreatorFunc> myCreators;
442 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)