VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
luaScriptResourceManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
7 #include <vrfLua/vrfLuaDefines.h>
9 #include <vlutil/vlFilename.h>
10 #include <lua.hpp>
11 #include <list>
12 #include <map>
13 #include <vlutil/vlSmartPointers.h>
14 #include <string>
16 
19 {
20 public:
22  virtual ~DtLuaScriptResourceManager();
23 
26  virtual void initializeForScenario(unsigned numObjects);
27 
29  virtual lua_State* getLuaState(int scriptType = DtScriptedTaskScriptedTask);
30 
32  virtual bool loadModule(lua_State* L, const std::string& moduleName);
33 
35  static lua_State* createLuaState(const std::vector<std::string>& scriptPaths, int scriptType = DtScriptedTaskScriptedTask);
36 
38  static bool initializeVRFLuaExtensions(lua_State* L, const std::vector<std::string>& scriptPaths, int scriptType = DtScriptedTaskScriptedTask);
39 
41  static DtScriptResourceManager* creator();
42 
43 protected:
44 
46  virtual std::string findLuaModuleFile(const std::string& filename);
47 
49  virtual void saveBytecodeChunk(lua_State* L, const std::string& chunkName);
50 
51  typedef std::vector<char> DtLuaBytecodeChunk;
52  typedef DtBoost::shared_ptr<DtLuaBytecodeChunk> DtLuaBytecodeChunkPtr;
55  {
58  };
59 
61  virtual void createLuaStates(unsigned numStates);
62 
65 
66  static int luaBytecodeSaveCb(lua_State *L, const void* p, size_t sz, void* ud);
67 
68  static const char* luaBytecodeLoadCb(lua_State *L, void *ud, size_t *size);
69 
70  std::list<lua_State*> myLuaStates;
71  std::map<std::string, DtLuaBytecodeChunkPtr > myLuaBytecodeChunks;
72 };

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)