VR-Forces 4.2 Class Documentation
luaScriptInterfaceImpl.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 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 
12 #include "vrfutil/scriptGeometry.h"
14 #include <luabind/luabind.hpp>
16 //TMP
17 #include <vrfcore/simMgr.h>
18 #include <vrfcore/exClock.h>
19 
20 #include <lua.hpp>
21 #include <lauxlib.h>
22 #include <lualib.h>
23 
25 {
26 protected:
28 
31 
32 public:
33  virtual ~DtLuaScriptInterfaceImpl();
34 
35  static DtScriptInterface* creator();
36 
37  virtual void init();
38 
39  virtual DtString type() const;
40 
41  virtual bool invokeInit();
42  virtual void invokeSuspend();
43  virtual bool invokeResume();
44  virtual void invokeTick();
45  virtual bool invokeCheck();
46  virtual void invokeCheckInit();
47 
48  virtual bool loadScript(bool reload);
49 
50  virtual void setLuaState(lua_State* L);
51  virtual lua_State* getLuaState();
52 
53 
54  virtual DtReaderWriter* saveState();
55  virtual bool loadState(const DtReaderWriter* loadState);
56  virtual void processClearForReuse();
57 
62  static void addLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
63 
68  static void addLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension,
69  const DtVrfObject* onlyForEntity, void* usr);
70 
72  static void removeLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
73 
76  static void removeLuaScriptInterfaceExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension,
77  const DtVrfObject* onlyForEntity, void* usr);
78 
79  virtual bool initializeVRFLuaExtensions(lua_State* L);
80  virtual bool importTaskParams(lua_State* L);
81 
83  static void addKeyToIgnore(const std::string&);
84 
86  static void removeKeyToIgnore(const std::string&);
87 
89  void luaEndTask(bool success);
90 
92 
94 
95 
96  int luaStartSubtask(const std::string taskName, luabind::object const& parameters);
97  void luaStopSubtask(int subtaskId);
99  void luaStopAllSubtasks();
101  bool luaIsSubtaskRunning(int subtaskId);
103  bool luaIsSubtaskComplete(int subtaskId);
105  bool luaIsSubtaskCanceled(int subtaskId);
107  bool luaSubtaskResult(int subtaskId);
109 
111  int luaSendTask(DtScriptVrfObject& object, const::std::string taskName,
112  luabind::object const& parameters);
113  int luaSendTaskActAsSubtask(DtScriptVrfObject& object, const::std::string taskName,
114  luabind::object const& parameters, bool actAsSubtask);
115 
117  void luaStopAllTasks();
118 
120  void luaSendSetDataToSelf(const::std::string setName,
121  luabind::object const& parameters);
122 
124  void luaSendSetData(DtScriptVrfObject& object, const::std::string setName,
125  luabind::object const& parameters);
126 
128  luabind::object luaGetReactionStatus();
129 
131  std::string luaGetScriptId();
132 
133  luabind::object luaGetObjectsNear(const DtLocation3D& loc, double distance);
134  luabind::object luaGetObjectsNearWithFilter(const DtLocation3D& loc, double distance, luabind::object const& parameters);
135 
137  luabind::object luaGetVrfObjects();
138 
141  DtLuaFeatureSet luaGetFeaturesWithinArea(luabind::object const& points, luabind::object const& attributes);
142  DtLuaFeatureSet luaGetFeaturesWithinAreaNoAttributes(luabind::object const& points);
143 
146  DtLuaFeatureSet luaGetFeaturesWithinRange(const DtLocation3D&, double range, luabind::object const& attributes);
147  DtLuaFeatureSet luaGetFeaturesWithinRangeNoAttributes(const DtLocation3D&, double range);
148 
151  boost::shared_ptr<DtLuaAsyncJob> luaNavigateThroughFeatures(const luabind::object& parameters);
152 
153  void luaSendMessage(const DtScriptVrfObject& receiver, const std::string& message);
154  void luaDeleteObject(std::string const& receiver);
155  void luaDeleteScriptObject(const DtScriptVrfObject& receiver);
156 
157  static void textReportCallback(const DtVrfObjectMessage* m, void* usr);
158  virtual void processTextReport(const DtVrfObjectMessage* m);
159 
163 
165  DtScriptVrfObject luaCreateEntity(luabind::object const& parameters);
166 
168  DtScriptVrfObject luaCreateTacticalGraphic(luabind::object const& parameters);
169 
171  DtScriptVrfObject luaCreateObstacle(luabind::object const& parameters);
172 
174  DtScriptVrfObject luaCreateRoute(luabind::object const& parameters);
175 
177  DtScriptVrfObject luaCreateArea(luabind::object const& parameters);
178 
180  DtScriptVrfObject luaCreateWaypoint(luabind::object const& parameters);
181 
183  DtScriptVrfObject luaCreatePhaseLine(luabind::object const& parameters);
185 
188 
189  unsigned luaBitwiseOr(unsigned val1, unsigned val2);
190  unsigned luaBitwiseAnd(unsigned val1, unsigned val2);
191  unsigned luaBitwiseXor(unsigned val1, unsigned val2);
192  unsigned luaBitwiseNot(unsigned val);
193  unsigned luaBitwiseLeftShift(unsigned val, unsigned shift);
194  unsigned luaBitwiseRightShift(unsigned val, unsigned shift);
195 
197 
198 protected:
199  virtual bool callLuaNoArgFunction(const std::string& functionName);
200 
201  lua_State* myLState;
203 
204  typedef std::vector<DtLuaScriptInterfaceExtension*> LocalInterfaceExtensions;
206 
208  {
209  LuaExtension() : creator(0), onlyForEntity(0), usr(0) {};
210  LuaExtension(const LuaExtension& orig) : creator(orig.creator), onlyForEntity(orig.onlyForEntity),
211  usr(orig.usr) {};
212 
215  void* usr;
216  };
217 
218  typedef std::vector<LuaExtension> GlobalInterfaceExtensions;
219 
221 };
222 
224 //
229 //
231 namespace luaScriptInterface
232 {
233  typedef luabind::object (*rwToLuaBindObjectFcn)(
234  DtReaderWriter* rw, lua_State* L);
235 
236  luabind::object luaGetEntityParam(lua_State* L,
237  const DtScriptVrfObject& entity, std::string const& paramName);
238 
239  luabind::object luaGetSystemAttribute(
240  const DtScriptComponentSystem& system, const std::string& attributeName
241  , bool *error
242  , lua_State *L
243  );
245  DtScriptComponentSystem& system, const std::string& attributeName,
246  const luabind::object & value,
247  lua_State *L);
248 };

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)