VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 #include <tbb/mutex.h>
17 
20 {
21 public:
23  virtual ~DtLuaScriptResourceManager();
24 
27  virtual void initializeNumberOfStates(unsigned numberOfStates);
28 
30  virtual lua_State* getLuaState(int scriptType = DtScriptedTaskScriptedTask);
31 
33  virtual bool loadModule(lua_State* L, const std::string& moduleName);
34 
36  static lua_State* createLuaState(const std::vector<std::string>& scriptPaths, int scriptType = DtScriptedTaskScriptedTask);
37 
39  static bool initializeVRFLuaExtensions(lua_State* L, const std::vector<std::string>& scriptPaths, int scriptType = DtScriptedTaskScriptedTask);
40 
42  static DtScriptResourceManager* creator();
43 
44 protected:
45 
47  virtual std::string findLuaModuleFile(const std::string& filename);
48 
50  virtual void saveBytecodeChunk(lua_State* L, const std::string& chunkName);
51 
52  typedef std::vector<char> DtLuaBytecodeChunk;
53  typedef DtBoost::shared_ptr<DtLuaBytecodeChunk> DtLuaBytecodeChunkPtr;
56  {
59  };
60 
62  virtual void createLuaStates(unsigned numStates);
63 
66 
67  static int luaBytecodeSaveCb(lua_State *L, const void* p, size_t sz, void* ud);
68 
69  static const char* luaBytecodeLoadCb(lua_State *L, void *ud, size_t *size);
70 
71  std::list<lua_State*> myLuaStates;
72  std::map<std::string, DtLuaBytecodeChunkPtr > myLuaBytecodeChunks;
73 
74  tbb::mutex myBytecodeMutex;
75 };
const int DtScriptedTaskScriptedTask
A class for keeping track of meta data for scripted tasks. The information is currently stored in an ...
Definition: scriptedTaskMetaData.h:41
voidpf void uLong size
Definition: ioapi.h:39
std::list< lua_State * > myLuaStates
Definition: luaScriptResourceManager.h:71
DtLuaBytecodeChunkPtr bytecodeChunk
Definition: luaScriptResourceManager.h:57
int loadChunkNum
Definition: luaScriptResourceManager.h:58
DtScriptResourceManager & operator=(const DtScriptResourceManager &other)
tbb::mutex myBytecodeMutex
Definition: luaScriptResourceManager.h:74
#define DT_DLL_vrfLua
This file is used to determine how to build.
Definition: vrfLuaDefines.h:25
Struct used as the user data argument with the lua bytecode reader and writer callbacks.
Definition: luaScriptResourceManager.h:55
Manages resources shared by scripts.
Definition: luaScriptResourceManager.h:19
DtBoost::shared_ptr< DtLuaBytecodeChunk > DtLuaBytecodeChunkPtr
Definition: luaScriptResourceManager.h:53
std::map< std::string, DtLuaBytecodeChunkPtr > myLuaBytecodeChunks
Definition: luaScriptResourceManager.h:72
std::vector< char > DtLuaBytecodeChunk
Definition: luaScriptResourceManager.h:52
Manages resources shared by scripts.
Definition: scriptResourceManager.h:15
virtual void initializeNumberOfStates(unsigned numObjects)=0

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)