mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
fix loaded tracks cache does not reset on assets reset
This commit is contained in:
parent
bbdf31fc19
commit
8422349e45
5 changed files with 42 additions and 14 deletions
|
|
@ -208,6 +208,7 @@ function this.compile_track(raw_track, track_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
local loaded_tracks = {}
|
local loaded_tracks = {}
|
||||||
|
local backup_tracks = {}
|
||||||
|
|
||||||
function internals.store_animation(name, track)
|
function internals.store_animation(name, track)
|
||||||
loaded_tracks[name] = track
|
loaded_tracks[name] = track
|
||||||
|
|
@ -236,8 +237,16 @@ function internals.on_animation_frame()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function internals.stop_all_actions()
|
function internals.stop_animation_actions()
|
||||||
running_actions = {}
|
running_actions = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function internals.backup_and_clear_animation()
|
||||||
|
loaded_tracks, backup_tracks = backup_tracks, {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function internals.restore_animation_backup()
|
||||||
|
loaded_tracks, backup_tracks = backup_tracks, {}
|
||||||
|
end
|
||||||
|
|
||||||
return this
|
return this
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,7 @@ gui_util.__reset_local = nil
|
||||||
stdcomp.reset = nil
|
stdcomp.reset = nil
|
||||||
|
|
||||||
function internals.on_world_quit()
|
function internals.on_world_quit()
|
||||||
internals.stop_all_actions()
|
internals.stop_animation_actions()
|
||||||
__rules.clear()
|
__rules.clear()
|
||||||
__gui_util_reset_local()
|
__gui_util_reset_local()
|
||||||
__stdcomp_reset()
|
__stdcomp_reset()
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
#include "graphics/core/Shader.hpp"
|
#include "graphics/core/Shader.hpp"
|
||||||
#include "graphics/render/ModelsGenerator.hpp"
|
#include "graphics/render/ModelsGenerator.hpp"
|
||||||
#include "graphics/ui/GUI.hpp"
|
#include "graphics/ui/GUI.hpp"
|
||||||
|
#include "logic/scripting/scripting.hpp"
|
||||||
|
|
||||||
static debug::Logger logger("assets-management");
|
static debug::Logger logger("assets-management");
|
||||||
|
|
||||||
|
|
@ -49,6 +50,8 @@ AssetsLoader& AssetsManagement::acquireBackgroundLoader() {
|
||||||
void AssetsManagement::loadAssets(Content* content) {
|
void AssetsManagement::loadAssets(Content* content) {
|
||||||
finishBackgroundLoader();
|
finishBackgroundLoader();
|
||||||
|
|
||||||
|
scripting::on_assets_loading();
|
||||||
|
|
||||||
const auto& paths = engine.getPaths();
|
const auto& paths = engine.getPaths();
|
||||||
logger.info() << "loading assets";
|
logger.info() << "loading assets";
|
||||||
Shader::preprocessor->setPaths(&paths.resPaths);
|
Shader::preprocessor->setPaths(&paths.resPaths);
|
||||||
|
|
@ -59,19 +62,24 @@ void AssetsManagement::loadAssets(Content* content) {
|
||||||
AssetsLoader loader(engine, *newAssets, paths.resPaths);
|
AssetsLoader loader(engine, *newAssets, paths.resPaths);
|
||||||
loader.addDefaults(content);
|
loader.addDefaults(content);
|
||||||
|
|
||||||
// no need
|
try {
|
||||||
// correct log messages order is more useful
|
// no need
|
||||||
// todo: before setting to true, check if GLSLExtension thread safe
|
// correct log messages order is more useful
|
||||||
bool threading = false; // look at three upper lines
|
// todo: before setting to true, check if GLSLExtension thread safe
|
||||||
if (threading) {
|
bool threading = false; // look at three upper lines
|
||||||
auto task = loader.startTask(
|
if (threading) {
|
||||||
[=]() {}, 0
|
auto task = loader.startTask(
|
||||||
);
|
[=]() {}, 0
|
||||||
task->waitForEnd();
|
);
|
||||||
} else {
|
task->waitForEnd();
|
||||||
while (loader.hasNext()) {
|
} else {
|
||||||
loader.loadNext();
|
while (loader.hasNext()) {
|
||||||
|
loader.loadNext();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (...) {
|
||||||
|
scripting::revert_assets_loading();
|
||||||
|
throw;
|
||||||
}
|
}
|
||||||
assets = std::move(newAssets);
|
assets = std::move(newAssets);
|
||||||
if (content) {
|
if (content) {
|
||||||
|
|
|
||||||
|
|
@ -260,6 +260,14 @@ static int push_properties_tables(
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void scripting::on_assets_loading() {
|
||||||
|
lua::call_internal(lua::get_main_state(), "backup_and_clear_animation");
|
||||||
|
}
|
||||||
|
|
||||||
|
void scripting::revert_assets_loading() {
|
||||||
|
lua::call_internal(lua::get_main_state(), "restore_animation_backup");
|
||||||
|
}
|
||||||
|
|
||||||
void scripting::on_content_load(Content* content) {
|
void scripting::on_content_load(Content* content) {
|
||||||
scripting::content = content;
|
scripting::content = content;
|
||||||
scripting::indices = content->getIndices();
|
scripting::indices = content->getIndices();
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,9 @@ namespace scripting {
|
||||||
|
|
||||||
void initialize(Engine& engine);
|
void initialize(Engine& engine);
|
||||||
|
|
||||||
|
void on_assets_loading();
|
||||||
|
void revert_assets_loading();
|
||||||
|
|
||||||
void on_content_load(Content* content);
|
void on_content_load(Content* content);
|
||||||
void on_content_reset();
|
void on_content_reset();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue