From 8add39e506595dfeaa580cacbaa0a4fe72d56ba9 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 2 Jul 2024 23:54:38 +0300 Subject: [PATCH] add entity trigger type parameter --- res/content/base/entities/drop.json | 2 +- res/scripts/stdlib.lua | 2 +- src/content/ContentLoader.cpp | 15 +++++++++++---- src/objects/Entities.cpp | 2 +- src/objects/EntityDef.hpp | 2 +- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/res/content/base/entities/drop.json b/res/content/base/entities/drop.json index cf9add8e..6f0e680a 100644 --- a/res/content/base/entities/drop.json +++ b/res/content/base/entities/drop.json @@ -1,6 +1,6 @@ { "hitbox": [0.2, 0.125, 0.2], "triggers": [ - [-0.2, -0.2, -0.2, 0.2, 0.2, 0.2] + ["aabb", -0.2, -0.2, -0.2, 0.2, 0.2, 0.2] ] } diff --git a/res/scripts/stdlib.lua b/res/scripts/stdlib.lua index ea49f0cb..88dd54f4 100644 --- a/res/scripts/stdlib.lua +++ b/res/scripts/stdlib.lua @@ -304,7 +304,7 @@ function file.readlines(path) end stdcomp = require "core:internal/stdcomp" -entity.get = stdcomp.get_Entity +entities.get = stdcomp.get_Entity -- Deprecated functions block_index = block.index diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index 253434a9..80fbd9a4 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -12,6 +12,7 @@ #include "../logic/scripting/scripting.hpp" #include "../typedefs.hpp" #include "../util/listutil.hpp" +#include "../util/stringutil.hpp" #include "../voxels/Block.hpp" #include @@ -317,10 +318,16 @@ void ContentLoader::loadEntity(EntityDef& def, const std::string& name, const fs if (auto triggersarr = root->list("triggers")) { for (size_t i = 0; i < triggersarr->size(); i++) { if (auto triggerarr = triggersarr->list(i)) { - def.triggers.push_back({ - {triggerarr->num(0), triggerarr->num(1), triggerarr->num(2)}, - {triggerarr->num(3), triggerarr->num(4), triggerarr->num(5)} - }); + auto triggerType = triggerarr->str(0); + if (triggerType == "aabb") { + def.boxTriggers.push_back({ + {triggerarr->num(1), triggerarr->num(2), triggerarr->num(3)}, + {triggerarr->num(4), triggerarr->num(5), triggerarr->num(6)} + }); + } else { + logger.error() << name << ": trigger #" << i << " - unknown type " + << util::quote(triggerType); + } } } } diff --git a/src/objects/Entities.cpp b/src/objects/Entities.cpp index 6e024427..0152063d 100644 --- a/src/objects/Entities.cpp +++ b/src/objects/Entities.cpp @@ -52,7 +52,7 @@ entityid_t Entities::spawn( registry.emplace(entity, pos, size, glm::mat3(1.0f)); auto& body = registry.emplace( entity, true, Hitbox {pos, def.hitbox}, std::vector{}); - for (auto& box : def.triggers) { + for (auto& box : def.boxTriggers) { body.triggers.emplace_back(Trigger{ true, id, diff --git a/src/objects/EntityDef.hpp b/src/objects/EntityDef.hpp index 5c4293c0..f4bf20d2 100644 --- a/src/objects/EntityDef.hpp +++ b/src/objects/EntityDef.hpp @@ -18,7 +18,7 @@ struct EntityDef { std::string scriptName = name.substr(name.find(':')+1); glm::vec3 hitbox {0.5f}; - std::vector triggers {}; + std::vector boxTriggers {}; std::string rigName = name.substr(name.find(":")+1); struct {