add radial triggers

This commit is contained in:
MihailRis
2024-07-04 06:09:29 +03:00
parent e6c3775286
commit 736e5b95b6
9 changed files with 117 additions and 44 deletions
+21 -4
View File
@@ -8,15 +8,32 @@
#include <functional>
#include <glm/glm.hpp>
enum class TriggerType {
AABB,
RADIUS,
};
union TriggerParams {
AABB aabb;
glm::vec4 radial; // x,y,z calculated entity coords + w - radius
constexpr TriggerParams() : aabb() {
}
};
using triggercallback = std::function<void(entityid_t, size_t, entityid_t)>;
struct Trigger {
bool enabled = true;
TriggerType type;
size_t index;
entityid_t entity;
AABB aabb;
AABB calculated;
TriggerParams params;
TriggerParams calculated;
std::set<entityid_t> prevEntered;
std::set<entityid_t> nextEntered;
std::function<void(entityid_t, size_t, entityid_t)> enterCallback;
std::function<void(entityid_t, size_t, entityid_t)> exitCallback;
triggercallback enterCallback;
triggercallback exitCallback;
};
struct Hitbox {