post-runnables

This commit is contained in:
MihailRis 2024-03-21 01:40:07 +03:00
parent a94f949be6
commit c7bc4bb463
4 changed files with 24 additions and 0 deletions

View File

@ -184,6 +184,21 @@ _GUI_ROOT = Document.new("core:root")
_MENU = _GUI_ROOT.menu
menu = _MENU
local __post_runnables = {}
function __process_post_runnables()
if #__post_runnables then
for _, func in ipairs(__post_runnables) do
func()
end
__post_runnables = {}
end
end
function time.post_runnable(runnable)
table.insert(__post_runnables, runnable)
end
-- Deprecated functions
block_index = block.index
block_name = block.name

View File

@ -170,6 +170,7 @@ void Engine::mainloop() {
postRunnables.front()();
postRunnables.pop();
}
scripting::process_post_runnables();
Window::swapBuffers();
Events::pollEvents();

View File

@ -97,6 +97,12 @@ std::unique_ptr<Environment> scripting::create_doc_environment(int parent, const
return std::make_unique<Environment>(id);
}
void scripting::process_post_runnables() {
if (state->getglobal("__process_post_runnables")) {
state->callNoThrow(0);
}
}
void scripting::on_world_load(Level* level, BlocksController* blocks) {
scripting::level = level;
scripting::content = level->content;

View File

@ -52,6 +52,8 @@ namespace scripting {
std::unique_ptr<Environment> create_pack_environment(const ContentPack& pack);
std::unique_ptr<Environment> create_doc_environment(int parent, const std::string& name);
void process_post_runnables();
void on_world_load(Level* level, BlocksController* blocks);
void on_world_tick();
void on_world_save();