VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
luaScriptInterfaceImpl.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
7 #include <vrfLua/vrfLuaDefines.h>
8 #include <vrfLua/luaFeatureSet.h>
9 #include <vrfLua/luaPathJob.h>
10 
13 #include "vrfutil/scriptGeometry.h"
15 #include <luabind/luabind.hpp>
19 #include <vrfutil/objectCounter.h>
20 #include <vrfcore/simManager.h>
21 
22 #include <lua.hpp>
23 #include <lauxlib.h>
24 #include <lualib.h>
25 
30 typedef luabind::object (*ReaderWriterToLuaTableFcn)(lua_State* LS, const DtReaderWriter* rwString,
31  DtVrfObjectManager* mgr, const DtString& parameterType);
32 
34  : public DtScriptInterface
35  , public DtObjectDebugger<DtLuaScriptInterfaceImpl>
36 {
37 protected:
39 
42 
43 public:
44  virtual ~DtLuaScriptInterfaceImpl();
45 
46  static DtScriptInterface* creator();
47 
48  virtual void init();
49 
50  virtual DtString type() const;
51 
52  virtual bool invokeInit();
53  virtual void invokeSuspend();
54  virtual bool invokeResume();
55  virtual void invokeTick();
56  virtual bool invokeCheck();
57  virtual void invokeCheckInit();
58  virtual void invokeShutdown();
59 
62  virtual void invokeDisable();
63 
64  virtual bool loadScript(bool reload);
65 
66  virtual void setLuaState(lua_State* L);
67  virtual lua_State* getLuaState();
68 
69  virtual std::string dumpLuaStack() const;
70  virtual int luaStackSize() const;
71  virtual void collectGarbage();
72 
73  virtual DtReaderWriter* saveState();
74  virtual bool loadState(const DtReaderWriter* loadState);
75  virtual void processClearForReuse();
76 
81  static void addLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
82 
87  static void addLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension,
88  const DtVrfObject* onlyForEntity, void* usr);
89 
91  static void removeLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
92 
95  static void removeLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension,
96  const DtVrfObject* onlyForEntity, void* usr);
97 
98  virtual bool initializeVRFLuaExtensions(lua_State* L);
99  virtual bool importTaskParams(lua_State* L);
100 
102  virtual bool importSetParams(lua_State* L);
103 
105  virtual luabind::object createLuaTableFromRegistry(lua_State* L, const DtReaderWriterRegistry& rwRegistry, bool requireMetadata = true);
106 
108  static void addKeyToIgnore(const std::string&);
109 
111  static void removeKeyToIgnore(const std::string&);
112 
114  void luaEndTask(bool success);
115  void luaEndSet();
116 
118 
120 
121  virtual void luaPlayScenarioEvent(DtScriptVrfObject eventName);
122  virtual void luaStopScenarioEvent(DtScriptVrfObject eventName);
123  virtual void luaStopScenarioEventWithRewind(DtScriptVrfObject eventName, bool rewind);
124  virtual bool luaIsScenarioEventPlaying(DtScriptVrfObject eventName);
125  virtual void luaSetScenarioEventEnabled(DtScriptVrfObject eventName, bool);
126  virtual bool luaIsScenarioEventEnabled(DtScriptVrfObject eventName);
128 
130 
131  virtual int luaSendEmbeddedEntityTask(std::string eeName, std::string taskName, luabind::object const& parms);
133  virtual int luaSendEmbeddedEntityTaskActAsSubtask(std::string eeName, std::string taskName,
134  luabind::object const& parms, bool actAsSubtask);
136  virtual int luaSendEmbeddedEntitySet(std::string eeName, std::string setName, luabind::object const& parms);
138 
140 
141  int luaStartSubtask(const std::string taskName, luabind::object const& parameters);
143  void luaStopSubtask(int subtaskId);
145  void luaStopAllSubtasks();
147  bool luaIsSubtaskRunning(int subtaskId);
149  bool luaIsSubtaskComplete(int subtaskId);
151  bool luaIsSubtaskCanceled(int subtaskId);
153  bool luaSubtaskResult(int subtaskId);
157  void luaCleanupInactiveSubtaskStatus();
159 
161  void luaSendReportWithoutRecipients(const::std::string reportType,
162  luabind::object const& parameters);
163  void luaSendReport(const::std::string reportType,
164  luabind::object const& reciptients,
165  luabind::object const& parameters);
166 
168  int luaSendTask(DtScriptVrfObject& object, const::std::string taskName,
169  luabind::object const& parameters);
170  int luaSendTaskActAsSubtask(DtScriptVrfObject& object, const::std::string taskName,
171  luabind::object const& parameters, bool actAsSubtask);
172  int luaSendRadioTask(DtScriptVrfObject& object, const::std::string taskName,
173  luabind::object const& parameters);
174  int luaSendRadioTaskActAsSubtask(DtScriptVrfObject& object, const::std::string taskName,
175  luabind::object const& parameters, bool actAsSubtask);
176  int luaSendTaskActAsSubtaskWithRadio(DtScriptVrfObject& object, const::std::string taskName,
177  luabind::object const& parameters, bool actAsSubtask, bool sendWithRadio);
178 
180  void luaStopAllTasks();
181 
183  void luaSendSetDataToSelf(const::std::string setName,
184  luabind::object const& parameters);
185 
187  void luaSendSetData(DtScriptVrfObject& object, const::std::string setName,
188  luabind::object const& parameters);
189  void luaSendRadioSetData(DtScriptVrfObject& object, const::std::string setName,
190  luabind::object const& parameters);
191  void sendSetDataWithRadio(DtScriptVrfObject& object, const::std::string setName,
192  luabind::object const& parameters, bool useRadio);
193 
194  bool luaIsTaskAvailable(const::std::string taskName);
195  bool luaIsSetAvailable(const::std::string setName);
196 
198  luabind::object luaGetReactionStatus();
199 
208  luabind::object luaGetOrbatList();
209 
211  std::string luaGetScriptId();
212 
214  std::string luaGetSystemName();
215 
216  luabind::object luaGetObjectsNear(const DtLocation3D& loc, double distance);
217  luabind::object luaGetObjectsNearWithFilter(const DtLocation3D& loc, double distance, luabind::object const& parameters);
218 
219  luabind::object luaGetScriptAttribute(const std::string& attributeName, bool& error);
220 
222  luabind::object luaGetVrfObjects();
223 
225 
226  luabind::object luaGetDesignatorsNearWithFilter(const DtLocation3D& loc, double distance,
227  const luabind::object& params);
228 
229  luabind::object luaGetDesignatorsNear(const DtLocation3D& loc, double distance);
231 
233 
234  DtLuaFeatureSet luaGetFeaturesWithinArea(luabind::object const& points, luabind::object const& attributes);
237  DtLuaFeatureSet luaGetFeaturesWithinAreaNoAttributes(luabind::object const& points);
238 
241  DtLuaFeatureSet luaGetFeaturesWithinRange(const DtLocation3D&, double range, luabind::object const& attributes);
243  DtLuaFeatureSet luaGetFeaturesWithinRangeNoAttributes(const DtLocation3D&, double range);
244 
246  DtLuaFeatureSet luaGetFeaturesType(const std::string& type);
248  DtLuaFeatureSet luaGetFeatures();
250 
252 
253  DtLuaFeatureGeometry luaMakePointGeometry(const DtLocation3D&);
256  DtLuaFeatureGeometry luaMakePathGeometry(luabind::object const& table);
258  DtLuaFeatureGeometry luaMakeAreaGeometry(luabind::object const& table);
260 
262  boost::shared_ptr<DtLuaAsyncJob> generateRandomPoints(const luabind::object& parameters);
263 
265  boost::shared_ptr<DtLuaAsyncJob> findNearbyPointOfInterest(const int type);
266 
268  boost::shared_ptr<DtLuaAsyncJob> findCoverPoint(
269  const DtLocation3D& startLocation, const DtLocation3D& threatLocation,
270  double threatRadius, double distanceFromThreat, double range, unsigned numberOfPoints);
271 
273  luabind::object findLadders(lua_State* L, const DtLocation3D& startLocation, double range);
275  luabind::object findLaddersWithId(lua_State* L, const DtLocation3D& startLocation, double range, const unsigned int id);
276 
278  boost::shared_ptr<DtLuaAsyncJob> findPathToLocation(
279  const DtLocation3D& startLocation, const DtLocation3D& destinationLocation,
280  bool useAbstractGraphs, const DtLocation3D& avoidLocation, double avoidanceRadius);
281 
283  DtTranslatableStream translateStringFromScript(const std::string& format);
284 
287  boost::shared_ptr<DtLuaAsyncJob> luaNavigateThroughFeatures(const luabind::object& parameters);
288 
290  boost::shared_ptr<DtLuaAsyncJob> getEmbarkationSlots(DtScriptVrfObject& object);
291 
293  boost::shared_ptr<DtLuaAsyncJob> reserveEmbarkationSlot(DtScriptVrfObject& object, int slotNumber);
294 
296  boost::shared_ptr<DtLuaAsyncJob> getEmbarkationEgressPoints(DtScriptVrfObject& object);
297 
298  void luaSendMessage(const DtScriptVrfObject& receiver, const std::string& message);
299  void luaSendRadioMessage(const DtScriptVrfObject& receiver, const std::string& message);
300  void luaDeleteObject(std::string const& receiver);
301  void luaDeleteScriptObject(const DtScriptVrfObject& receiver);
302 
303  static void textReportCallback(const DtVrfObjectMessage* m, void* usr);
304  virtual void processTextReport(const DtVrfObjectMessage* m);
305 
306  void luaSendInfluence(const DtScriptVrfObject& target,
307  const std::string& influenceName, luabind::object const& influenceParams);
308 
310  static void addReaderWriterToLuaTableFunction(const DtString&, ReaderWriterToLuaTableFcn);
311 
312 #ifdef DtHLA
313  static void influenceCallback(DtInfluenceInteractionExtension* m, void* usr);
314  virtual void processInfluence(DtInfluenceInteractionExtension* m);
315 #endif
316 
318  virtual void processEntityDestroyed();
319 
321  virtual void luaSetCloudLayerType(DtScriptVrfObject& object, int value);
323  virtual void luaSetCloudLayerAltitude(DtScriptVrfObject& object, double value);
324  virtual void luaSetCloudLayerThickness(DtScriptVrfObject& object, double value);
325  virtual void luaSetCloudCornerRadius(DtScriptVrfObject& object, double value);
326  virtual void luaSetCloudLayerDensity(DtScriptVrfObject& object, double value);
327  virtual void luaSetCloudLayerBox(DtScriptVrfObject& object, const DtLocation3D& location, double width, double length);
328 
329  virtual DtScriptVrfObject luaGetCloudLayer(const DtLocation3D& location);
330  virtual std::vector<DtScriptVrfObject> luaGetCloudLayers();
331  virtual int luaGetCloudLayerType(DtScriptVrfObject& object);
332  virtual double luaGetCloudLayerAltitude(DtScriptVrfObject& object);
333  virtual double luaGetCloudLayerThickness(DtScriptVrfObject& object);
334  virtual double luaGetCloudCornerRadius(DtScriptVrfObject& object);
335  virtual double luaGetCloudLayerDensity(DtScriptVrfObject& object);
336  virtual void luaGetCloudLayerBox(DtScriptVrfObject& object, DtLocation3D& center, double* width, double* length);
338 
341  virtual void luaSetPrecipitationIntensity(DtScriptVrfObject& object, double intensity);
342  virtual void luaSetPrecipitationType(DtScriptVrfObject& object, int type);
343  virtual void luaSetCloudCover(DtScriptVrfObject& object, int state);
344  virtual void luaSetVisibilityDistance(DtScriptVrfObject& object, double distance);
345  virtual void luaSetWindDirection(DtScriptVrfObject& object, double);
346  virtual void luaSetWindSpeed(DtScriptVrfObject& object, double);
347  virtual void luaSetUnderwaterVisibility(DtScriptVrfObject& object, double visibility);
348  virtual void luaSetSurfaceTransparency(DtScriptVrfObject& object, double transparency);
349  virtual void luaSetSwellState(DtScriptVrfObject& object, unsigned int state);
350  virtual void luaSetSwellStateDirection(DtScriptVrfObject& object, double direction);
351  virtual void luaSetSeaState(DtScriptVrfObject& object, unsigned int state);
352  virtual void luaSetSeaStateDirection(DtScriptVrfObject& object, double direction);
353  virtual void luaSetWindDrivenSeaStateEnabled(DtScriptVrfObject& object, bool enabled);
354  virtual void luaSetChoppiness(DtScriptVrfObject& object, double choppiness);
355  virtual void luaSetSurgeDepth(DtScriptVrfObject& object, double depth);
356  virtual void luaSetFogHeight(DtScriptVrfObject& object, double depth);
357  virtual void luaSetFogColor(DtScriptVrfObject& object, double red, double green, double blue);
358  virtual void luaSetPriority(DtScriptVrfObject& object, int);
359  virtual void luaSetSnowAccumulation(DtScriptVrfObject& object, double snow);
360  virtual void luaSetSnowMinimumAltitude(DtScriptVrfObject& object, double snow);
361  virtual void luaSetSnowRoadAccumulation(DtScriptVrfObject& object, double snow);
362  virtual void luaSetRainAccumulation(DtScriptVrfObject& object, double rain);
363 
364  virtual bool isWeatherObject(DtScriptVrfObject&) const;
365  virtual bool isCloudLayer(DtScriptVrfObject&) const;
366 
367  virtual double luaGetAirTemperature(DtScriptVrfObject& object);
368  virtual unsigned int luaGetPrecipitation(DtScriptVrfObject& object, double*);
369  virtual double luaGetPrecipitationIntensity(DtScriptVrfObject& object);
370  virtual unsigned int luaGetPrecipitationType(DtScriptVrfObject& object);
371  virtual int luaGetCloudCover(DtScriptVrfObject& object);
372  virtual double luaGetVisibilityDistance(DtScriptVrfObject& object);
373  virtual double luaGetWindDirection(DtScriptVrfObject& object);
374  virtual double luaGetWindSpeed(DtScriptVrfObject& object);
375  virtual double luaGetUnderwaterVisibility(DtScriptVrfObject& object);
376  virtual double luaGetSurfaceTransparency(DtScriptVrfObject& object);
377  virtual unsigned int luaGetSwellState(DtScriptVrfObject& object);
378  virtual double luaGetSwellStateDirection(DtScriptVrfObject& object);
379  virtual unsigned int luaGetSeaState(DtScriptVrfObject& object);
380  virtual double luaGetSeaStateDirection(DtScriptVrfObject& object);
381  virtual bool luaGetWindDrivenSeaStateEnabled(DtScriptVrfObject& object);
382  virtual double luaGetChoppiness(DtScriptVrfObject& object);
383  virtual double luaGetSurgeDepth(DtScriptVrfObject& object);
384  virtual double luaGetFogHeight(DtScriptVrfObject& object);
385  virtual double luaGetFogHeightByLocation(const DtLocation3D& object);
386  virtual void luaGetFogColor(DtScriptVrfObject& object, double* red, double* green, double* blue);
387  virtual void luaGetFogColorByLocation(const DtLocation3D& object, double* red, double* green, double* blue);
388  virtual int luaGetPriority(DtScriptVrfObject& object);
389  virtual double luaGetIllumination(DtScriptVrfObject& object);
390  virtual double luaGetExpectedIllumination(DtScriptVrfObject& object, double dateAndTimeOfDay);
391  virtual double luaGetSnowAccumulation(DtScriptVrfObject& object);
392  virtual double luaGetSnowAccumulationByLocation(const DtLocation3D& object);
393  virtual double luaGetSnowMinimumAltitude(DtScriptVrfObject& object);
394  virtual double luaGetSnowMinimumAltitudeByLocation(const DtLocation3D& object);
395  virtual double luaGetSnowRoadAccumulation(DtScriptVrfObject& object);
396  virtual double luaGetSnowRoadAccumulationByLocation(const DtLocation3D& object);
397  virtual double luaGetRainAccumulation(DtScriptVrfObject& object);
398  virtual double luaGetRainAccumulationByLocation(const DtLocation3D& object);
399 
400  virtual double luaGetAirTemperatureByLocation(const DtLocation3D& object);
401  virtual unsigned int luaGetPrecipitationByLocation(const DtLocation3D& location, double*);
402  virtual double luaGetPrecipitationIntensityByLocation(const DtLocation3D& object);
403  virtual unsigned int luaGetPrecipitationTypeByLocation(const DtLocation3D& object);
404  virtual int luaGetCloudCoverByLocation(const DtLocation3D& object);
405  virtual double luaGetVisibilityDistanceByLocation(const DtLocation3D& object);
406  virtual double luaGetWindDirectionByLocation(const DtLocation3D& object);
407  virtual double luaGetWindSpeedByLocation(const DtLocation3D& object);
408  virtual double luaGetUnderwaterVisibilityByLocation(const DtLocation3D& object);
409  virtual double luaGetSurfaceTransparencyByLocation(const DtLocation3D& object);
410  virtual unsigned int luaGetSwellStateByLocation(const DtLocation3D& object);
411  virtual double luaGetSwellStateDirectionByLocation(const DtLocation3D& object);
412  virtual unsigned int luaGetSeaStateByLocation(const DtLocation3D& object);
413  virtual double luaGetSeaStateDirectionByLocation(const DtLocation3D& object);
414  virtual bool luaGetWindDrivenSeaStateEnabledByLocation(const DtLocation3D& object);
415  virtual double luaGetChoppinessByLocation(const DtLocation3D& object);
416  virtual double luaGetSurgeDepthByLocation(const DtLocation3D& object);
417  virtual int luaGetPriorityByLocation(const DtLocation3D& object);
418  virtual double luaGetIlluminationByLocation(const DtLocation3D& object);
419  virtual double luaGetExpectedIlluminationByLocation(const DtLocation3D& object, double dateAndTimeOfDay);
421 
424  virtual double luaRunDurationTime();
425  virtual void luaRunForDuration(double);
426  virtual void luaStopSimulationDurationTimer();
428 
431  virtual void luaSetCheckpointMode(bool);
432  virtual void initializeCheckpointStateTable(lua_State* L);
433 
442  virtual int luaAskUserQuestion(const DtTranslatableStream& title, const DtTranslatableStream& message,
443  luabind::object const& options, int displayFlags);
444  virtual int luaAskUserQuestionST(const std::string& title, const DtTranslatableStream& message,
445  luabind::object const& options, int displayFlags);
446  virtual int luaAskUserQuestionTS(const DtTranslatableStream& title, const std::string& message,
447  luabind::object const& options, int displayFlags);
448  virtual int luaAskUserQuestionSS(const std::string& title, const std::string& message,
449  luabind::object const& options, int displayFlags);
450 
454  virtual int luaStatusOfUserQuestion(int questionId);
455 
457  virtual void luaCancelUserQuestion(int questionId);
458 
462 
464  DtScriptVrfObject luaCreateEntity(luabind::object const& parameters);
465 
467  DtScriptVrfObject luaCreateFromOrbat(std::string orbatItem, const DtLocation3D& loc);
468 
470  DtScriptVrfObject luaGetGlobalWeather();
471 
473  DtScriptVrfObject luaCreateTacticalGraphic(luabind::object const& parameters);
474 
476  DtScriptVrfObject luaCreateObstacle(luabind::object const& parameters);
477 
479  DtScriptVrfObject luaCreateRoute(luabind::object const& parameters);
480 
482  DtScriptVrfObject luaCreateArea(luabind::object const& parameters);
483 
485  DtScriptVrfObject luaCreateWaypoint(luabind::object const& parameters);
486 
488  DtScriptVrfObject luaCreatePhaseLine(luabind::object const& parameters);
490 
492  virtual std::vector<DtLocation3D> luaMakeOffsetPoints(luabind::object const& fromPoints,
493  const DtVectorOffset3D& offset);
494 
496  void luaCreateSelectionGroup(const std::string& name, luabind::object const& parameters);
497 
501  void luaFinishTest(const int status, const std::string message);
502 
504  bool luaUpdateTaskVisualization(const std::string& visualizationName,
505  const std::string& visualizationType, luabind::object const& parameters);
506 
508  void luaDeleteTaskVisualization(const std::string& visualizationName);
509 
511  void luaRequire(lua_State* L, const std::string& filename);
512 
515  unsigned luaBitwiseOr(unsigned val1, unsigned val2);
516  unsigned luaBitwiseAnd(unsigned val1, unsigned val2);
517  unsigned luaBitwiseXor(unsigned val1, unsigned val2);
518  unsigned luaBitwiseNot(unsigned val);
519  unsigned luaBitwiseLeftShift(unsigned val, unsigned shift);
520  unsigned luaBitwiseRightShift(unsigned val, unsigned shift);
522 
523  bool luaIntersectSegments2D(const DtLocation3D& p1, const DtLocation3D& p2, const DtLocation3D& p3, const DtLocation3D& p4,
524  DtLocation3D& intersectPoint);
525 
530  {
531  public:
532  DtLuaScriptFunctionReference(const std::string& functionName)
534  , myFunctionName(functionName)
535  {
536 
537  }
538 
540  {
541 
542  }
543 
544  std::string functionName() const
545  {
546  return myFunctionName;
547  }
548 
549  virtual bool operator<(const DtScriptFunctionReference& other) const
550  {
551  try
552  {
553  const DtLuaScriptFunctionReference& rhs =
554  dynamic_cast<const DtLuaScriptFunctionReference&>(other);
555  return myFunctionName.compare(rhs.myFunctionName) < 0;
556  }
557  catch(...)
558  {
559  DtInfo << "DtLuaScriptFunctionReference::operator< attempt to compare with wrong type.\n";
560  return false;
561  }
562  }
563 
564  protected:
565  std::string myFunctionName;
566  };
567 
570  virtual void addPostSetDataCallback(const std::string& setDataType,
571  const std::string& functionName);
574  virtual void removePostSetDataCallback(const std::string& setDataType,
575  const std::string& functionName);
576 
579  virtual void invokePostSetDataCallback(
580  DtScriptFunctionReferencePtr functionReference,
581  DtSetDataRequestMessage* setDatRequest);
582 
588  virtual luabind::object luaGetParamPropertyFromType(
589  const std::string typeString, std::string const& paramName);
590 
592  virtual void putObjectsFromTableIntoGlobalTable(lua_State* state, luabind::object& table);
593  virtual void putObjectsFromGlobalTableIntoTable(lua_State* state, luabind::object& table);
594 
595 protected:
599  virtual bool callLuaNoArgFunction(const std::string& functionName, bool* functionExists = 0);
600 
601  virtual void updateFuncCallCount();
602 
603  lua_State* myLState;
604  unsigned myFuncCallCount;
606 
607  typedef std::vector<DtLuaScriptInterfaceExtension*> LocalInterfaceExtensions;
609 
611  {
612  LuaExtension() : creator(0), onlyForEntity(0), usr(0) {};
613  LuaExtension(const LuaExtension& orig) : creator(orig.creator), onlyForEntity(orig.onlyForEntity),
614  usr(orig.usr) {};
615 
618  void* usr;
619  };
620 
621  typedef std::vector<LuaExtension> GlobalInterfaceExtensions;
622 
624 
625  luabind::object* myCheckpointStateTable;
626 
627  typedef std::map<DtString, ReaderWriterToLuaTableFcn> ReaderWriterToLuaTableMap;
629 };
630 
632 
640 namespace luaScriptInterface
641 {
642  typedef luabind::object (*rwToLuaBindObjectFcn)(
643  DtReaderWriter* rw, lua_State* L);
644 
645  luabind::object luaGetEntityParam(lua_State* L,
646  const DtScriptVrfObject& entity, std::string const& paramName);
647 
648  luabind::object luaGetSystemAttribute(
649  const DtScriptComponentSystem& system, const std::string& attributeName
650  , bool *error
651  , lua_State *L
652  );
653 
655  luabind::object luaGetContactInfo(lua_State* L, const DtScriptVrfObject& thisEntity,
656  const DtScriptVrfObject& otherEntity);
657 
659  luabind::object luaGetTargetPriorityList(lua_State* L, const DtScriptVrfObject& thisEntity);
660 
661 
666  std::list<DtScriptVrfObject> luaGetContactsWithFilter(
667  lua_State* L, const DtScriptVrfObject& entity,
668  luabind::object const& typeFilters, bool observedOnly);
669 
672  bool luaSetStateProperty(lua_State* L, const DtScriptVrfObject& entity,
673  const std::string& propertyName, luabind::object const& prop);
674 
678  bool luaSetOrAddStateProperty(lua_State* L, const DtScriptVrfObject& entity,
679  const std::string& propertyName, luabind::object const& prop, bool addIfNotFound);
680 
687  bool luaSetStatePropertyListItem(lua_State* L,
688  const DtScriptVrfObject& entity, const std::string& propertyName,
689  luabind::object const& keyValues, luabind::object const& itemValue);
690 
697  lua_State* L, const DtScriptVrfObject& entity, const std::string& propertyName,
698  int index, luabind::object const& itemValue);
699 
706  bool luaSetStatePropertyMapItem(lua_State* L,
707  const DtScriptVrfObject& entity, const std::string& propertyName,
708  luabind::object const& keyValue, luabind::object const& itemValue);
709 
714  luabind::object luaGetStateProperty(lua_State* L,
715  const DtScriptVrfObject& entity, const std::string& propertyName);
716 
725  luabind::object luaGetStatePropertyListItem(lua_State* L,
726  const DtScriptVrfObject& entity, const std::string& propertyName,
727  luabind::object const& keyValues, int& index);
728 
736  luabind::object luaGetStatePropertyListItemByIndex(lua_State* L,
737  const DtScriptVrfObject& entity, const std::string& propertyName,
738  int index);
739 
747  luabind::object luaGetStatePropertyMapItem(lua_State* L,
748  const DtScriptVrfObject& entity, const std::string& propertyName,
749  luabind::object const& keyValue);
750 
755  luabind::object luaGetParamProperty(lua_State* L,
756  const DtScriptVrfObject& entity, std::string const& paramName);
757 
766  luabind::object luaGetParameterPropertyListItem(lua_State* L,
767  const DtScriptVrfObject& entity, const std::string& propertyName,
768  luabind::object const& keyValues, int& index);
769 
777  luabind::object luaGetParameterPropertyListItemByIndex(lua_State* L,
778  const DtScriptVrfObject& entity, const std::string& propertyName,
779  int index);
780 
788  luabind::object luaGetParameterPropertyMapItem(lua_State* L,
789  const DtScriptVrfObject& entity, const std::string& propertyName,
790  luabind::object const& keyValue);
791 
793  DtScriptComponentSystem& system, const std::string& attributeName,
794  const luabind::object & value,
795  lua_State *L);
796 
797  static const std::map<DtString, rwToLuaBindObjectFcn>& rwToLuaBindObjectMap();
798 };
virtual void invokePostSetDataCallback(DtScriptFunctionReferencePtr functionReference, DtSetDataRequestMessage *setDatRequest)=0
Implement to invoke the function referenced by functionReference.
virtual bool operator<(const DtScriptFunctionReference &other) const
Required for std::set.
Definition: luaScriptInterfaceImpl.h:549
virtual void processEntityDestroyed()
Can be overridden to perform some processing when the entity is destroyed.
Definition: scriptInterface.h:168
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
virtual void addPostSetDataCallback(const DtSetMessageType &setDataType, DtScriptFunctionReferencePtr functionReference)
Adds a callback to be invoked after the specified type of set data request is executed.
virtual bool invokeInit()=0
luabind::object luaGetParameterPropertyListItemByIndex(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, int index)
Returns an object containing the value of the of an item in the given parameter property.
luabind::object luaGetParamProperty(lua_State *L, const DtScriptVrfObject &entity, std::string const &paramName)
Returns an object containing the value of the requested parameter property.
luabind::object * myCheckpointStateTable
Definition: luaScriptInterfaceImpl.h:625
bool luaSetStatePropertyMapItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValue, luabind::object const &itemValue)
Sets a single item in a map state property to the given value.
bool luaSetOrAddStateProperty(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &prop, bool addIfNotFound)
Sets the specified state property with the given value.
static GlobalInterfaceExtensions theLuaInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:623
std::vector< LuaExtension > GlobalInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:621
lua_State * myLState
Definition: luaScriptInterfaceImpl.h:603
virtual bool invokeResume()=0
virtual bool loadState(const DtReaderWriter *savedState)=0
Called when the scenario is loaded.
unsigned myFuncCallCount
Definition: luaScriptInterfaceImpl.h:604
bool luaSetStatePropertyListItemByIndex(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, int index, luabind::object const &itemValue)
Finds the item in the list at the specified index and updates it to the new value.
virtual void invokeCheckInit()=0
const DtVrfObject * onlyForEntity
Definition: luaScriptInterfaceImpl.h:617
luabind::object luaGetParameterPropertyListItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValues, int &index)
Returns an object containing the value of the of an item in the given parameter property.
Definition: readerWriter.h:85
#define DT_DEFINE_OBJECT_DEBUGGER_NAME(type)
Definition: objectCounter.h:265
Default on in debug, off in release.
Definition: objectCounter.h:31
virtual void removePostSetDataCallback(const DtSetMessageType &setDataType, DtScriptFunctionReferencePtr functionReference)
Remove a callback invoked after the specified type of set data request is executed.
Definition: readerWriterRegistry.h:39
virtual DtReaderWriter * saveState()=0
Called when the scenario is saved.
luabind::object luaGetStatePropertyListItemByIndex(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, int index)
Returns an object containing the value of the of an item in the given state property.
LocalInterfaceExtensions myInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:608
virtual bool loadScript(bool reload=false)=0
This will be called by the parent to let the interface know when to load the script.
bool myLuaScriptWarningShown
Definition: luaScriptInterfaceImpl.h:605
static ReaderWriterToLuaTableMap theReaderWriterToLuaTableMap
Definition: luaScriptInterfaceImpl.h:628
std::string functionName() const
Definition: luaScriptInterfaceImpl.h:544
DtLuaScriptFunctionReference(const std::string &functionName)
Definition: luaScriptInterfaceImpl.h:532
luabind::object luaGetStatePropertyMapItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValue)
Returns an object containing the value of the of an item in the given state property.
! VectorOffset3D is a direction vector that is relative to some direction specified by a Vector3D...
Definition: scriptGeometry.h:416
LuaExtension(const LuaExtension &orig)
Definition: luaScriptInterfaceImpl.h:613
virtual DtString type() const =0
Script engine type.
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
Represents a feature geometry.
Definition: luaFeatureGeometry.h:25
static const std::map< DtString, rwToLuaBindObjectFcn > & rwToLuaBindObjectMap()
Definition: luaScriptInterfaceImpl.h:33
luabind::object(* ReaderWriterToLuaTableFcn)(lua_State *LS, const DtReaderWriter *rwString, DtVrfObjectManager *mgr, const DtString &parameterType)
When adding decoder functions to turn reader/writer into lua tables, the format must be of the follow...
Definition: luaScriptInterfaceImpl.h:30
luabind::object luaGetSystemAttribute(const DtScriptComponentSystem &system, const std::string &attributeName, bool *error, lua_State *L)
virtual void invokeDisable()=0
Only called for reactive tasks which can be enabled but not active.
virtual void invokeTick()=0
This will be called by the parent to invoke the script tick.
#define DT_DLL_vrfLua
This file is used to determine how to build.
Definition: vrfLuaDefines.h:25
luabind::object luaGetTargetPriorityList(lua_State *L, const DtScriptVrfObject &thisEntity)
Gets the target priority list that this entity has.
boost::shared_ptr< DtScriptFunctionReference > DtScriptFunctionReferencePtr
Shared ptr to DtScriptFunctionReference.
Definition: scriptInterface.h:50
luabind::object luaGetStatePropertyListItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValues, int &index)
Returns an object containing the value of the of an item in the given state property.
This stream is used by the scripting classes to be able to send out translatable messages from script...
Definition: translatableStream.h:22
The base class for all messages to/from a specific DtVrfObject.
Definition: vrfObjectMessage.h:30
Override of DtScriptInterface::DtScriptFunctionReference that holds a function reference by function ...
Definition: luaScriptInterfaceImpl.h:529
std::vector< DtLuaScriptInterfaceExtension * > LocalInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:607
Abstract object used to hold a reference to a function defined in the script language, to be used later to invoke that function.
Definition: scriptInterface.h:39
luabind::object luaGetEntityParam(lua_State *L, const DtScriptVrfObject &entity, std::string const &paramName)
luabind::object luaGetStateProperty(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName)
Returns an object containing the value of the requested state property.
virtual void processClearForReuse()
This function should be overridden by the inheritor to clear out any task specific variables...
Definition: asyncJobServer.h:39
class DtVrfObjectManager:
Definition: vrfObjectManager.h:201
DtTranslatableStream.
std::list< DtScriptVrfObject > luaGetContactsWithFilter(lua_State *L, const DtScriptVrfObject &entity, luabind::object const &typeFilters, bool observedOnly)
This function supports the script API.
bool luaSetStateProperty(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &prop)
Sets the specified state property with the given value.
DtLuaScriptInterfaceExtension *(* CreatorFcn)(void *usr)
Prototype for DtLuaScriptInterfaceExtension creator function.
Definition: luaScriptInterfaceExtension.h:34
DtScriptInterface & operator=(const DtScriptInterface &other)
virtual bool invokeCheck()=0
The DtLuaFeatureSet class is a wrapper around a DtFeatureSet that will provide feature information fo...
Definition: luaFeatureSet.h:28
LuaExtension()
Definition: luaScriptInterfaceImpl.h:612
bool luaSetStatePropertyListItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValues, luabind::object const &itemValue)
Sets a single item in a list state property to the given value.
luabind::object luaGetContactInfo(lua_State *L, const DtScriptVrfObject &thisEntity, const DtScriptVrfObject &otherEntity)
Gets the perceived contact info that this entity has for another entity.
std::map< DtString, ReaderWriterToLuaTableFcn > ReaderWriterToLuaTableMap
Definition: luaScriptInterfaceImpl.h:627
DtLuaScriptInterfaceExtension.
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool luaSetSystemAttribute(DtScriptComponentSystem &system, const std::string &attributeName, const luabind::object &value, lua_State *L)
Contains Extended DI-Guy Object net types.
void * usr
Definition: luaScriptInterfaceImpl.h:618
Definition: luaScriptInterfaceImpl.h:610
This class is a wrapper for a DtCompSystem for use by scripts.
Definition: scriptComponentSystem.h:19
This class is a two-way interface between the script language and its parent controller.
Definition: scriptInterface.h:28
std::string myFunctionName
Definition: luaScriptInterfaceImpl.h:565
virtual void invokeSuspend()=0
voidpf uLong offset
Definition: ioapi.h:42
A DtSetDataRequestMessage is a DtRadioMsg with a pointer to a setDataRequest.
Definition: setDataRequestMessage.h:23
Instances of DtInfluenceInteractionExtension are used to store state data for Influence interactions ...
Definition: influenceInteractionExtension.h:29
luabind::object(* rwToLuaBindObjectFcn)(DtReaderWriter *rw, lua_State *L)
Definition: luaScriptInterfaceImpl.h:642
luabind::object luaGetParameterPropertyMapItem(lua_State *L, const DtScriptVrfObject &entity, const std::string &propertyName, luabind::object const &keyValue)
Returns an object containing the value of the of an item in the given parameter property.
virtual void invokeShutdown()=0
virtual ~DtLuaScriptFunctionReference()
Definition: luaScriptInterfaceImpl.h:539
Definition: scriptVrfObject.h:24
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)