From 0ebc3da7f6c5042164e87d547a8baaab0e8aefc5 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 10 Jul 2024 07:15:07 +0300 Subject: [PATCH] update components loading scheme --- res/content/base/entities/drop.json | 2 +- res/content/base/entities/falling_block.json | 2 +- src/content/ContentLoader.cpp | 19 ++++++++++++------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/res/content/base/entities/drop.json b/res/content/base/entities/drop.json index 3df0c513..9577eb7e 100644 --- a/res/content/base/entities/drop.json +++ b/res/content/base/entities/drop.json @@ -1,6 +1,6 @@ { "components": [ - "drop" + "base:drop" ], "hitbox": [0.4, 0.25, 0.4], "sensors": [ diff --git a/res/content/base/entities/falling_block.json b/res/content/base/entities/falling_block.json index 36749323..cd0459b5 100644 --- a/res/content/base/entities/falling_block.json +++ b/res/content/base/entities/falling_block.json @@ -1,6 +1,6 @@ { "components": [ - "falling_block" + "base:falling_block" ], "skeleton-name": "base:block", "hitbox": [0.8, 0.8, 0.8] diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index ff2dfb91..2c5c691f 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -355,13 +355,6 @@ void ContentLoader::loadEntity(EntityDef& def, const std::string& full, const st auto folder = pack->folder; auto configFile = folder/fs::path("entities/"+name+".json"); if (fs::exists(configFile)) loadEntity(def, full, configFile); - - for (auto& componentName : def.components) { - auto scriptfile = folder/fs::path("scripts/components/"+componentName+".lua"); - if (fs::is_regular_file(scriptfile)) { - scripting::load_entity_component(componentName, scriptfile); - } - } } void ContentLoader::loadBlock(Block& def, const std::string& full, const std::string& name) { @@ -478,4 +471,16 @@ void ContentLoader::load() { builder.add(rigging::SkeletonConfig::parse(text, file.u8string(), name)); } } + + fs::path componentsDir = folder / fs::u8path("scripts/components"); + if (fs::is_directory(componentsDir)) { + for (const auto& entry : fs::directory_iterator(componentsDir)) { + fs::path scriptfile = entry.path(); + if (fs::is_regular_file(scriptfile)) { + auto name = pack->id+":"+scriptfile.stem().u8string(); + std::cout << name << std::endl; + scripting::load_entity_component(name, scriptfile); + } + } + } }