add radial triggers
This commit is contained in:
+21
-4
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user