diff --git a/src/content/loading/EntityLoader.cpp b/src/content/loading/EntityLoader.cpp index 5741b2079..e785fb0fe 100644 --- a/src/content/loading/EntityLoader.cpp +++ b/src/content/loading/EntityLoader.cpp @@ -89,6 +89,7 @@ template<> void ContentUnitLoader::loadUnit( root.at("skeleton-name").get(def.skeletonName); root.at("material").get(def.material); root.at("blocking").get(def.blocking); + root.at("selectable").get(def.selectable); root.at("solid").get(def.solid); root.at("mass").get(def.mass); root.at("elasticity").get(def.elasticity); diff --git a/src/objects/Entities.cpp b/src/objects/Entities.cpp index fafd99fe5..f0e3e5340 100644 --- a/src/objects/Entities.cpp +++ b/src/objects/Entities.cpp @@ -176,7 +176,7 @@ std::optional Entities::rayCast( for (auto [entity, eid, transform, body] : view.each()) { if (eid.uid == settings.ignoredUid || !body.enabled || - (settings.solidEntitiesOnly && !eid.def.solid)) { + (settings.solidEntitiesOnly && !eid.def.solid) || !eid.def.selectable) { continue; } if (settings.entitiesFilter) { diff --git a/src/objects/EntityDef.hpp b/src/objects/EntityDef.hpp index 6ecb1c917..59aed2d7e 100644 --- a/src/objects/EntityDef.hpp +++ b/src/objects/EntityDef.hpp @@ -42,6 +42,9 @@ struct EntityDef { /// @brief Solid entity material material std::string material; + /// @brief Can the entity be interacted with cursor (on_attack, on_use) + bool selectable = true; + /// @brief Does entity prevent blocks setup bool blocking = true;