VR-Forces 4.10 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) 2020 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 
27 
32 typedef luabind::object (*ReaderWriterToLuaTableFcn)(lua_State* LS, const DtReaderWriter* rwString,
33  DtVrfObjectManager* mgr, const DtString& parameterType);
34 
36  : public DtScriptInterface
37 #ifdef DtObjectDebugger_Enable
38  , public DtObjectDebugger<DtLuaScriptInterfaceImpl>
39 #endif
40 {
41 protected:
43 
46 
47 public:
48  virtual ~DtLuaScriptInterfaceImpl();
49 
50  static DtScriptInterface* creator();
51 
52  virtual void init();
53 
54  virtual DtString type() const;
55 
56  virtual bool invokeInit();
57  virtual void invokeSuspend();
58  virtual bool invokeResume();
59  virtual void invokeTick();
60  virtual bool invokeCheck();
61  virtual void invokeCheckInit();
62  virtual void invokeShutdown();
63 
66  virtual void invokeDisable();
67 
68  virtual bool loadScript(bool reload);
69 
70  virtual void setLuaState(lua_State* L);
71  virtual lua_State* getLuaState();
72 
73  virtual std::string dumpLuaStack() const;
74  virtual int luaStackSize() const;
75  virtual void collectGarbage();
76 
77  virtual DtReaderWriter* saveState();
78  virtual bool loadState(const DtReaderWriter* loadState);
79  virtual void processClearForReuse();
80 
85  static void addLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
86 
91  static void addLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension,
92  const DtVrfObject* onlyForEntity, void* usr);
93 
95  static void removeLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
96 
99  static void removeLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension,
100  const DtVrfObject* onlyForEntity, void* usr);
101 
102  virtual bool initializeVRFLuaExtensions(lua_State* L);
103  virtual bool importTaskParams(lua_State* L);
104 
106  virtual bool importSetParams(lua_State* L);
107 
109  virtual luabind::object createLuaTableFromRegistry(lua_State* L, const DtReaderWriterRegistry& rwRegistry, bool requireMetadata = true, bool hasParamMetaData = true);
110 
112  static void addKeyToIgnore(const std::string&);
113 
115  static void removeKeyToIgnore(const std::string&);
116 
118  void luaEndTask(bool success);
119  void luaEndSet();
120 
122 
124 
125  virtual void luaPlayScenarioEvent(DtScriptVrfObject eventName);
126  virtual void luaStopScenarioEvent(DtScriptVrfObject eventName);
127  virtual void luaStopScenarioEventWithRewind(DtScriptVrfObject eventName, bool rewind);
128  virtual bool luaIsScenarioEventPlaying(DtScriptVrfObject eventName);
129  virtual void luaSetScenarioEventEnabled(DtScriptVrfObject eventName, bool);
130  virtual bool luaIsScenarioEventEnabled(DtScriptVrfObject eventName);
132 
134 
135  virtual int luaSendEmbeddedEntityTask(std::string eeName, std::string taskName, luabind::object const& parms);
137  virtual int luaSendEmbeddedEntityTaskActAsSubtask(std::string eeName, std::string taskName,
138  luabind::object const& parms, bool actAsSubtask);
140  virtual int luaSendEmbeddedEntitySet(std::string eeName, std::string setName, luabind::object const& parms);
142 
144 
145  int luaStartSubtask(const std::string taskName, luabind::object const& parameters);
147  void luaStopSubtask(int subtaskId);
149  void luaStopAllSubtasks();
151  bool luaIsSubtaskRunning(int subtaskId);
153  bool luaIsSubtaskComplete(int subtaskId);
155  bool luaIsSubtaskCanceled(int subtaskId);
157  bool luaSubtaskResult(int subtaskId);
161  void luaCleanupInactiveSubtaskStatus();
163 
165  void luaSendReportWithoutRecipients(const::std::string reportType,
166  luabind::object const& parameters);
167  void luaSendReport(const::std::string reportType,
168  luabind::object const& reciptients,
169  luabind::object const& parameters);
170 
172  int luaSendTask(DtScriptVrfObject& object, const::std::string taskName,
173  luabind::object const& parameters);
174  int luaSendTaskActAsSubtask(DtScriptVrfObject& object, const::std::string taskName,
175  luabind::object const& parameters, bool actAsSubtask);
176  int luaSendRadioTask(DtScriptVrfObject& object, const::std::string taskName,
177  luabind::object const& parameters);
178  int luaSendRadioTaskActAsSubtask(DtScriptVrfObject& object, const::std::string taskName,
179  luabind::object const& parameters, bool actAsSubtask);
180  int luaSendTaskActAsSubtaskWithRadio(DtScriptVrfObject& object, const::std::string taskName,
181  luabind::object const& parameters, bool actAsSubtask, bool sendWithRadio);
182 
184  void luaStopAllTasks();
185 
187  void luaSendSetDataToSelf(const::std::string setName,
188  luabind::object const& parameters);
189 
191  void luaSendSetData(DtScriptVrfObject& object, const::std::string setName,
192  luabind::object const& parameters);
193  void luaSendRadioSetData(DtScriptVrfObject& object, const::std::string setName,
194  luabind::object const& parameters);
195  void sendSetDataWithRadio(DtScriptVrfObject& object, const::std::string setName,
196  luabind::object const& parameters, bool useRadio);
197 
198  bool luaIsTaskAvailable(const::std::string taskName);
199  bool luaIsSetAvailable(const::std::string setName);
200 
202  luabind::object luaGetReactionStatus();
203 
212  luabind::object luaGetOrbatList();
213 
215  std::string luaGetScriptId();
216 
218  std::string luaGetSystemName();
219 
220  luabind::object luaGetObjectsNear(const DtLocation3D& loc, double distance);
221  luabind::object luaGetObjectsNearWithFilter(const DtLocation3D& loc, double distance, luabind::object const& parameters);
222 
223  luabind::object luaGetScriptAttribute(const std::string& attributeName, bool& error);
224 
226  luabind::object luaGetVrfObjects();
227 
229 
230  luabind::object luaGetDesignatorsNearWithFilter(const DtLocation3D& loc, double distance,
231  const luabind::object& params);
232 
233  luabind::object luaGetDesignatorsNear(const DtLocation3D& loc, double distance);
235 
237 
238  DtLuaFeatureSet luaGetFeaturesWithinArea(luabind::object const& points, luabind::object const& attributes);
241  DtLuaFeatureSet luaGetFeaturesWithinAreaNoAttributes(luabind::object const& points);
242 
245  DtLuaFeatureSet luaGetFeaturesWithinRange(const DtLocation3D&, double range, luabind::object const& attributes);
247  DtLuaFeatureSet luaGetFeaturesWithinRangeNoAttributes(const DtLocation3D&, double range);
248 
250  DtLuaFeatureSet luaGetFeaturesType(const std::string& type);
252  DtLuaFeatureSet luaGetFeatures();
254 
256 
257  DtLuaFeatureGeometry luaMakePointGeometry(const DtLocation3D&);
260  DtLuaFeatureGeometry luaMakePathGeometry(luabind::object const& table);
262  DtLuaFeatureGeometry luaMakeAreaGeometry(luabind::object const& table);
264 
266  boost::shared_ptr<DtLuaAsyncJob> generateRandomPoints(const luabind::object& parameters);
267 
269  boost::shared_ptr<DtLuaAsyncJob> findNearbyPointOfInterest(const int type);
270 
272  boost::shared_ptr<DtLuaAsyncJob> findCoverPoint(
273  const DtLocation3D& startLocation, const DtLocation3D& threatLocation,
274  double threatRadius, double distanceFromThreat, double range, unsigned numberOfPoints);
275 
277  luabind::object findLadders(lua_State* L, const DtLocation3D& startLocation, double range);
279  luabind::object findLaddersWithId(lua_State* L, const DtLocation3D& startLocation, double range, const unsigned int id);
280 
282  boost::shared_ptr<DtLuaAsyncJob> findPathToLocation(
283  const DtLocation3D& startLocation, const DtLocation3D& destinationLocation,
284  bool useAbstractGraphs, const DtLocation3D& avoidLocation, double avoidanceRadius);
285 
287  DtTranslatableStream translateStringFromScript(const std::string& format);
288 
291  boost::shared_ptr<DtLuaAsyncJob> luaNavigateThroughFeatures(const luabind::object& parameters);
292 
294  boost::shared_ptr<DtLuaAsyncJob> getEmbarkationSlots(DtScriptVrfObject& object);
295 
297  boost::shared_ptr<DtLuaAsyncJob> reserveEmbarkationSlot(DtScriptVrfObject& object, int slotNumber);
298 
300  boost::shared_ptr<DtLuaAsyncJob> getEmbarkationEgressPoints(DtScriptVrfObject& object);
301 
302  void luaSendMessage(const DtScriptVrfObject& receiver, const std::string& message);
303  void luaSendRadioMessage(const DtScriptVrfObject& receiver, const std::string& message);
304  void luaDeleteObject(std::string const& receiver);
305  void luaDeleteScriptObject(const DtScriptVrfObject& receiver);
306 
307  void luaSendObjectMessage(const DtScriptVrfObject& receiver, const std::string& messageType, const luabind::object& messageContents);
308  void luaSendRadioObjectMessage(const DtScriptVrfObject& receiver, const std::string& messageType, const luabind::object& messageContents);
309  void luaRegisterForObjectMessage(const std::string& messageType);
310  void luaUnregisterForObjectMessage(const std::string& messageType);
311  void processObjectMessage(const DtVrfObjectMessage* msg);
312 
313  static void textReportCallback(const DtVrfObjectMessage* m, void* usr);
314  virtual void processTextReport(const DtVrfObjectMessage* m);
315 
316  void luaSendInfluence(const DtScriptVrfObject& target,
317  const std::string& influenceName, luabind::object const& influenceParams);
318 
320  static void addReaderWriterToLuaTableFunction(const DtString&, ReaderWriterToLuaTableFcn);
321 
322 #ifdef DtHLA
323  static void influenceCallback(DtInfluenceInteractionExtension* m, void* usr);
324  virtual void processInfluence(DtInfluenceInteractionExtension* m);
325 #endif
326 
328  virtual void processEntityDestroyed();
329 
331  luabind::object luaGetCloudLayerDescriptionsAt(lua_State *L, const DtLocation3D& location);
334 
337 
338  virtual double luaGetIllumination(DtScriptVrfObject& object);
339  virtual double luaGetExpectedIllumination(DtScriptVrfObject& object, double dateAndTimeOfDay);
340  virtual double luaGetSnowAccumulationByLocation(const DtLocation3D& object);
341  virtual double luaGetSnowRoadAccumulationByLocation(const DtLocation3D& object);
342  virtual double luaGetRainAccumulationByLocation(const DtLocation3D& object);
343 
344  virtual double luaGetAirTemperatureByLocation(const DtLocation3D& object);
345  virtual double luaGetAirPressureByLocation(const DtLocation3D& object);
346  virtual unsigned int luaGetPrecipitationByLocation(const DtLocation3D& location, double*);
347  virtual double luaGetPrecipitationIntensityByLocation(const DtLocation3D& object);
348  virtual unsigned int luaGetPrecipitationTypeByLocation(const DtLocation3D& object);
349  virtual double luaGetVisibilityDistanceByLocation(const DtLocation3D& object);
350  virtual int luaGetVisibilityObscurantByLocation(const DtLocation3D& object);
351  virtual double luaGetWindDirectionByLocation(const DtLocation3D& object);
352  virtual double luaGetWindSpeedByLocation(const DtLocation3D& object);
353  virtual double luaGetUnderwaterVisibilityByLocation(const DtLocation3D& object);
354  virtual unsigned int luaGetSwellStateByLocation(const DtLocation3D& object);
355  virtual double luaGetSwellStateDirectionByLocation(const DtLocation3D& object);
356  virtual unsigned int luaGetSeaStateByLocation(const DtLocation3D& object);
357  virtual double luaGetSeaStateDirectionByLocation(const DtLocation3D& object);
358  virtual double luaGetSurgeDepthByLocation(const DtLocation3D& object);
359  virtual double luaGetIlluminationByLocation(const DtLocation3D& object);
360  virtual double luaGetExpectedIlluminationByLocation(const DtLocation3D& object, double dateAndTimeOfDay);
362 
365  virtual double luaRunDurationTime();
366  virtual void luaRunForDuration(double);
367  virtual void luaStopSimulationDurationTimer();
369 
372  virtual void luaSetCheckpointMode(bool);
373  virtual void initializeCheckpointStateTable(lua_State* L);
374 
383  virtual int luaAskUserQuestion(const DtTranslatableStream& title, const DtTranslatableStream& message,
384  luabind::object const& options, int displayFlags);
385  virtual int luaAskUserQuestionST(const std::string& title, const DtTranslatableStream& message,
386  luabind::object const& options, int displayFlags);
387  virtual int luaAskUserQuestionTS(const DtTranslatableStream& title, const std::string& message,
388  luabind::object const& options, int displayFlags);
389  virtual int luaAskUserQuestionSS(const std::string& title, const std::string& message,
390  luabind::object const& options, int displayFlags);
391 
395  virtual int luaStatusOfUserQuestion(int questionId);
396 
398  virtual void luaCancelUserQuestion(int questionId);
399 
403 
405  DtScriptVrfObject luaCreateEntity(luabind::object const& parameters);
406 
408  DtScriptVrfObject luaCreateFromOrbat(std::string orbatItem, const DtLocation3D& loc);
409 
411  DtScriptVrfObject luaCreateTacticalGraphic(luabind::object const& parameters);
412 
414  DtScriptVrfObject luaCreateObstacle(luabind::object const& parameters);
415 
417  DtScriptVrfObject luaCreateRoute(luabind::object const& parameters);
418 
420  DtScriptVrfObject luaCreateArea(luabind::object const& parameters);
421 
423  DtScriptVrfObject luaCreateWaypoint(luabind::object const& parameters);
424 
426  DtScriptVrfObject luaCreatePhaseLine(luabind::object const& parameters);
428 
430  virtual std::vector<DtLocation3D> luaMakeOffsetPoints(luabind::object const& fromPoints,
431  const DtVectorOffset3D& offset);
432 
434  void luaCreateSelectionGroup(const std::string& name, luabind::object const& parameters);
435 
439  void luaFinishTest(const int status, const std::string message);
440 
442  bool luaUpdateTaskVisualization(const std::string& visualizationName,
443  const std::string& visualizationType, luabind::object const& parameters);
444 
446  void luaDeleteTaskVisualization(const std::string& visualizationName);
447 
449  void luaRequire(lua_State* L, const std::string& filename);
450 
453  unsigned luaBitwiseOr(unsigned val1, unsigned val2);
454  unsigned luaBitwiseAnd(unsigned val1, unsigned val2);
455  unsigned luaBitwiseXor(unsigned val1, unsigned val2);
456  unsigned luaBitwiseNot(unsigned val);
457  unsigned luaBitwiseLeftShift(unsigned val, unsigned shift);
458  unsigned luaBitwiseRightShift(unsigned val, unsigned shift);
460 
461  bool luaIntersectSegments2D(const DtLocation3D& p1, const DtLocation3D& p2, const DtLocation3D& p3, const DtLocation3D& p4,
462  DtLocation3D& intersectPoint);
463 
468  {
469  public:
470  DtLuaScriptFunctionReference(const std::string& functionName)
472  , myFunctionName(functionName)
473  {
474 
475  }
476 
478  {
479 
480  }
481 
482  std::string functionName() const
483  {
484  return myFunctionName;
485  }
486 
487  virtual bool operator<(const DtScriptFunctionReference& other) const
488  {
489  try
490  {
491  const DtLuaScriptFunctionReference& rhs =
492  dynamic_cast<const DtLuaScriptFunctionReference&>(other);
493  return myFunctionName.compare(rhs.myFunctionName) < 0;
494  }
495  catch(...)
496  {
497  DtInfo << "DtLuaScriptFunctionReference::operator< attempt to compare with wrong type.\n";
498  return false;
499  }
500  }
501 
502  protected:
503  std::string myFunctionName;
504  };
505 
508  virtual void addPostSetDataCallback(const std::string& setDataType,
509  const std::string& functionName);
512  virtual void removePostSetDataCallback(const std::string& setDataType,
513  const std::string& functionName);
514 
517  virtual void invokePostSetDataCallback(
518  DtScriptFunctionReferencePtr functionReference,
519  DtSetDataRequestMessage* setDatRequest);
520 
526  virtual luabind::object luaGetParamPropertyFromType(
527  const std::string typeString, std::string const& paramName);
528 
530  virtual void putObjectsFromTableIntoGlobalTable(lua_State* state, luabind::object& table);
531  virtual void putObjectsFromGlobalTableIntoTable(lua_State* state, luabind::object& table);
532 
534  virtual luabind::object luaGetSubordinateFunctionNames();
535 
537  virtual luabind::object luaGetParameterSubordinateFunctionsFromType(
538  const std::string typeString);
539 
540 protected:
544  virtual bool callLuaNoArgFunction(const std::string& functionName, bool* functionExists = 0);
545 
546  virtual void updateFuncCallCount();
547 
548  lua_State* myLState;
549  unsigned myFuncCallCount;
551 
552  typedef std::vector<DtLuaScriptInterfaceExtension*> LocalInterfaceExtensions;
554 
556  {
557  LuaExtension() : creator(0), onlyForEntity(0), usr(0) {};
558  LuaExtension(const LuaExtension& orig) : creator(orig.creator), onlyForEntity(orig.onlyForEntity),
559  usr(orig.usr) {};
560 
563  void* usr;
564  };
565 
566  typedef std::vector<LuaExtension> GlobalInterfaceExtensions;
567 
569 
570  luabind::object* myCheckpointStateTable;
571 
572  typedef std::map<DtString, ReaderWriterToLuaTableFcn> ReaderWriterToLuaTableMap;
575 };
576 
578 
586 namespace luaScriptInterface
587 {
588  typedef luabind::object (*rwToLuaBindObjectFcn)(
589  DtReaderWriter* rw, lua_State* L);
590 
591  luabind::object luaGetEntityParam(lua_State* L,
592  const DtScriptVrfObject& entity, std::string const& paramName);
593 
594  luabind::object luaGetSystemAttribute(
595  const DtScriptComponentSystem& system, const std::string& attributeName
596  , bool *error
597  , lua_State *L
598  );
599 
601  luabind::object luaGetContactInfo(lua_State* L, const DtScriptVrfObject& thisEntity,
602  const DtScriptVrfObject& otherEntity);
603 
606  luabind::object luaGetParameterSubordinateFunctions(lua_State* L, const DtScriptVrfObject& entity);
607 
609  luabind::object luaGetSubordinateFunctions(lua_State* L, const DtScriptVrfObject& entity);
610 
614  bool luaSetSubordinateFunctions(lua_State* L, const DtScriptVrfObject& entity, luabind::object const& subsAndFunctions);
615 
617  std::string luaGetSubordinateFunction(lua_State* L, const DtScriptVrfObject& entity, const DtScriptVrfObject& subEntity);
618 
622  bool luaSetSubordinateFunction(lua_State* L, const DtScriptVrfObject& entity, const DtScriptVrfObject& subEntity, const std::string& subFunction);
623 
625  luabind::object luaGetTargetPriorityList(lua_State* L, const DtScriptVrfObject& thisEntity);
626 
634  std::list<DtScriptVrfObject> luaGetContactsWithFilter(
635  lua_State* L, const DtScriptVrfObject& entity,
636  luabind::object const& typeFilters, bool observedOnly);
639  std::list<DtScriptVrfObject> luaGetContactsWithFilterAliveOnly(
640  lua_State* L, const DtScriptVrfObject& entity,
641  luabind::object const& typeFilters, bool observedOnly,
642  bool aliveOnly);
643 
646  std::list<DtScriptVrfObject> luaGetHostileContactsWithFilterAliveOnly(
647  lua_State* L, const DtScriptVrfObject& entity,
648  luabind::object const& typeFilters, bool observedOnly,
649  bool aliveOnly);
650 
653  bool luaSetStateProperty(lua_State* L, const DtScriptVrfObject& entity,
654  const std::string& propertyName, luabind::object const& prop);
655 
659  bool luaSetOrAddStateProperty(lua_State* L, const DtScriptVrfObject& entity,
660  const std::string& propertyName, luabind::object const& prop, bool addIfNotFound);
661 
668  bool luaSetStatePropertyListItem(lua_State* L,
669  const DtScriptVrfObject& entity, const std::string& propertyName,
670  luabind::object const& keyValues, luabind::object const& itemValue);
671 
678  lua_State* L, const DtScriptVrfObject& entity, const std::string& propertyName,
679  int index, luabind::object const& itemValue);
680 
687  bool luaSetStatePropertyMapItem(lua_State* L,
688  const DtScriptVrfObject& entity, const std::string& propertyName,
689  luabind::object const& keyValue, luabind::object const& itemValue);
690 
695  luabind::object luaGetStateProperty(lua_State* L,
696  const DtScriptVrfObject& entity, const std::string& propertyName);
697 
706  luabind::object luaGetStatePropertyListItem(lua_State* L,
707  const DtScriptVrfObject& entity, const std::string& propertyName,
708  luabind::object const& keyValues, int& index);
709 
717  luabind::object luaGetStatePropertyListItemByIndex(lua_State* L,
718  const DtScriptVrfObject& entity, const std::string& propertyName,
719  int index);
720 
728  luabind::object luaGetStatePropertyMapItem(lua_State* L,
729  const DtScriptVrfObject& entity, const std::string& propertyName,
730  luabind::object const& keyValue);
731 
736  luabind::object luaGetParamProperty(lua_State* L,
737  const DtScriptVrfObject& entity, std::string const& paramName);
738 
747  luabind::object luaGetParameterPropertyListItem(lua_State* L,
748  const DtScriptVrfObject& entity, const std::string& propertyName,
749  luabind::object const& keyValues, int& index);
750 
758  luabind::object luaGetParameterPropertyListItemByIndex(lua_State* L,
759  const DtScriptVrfObject& entity, const std::string& propertyName,
760  int index);
761 
769  luabind::object luaGetParameterPropertyMapItem(lua_State* L,
770  const DtScriptVrfObject& entity, const std::string& propertyName,
771  luabind::object const& keyValue);
772 
774  DtScriptComponentSystem& system, const std::string& attributeName,
775  const luabind::object & value,
776  lua_State *L);
777 
778  static const std::map<DtString, rwToLuaBindObjectFcn>& rwToLuaBindObjectMap();
779 };
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:487
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:570
luabind::object luaGetSubordinateFunctions(lua_State *L, const DtScriptVrfObject &entity)
Return a table of {{&quot;subordinate&quot; = DtScriptVrfObject, &quot;function&quot; = string}}.
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:568
std::vector< LuaExtension > GlobalInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:566
lua_State * myLState
Definition: luaScriptInterfaceImpl.h:548
virtual bool invokeResume()=0
virtual bool loadState(const DtReaderWriter *savedState)=0
Called when the scenario is loaded.
bool luaSetSubordinateFunctions(lua_State *L, const DtScriptVrfObject &entity, luabind::object const &subsAndFunctions)
Given a table of {{&quot;subordinate&quot; = DtScriptVrfObject, &quot;function&quot; = string}} Set the state propert...
unsigned myFuncCallCount
Definition: luaScriptInterfaceImpl.h:549
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:562
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:553
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:550
static ReaderWriterToLuaTableMap theReaderWriterToLuaTableMap
Definition: luaScriptInterfaceImpl.h:573
luabind::object luaGetParameterSubordinateFunctions(lua_State *L, const DtScriptVrfObject &entity)
Gets a table of entity type and subordinate function handle pairs {{ENTITY_TYPE_STRING, FUNCTION_HANDLE_STRING}}.
std::string functionName() const
Definition: luaScriptInterfaceImpl.h:482
DtLuaScriptFunctionReference(const std::string &functionName)
Definition: luaScriptInterfaceImpl.h:470
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:424
Handles translation of messages from C++ structures into Lua tables and the reverse translation as we...
Definition: luaMessageInterface.h:23
std::string luaGetSubordinateFunction(lua_State *L, const DtScriptVrfObject &entity, const DtScriptVrfObject &subEntity)
Return a string representing subordinate function for indicated subordinate.
LuaExtension(const LuaExtension &orig)
Definition: luaScriptInterfaceImpl.h:558
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:35
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:32
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:467
std::vector< DtLuaScriptInterfaceExtension * > LocalInterfaceExtensions
Definition: luaScriptInterfaceImpl.h:552
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
bool luaSetSubordinateFunction(lua_State *L, const DtScriptVrfObject &entity, const DtScriptVrfObject &subEntity, const std::string &subFunction)
Given a table of {{&quot;subordinate&quot; = DtScriptVrfObject, &quot;function&quot; = string}} Set the state propert...
class DtVrfObjectManager:
Definition: vrfObjectManager.h:202
std::list< DtScriptVrfObject > luaGetContactsWithFilterAliveOnly(lua_State *L, const DtScriptVrfObject &entity, luabind::object const &typeFilters, bool observedOnly, bool aliveOnly)
Same as luaGetContactsWithFiler but adds a boolean flag to indicate that only non-destroyed entities ...
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)
std::list< DtScriptVrfObject > luaGetHostileContactsWithFilterAliveOnly(lua_State *L, const DtScriptVrfObject &entity, luabind::object const &typeFilters, bool observedOnly, bool aliveOnly)
This function is the same as luaGetContactsWithFilterAliveOnly, but it returns only hostile contacts...
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:557
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:572
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:563
Definition: luaScriptInterfaceImpl.h:555
DtLuaMessageInterface * myMessageInterface
Definition: luaScriptInterfaceImpl.h:574
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:503
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:588
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:477
Definition: scriptVrfObject.h:24
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)