1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #include "nel/gui/lua_manager.h"
23 #include "nel/gui/lua_helper.h"
37 bool CLuaManager::debugLua
= false;
38 bool CLuaManager::editorMode
= false;
39 CLuaManager
* CLuaManager::instance
= NULL
;
41 CLuaManager::CLuaManager()
43 luaState
= new NLGUI::CLuaState( debugLua
);
46 CLuaManager::~CLuaManager()
55 void CLuaManager::releaseInstance()
64 bool CLuaManager::executeLuaScript( const std::string
&luaScript
, bool smallScript
)
72 luaState
->executeSmallScript( luaScript
);
74 luaState
->executeScript( luaScript
);
76 catch( const ELuaError
&e
)
78 std::string ryzom_version
= RYZOM_VERSION
;
79 if (!FINAL_VERSION
|| ryzom_version
.find("Omega") == std::string::npos
) // Omega version are the one used on live servers
81 nlwarning("--- LUA ERROR ---");
82 nlwarning(e
.luaWhat().c_str());
83 std::vector
<std::string
> res
;
84 NLMISC::explode(luaScript
, std::string("\n"), res
);
85 for(uint k
= 0; k
< res
.size(); ++k
)
87 nlwarning("%.05u %s", k
, res
[k
].c_str());
89 nlwarning("--- ********* ---");
97 void CLuaManager::ResetLuaState()
99 if (luaState
) delete luaState
;
101 luaState
= new CLuaState( debugLua
);
104 void CLuaManager::forceGarbageCollect()
106 nlinfo("Collecting Garbaged LUA variables");
107 luaState
->setGCThreshold( 0 );
108 nlinfo( NLMISC::toString( "Memory Used : %d Kb", luaState
->getGCCount() ).c_str() );