#ifndef _fencer_collider_h
#define _fencer_collider_h

#include "shape.h"
#include "rigidbody.h"

typedef struct Collider Collider;

extern Collider* collider_new(PhysicsEntity owner, Shape* shape, int overlap, PhysicsMask layers, PhysicsMask mask);
extern void collider_destroy(Collider* self);
extern PhysicsQuery collider_to_query(Collider* self);

extern Shape* collider_get_shape(Collider* self);
extern RigidBody* collider_get_rigidbody(Collider* self);

extern int collider_is_overlap(Collider* self);
extern void collider_set_overlap(Collider* self, int value);

extern PhysicsMask collider_get_mask(const Collider* self);
extern void collider_set_mask(Collider* self, PhysicsMask mask);

extern PhysicsMask collider_get_layers(const Collider* self);
extern void collider_set_layers(Collider* self, PhysicsMask layers);

extern PhysicsEntity collider_get_owner(Collider* self);

#endif // !_fencer_collider_h
