3#include <unordered_set>
6#include "../../../Components.h"
7#include "../../../UtilComponents.h"
14 float _collisionPadding = 100.0f;
15 std::unordered_set<Group> _groupChecks;
16 float repulsion_strength = 100.0f;
18 glm::vec3 box_collider = glm::vec3(0.0f);
30 box_collider = boxCollider_size;
43 void update(
float deltaTime)
override
49 void collisionPhysics() {
50 glm::vec3 nodePosition = transform->getPosition();
51 glm::vec3 nodeHalfSize = 0.5f * transform->size;
53 for (Group group : _groupChecks) {
54 const auto& adjacentEntities = _manager->adjacentEntities(entity, group);
56 for (EntityID other : adjacentEntities) {
57 auto* ent = entity->getManager()->getEntityFromId(other);
80 glm::vec3 delta = nodePosition - otherPosition;
82 float dist = std::max(length(delta), 1e-4f);
83 glm::vec3 repulsion = repulsion_strength * normalize(delta) / (dist * dist);
85 transform->velocity += repulsion;
97 std::string GetComponentName()
override {
98 return "ColliderComponent";
101 void addCollisionGroup(Group g) {
102 _groupChecks.insert(g);
105 void removeCollisionGroup(Group g) {
106 _groupChecks.erase(g);
Definition ColliderComponent.h:11
T & addComponent(TArgs &&... mArgs)
have addScript function
Definition GECS.h:345
Definition GECSManager.h:20
Definition PlaneModelRenderer.h:15