| 3276 | } |
| 3277 | |
| 3278 | HRenderScript NewRenderScript(HRenderContext render_context, dmLuaDDF::LuaSource *source) |
| 3279 | { |
| 3280 | lua_State* L = render_context->m_RenderScriptContext.m_LuaState; |
| 3281 | int top = lua_gettop(L); |
| 3282 | (void)top; |
| 3283 | |
| 3284 | HRenderScript render_script = (HRenderScript)lua_newuserdata(L, sizeof(RenderScript)); |
| 3285 | ResetRenderScript(render_script); |
| 3286 | |
| 3287 | render_script->m_RenderContext = render_context; |
| 3288 | luaL_getmetatable(L, RENDER_SCRIPT); |
| 3289 | lua_setmetatable(L, -2); |
| 3290 | render_script->m_InstanceReference = dmScript::Ref(L, LUA_REGISTRYINDEX); |
| 3291 | render_script->m_SourceFileName = 0; |
| 3292 | if (LoadRenderScript(L, source, render_script)) |
| 3293 | { |
| 3294 | assert(top == lua_gettop(L)); |
| 3295 | return render_script; |
| 3296 | } |
| 3297 | else |
| 3298 | { |
| 3299 | DeleteRenderScript(render_context, render_script); |
| 3300 | assert(top == lua_gettop(L)); |
| 3301 | return 0; |
| 3302 | } |
| 3303 | } |
| 3304 | |
| 3305 | bool ReloadRenderScript(HRenderContext render_context, HRenderScript render_script, dmLuaDDF::LuaSource *source) |
| 3306 | { |