| 118 | } |
| 119 | |
| 120 | void CScriptEngine::init() |
| 121 | { |
| 122 | // Msg("[CScriptEngine::init] Starting LuaJIT!"); |
| 123 | lua_State* LSVM = luaL_newstate(); //Запускаем LuaJIT. Память себе он выделит сам. |
| 124 | R_ASSERT2(LSVM, "! ERROR : Cannot initialize LUA VM!"); |
| 125 | reinit(LSVM); |
| 126 | luabind::open(LSVM); //Запуск луабинда |
| 127 | |
| 128 | tracy::LuaRegister(LSVM); |
| 129 | |
| 130 | //--------------Установка калбеков------------------// |
| 131 | #ifdef LUABIND_NO_EXCEPTIONS |
| 132 | luabind::set_error_callback(lua_error); |
| 133 | luabind::set_cast_failed_callback(lua_cast_failed); |
| 134 | #endif |
| 135 | luabind::set_pcall_callback(lua_pcall_failed); // KRodin: НЕ ЗАКОММЕНТИРОВАТЬ НИ В КОЕМ СЛУЧАЕ!!! |
| 136 | lua_atpanic(LSVM, lua_panic); |
| 137 | //-----------------------------------------------------// |
| 138 | extern void export_classes(lua_State * L); |
| 139 | export_classes(LSVM); //Тут регистрируются все движковые функции, импортированные в скрипты |
| 140 | luaL_openlibs(LSVM); //Инициализация функций LuaJIT |
| 141 | setup_auto_load(); //Построение метатаблицы |
| 142 | bool save = m_reload_modules; |
| 143 | m_reload_modules = true; |
| 144 | process_file_if_exists(GlobalNamespace, false); //Компиляция _G.script |
| 145 | m_reload_modules = save; |
| 146 | |
| 147 | m_stack_level = lua_gettop(LSVM); //? |
| 148 | |
| 149 | register_script_classes(); //Походу, запуск class_registrator.script |
| 150 | object_factory().register_script(); //Регистрация классов |
| 151 | |
| 152 | lua_gc(ai().script_engine().lua(), LUA_GCSETSTEPMUL, 500); |
| 153 | lua_gc(ai().script_engine().lua(), LUA_GCSETPAUSE, 100); |
| 154 | |
| 155 | // Msg("[CScriptEngine::init] LuaJIT Started!"); |
| 156 | } |
| 157 | |
| 158 | void CScriptEngine::parse_script_namespace(const char* name, char* ns, u32 nsSize, char* func, u32 funcSize) |
| 159 | { |
no test coverage detected