diff --git a/core/src/collider.c b/core/src/collider.c index ce98fbc..4175bd0 100644 --- a/core/src/collider.c +++ b/core/src/collider.c @@ -4,17 +4,19 @@ struct Collider { Shape* shape; + PhysicsEntity owner; RigidBody* body; PhysicsMask layers; 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)); ASSERT_RETURN(self != NULL, NULL, "Failed to allocate space for Collider"); *self = (Collider) { .shape = shape, - .body = body, + .owner = owner, + .body = owner.tc->get_rigidbody(owner.data), .layers = layers, .overlap = overlap, }; @@ -51,3 +53,7 @@ int collider_is_overlap(Collider* self) { void collider_set_overlap(Collider* self, int value) { self->overlap = value; } + +PhysicsEntity collider_get_owner(Collider* self) { + return self->owner; +} diff --git a/core/src/collider.h b/core/src/collider.h index ddb65ba..e0af726 100644 --- a/core/src/collider.h +++ b/core/src/collider.h @@ -6,7 +6,7 @@ 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 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 void collider_set_overlap(Collider* self, int value); +extern PhysicsEntity collider_get_owner(Collider* self); + #endif // !_fencer_collider_h