mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
double event handlers calls fix
This commit is contained in:
parent
3d4bfeb442
commit
f2c26aed19
2 changed files with 21 additions and 0 deletions
|
|
@ -135,6 +135,18 @@ function events.on(event, func)
|
|||
table.insert(events.handlers[event], func)
|
||||
end
|
||||
|
||||
function events.remove_by_prefix(prefix)
|
||||
for name, handlers in pairs(events.handlers) do
|
||||
if name:sub(1, #prefix) == prefix then
|
||||
events.handlers[name] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function pack.unload(prefix)
|
||||
events.remove_by_prefix(prefix)
|
||||
end
|
||||
|
||||
function events.emit(event, ...)
|
||||
result = nil
|
||||
if events.handlers[event] then
|
||||
|
|
|
|||
|
|
@ -125,6 +125,15 @@ void scripting::on_world_quit() {
|
|||
for (auto& pack : scripting::engine->getContentPacks()) {
|
||||
emit_event(pack.id + ".worldquit");
|
||||
}
|
||||
|
||||
state->getglobal("pack");
|
||||
for (auto& pack : scripting::engine->getContentPacks()) {
|
||||
state->getfield("unload");
|
||||
state->pushstring(pack.id);
|
||||
state->callNoThrow(1);
|
||||
}
|
||||
state->pop();
|
||||
|
||||
if (state->getglobal("__scripts_cleanup")) {
|
||||
state->callNoThrow(0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue