feat(physics): added owner to collider

This commit is contained in:
Sara 2023-11-26 12:57:30 +01:00
parent 240186c8de
commit 9c68fca766
2 changed files with 11 additions and 3 deletions

View file

@ -4,17 +4,19 @@
struct Collider { struct Collider {
Shape* shape; Shape* shape;
PhysicsEntity owner;
RigidBody* body; RigidBody* body;
PhysicsMask layers; PhysicsMask layers;
int overlap; int overlap;
}; };
Collider* collider_new(RigidBody* body, Shape* shape, int overlap, PhysicsMask layers) { Collider* collider_new(PhysicsEntity owner, Shape* shape, int overlap, PhysicsMask layers) {
Collider* self = malloc(sizeof(Collider)); Collider* self = malloc(sizeof(Collider));
ASSERT_RETURN(self != NULL, NULL, "Failed to allocate space for Collider"); ASSERT_RETURN(self != NULL, NULL, "Failed to allocate space for Collider");
*self = (Collider) { *self = (Collider) {
.shape = shape, .shape = shape,
.body = body, .owner = owner,
.body = owner.tc->get_rigidbody(owner.data),
.layers = layers, .layers = layers,
.overlap = overlap, .overlap = overlap,
}; };
@ -51,3 +53,7 @@ int collider_is_overlap(Collider* self) {
void collider_set_overlap(Collider* self, int value) { void collider_set_overlap(Collider* self, int value) {
self->overlap = value; self->overlap = value;
} }
PhysicsEntity collider_get_owner(Collider* self) {
return self->owner;
}

View file

@ -6,7 +6,7 @@
typedef struct Collider Collider; typedef struct Collider Collider;
extern Collider* collider_new(RigidBody* owner, Shape* shape, int overlap, PhysicsMask layers); extern Collider* collider_new(PhysicsEntity owner, Shape* shape, int overlap, PhysicsMask layers);
extern void collider_destroy(Collider* self); extern void collider_destroy(Collider* self);
extern PhysicsQuery collider_to_query(Collider* self); extern PhysicsQuery collider_to_query(Collider* self);
@ -16,4 +16,6 @@ extern RigidBody* collider_get_rigidbody(Collider* self);
extern int collider_is_overlap(Collider* self); extern int collider_is_overlap(Collider* self);
extern void collider_set_overlap(Collider* self, int value); extern void collider_set_overlap(Collider* self, int value);
extern PhysicsEntity collider_get_owner(Collider* self);
#endif // !_fencer_collider_h #endif // !_fencer_collider_h