Collision detection¶
Typedefs
-
typedef enum binocle_collider_type binocle_collider_type
-
typedef enum binocle_point_sectors binocle_point_sectors
-
typedef struct binocle_collider_circle binocle_collider_circle¶
-
typedef struct binocle_collider_hitbox binocle_collider_hitbox¶
-
typedef uint64_t binocle_spatial_hash_grid_key_t¶
-
typedef struct binocle_collider binocle_collider¶
-
typedef struct binocle_spatial_hash_cell binocle_spatial_hash_cell¶
-
typedef struct binocle_spatial_hash binocle_spatial_hash¶
Enums
-
enum binocle_collider_type¶
Values:
-
enumerator BINOCLE_COLLIDER_CIRCLE¶
-
enumerator BINOCLE_COLLIDER_HITBOX¶
-
enumerator BINOCLE_COLLIDER_CIRCLE¶
-
enum binocle_point_sectors¶
Values:
-
enumerator BINOCLE_POINT_SECTOR_CENTER¶
-
enumerator BINOCLE_POINT_SECTOR_TOP¶
-
enumerator BINOCLE_POINT_SECTOR_BOTTOM¶
-
enumerator BINOCLE_POINT_SECTOR_TOP_LEFT¶
-
enumerator BINOCLE_POINT_SECTOR_TOP_RIGHT¶
-
enumerator BINOCLE_POINT_SECTOR_LEFT¶
-
enumerator BINOCLE_POINT_SECTOR_RIGHT¶
-
enumerator BINOCLE_POINT_SECTOR_BOTTOM_LEFT¶
-
enumerator BINOCLE_POINT_SECTOR_BOTTOM_RIGHT¶
-
enumerator BINOCLE_POINT_SECTOR_CENTER¶
Functions
-
binocle_collider_circle binocle_collider_circle_new(float radius, kmVec2 center)¶
-
kmVec2 binocle_collider_circle_get_absolute_position(binocle_collider_circle *circle)¶
-
float binocle_collider_circle_get_absolute_left(binocle_collider_circle *circle)¶
-
float binocle_collider_circle_get_absolute_top(binocle_collider_circle *circle)¶
-
float binocle_collider_circle_get_absolute_right(binocle_collider_circle *circle)¶
-
float binocle_collider_circle_get_absolute_bottom(binocle_collider_circle *circle)¶
-
binocle_collider_hitbox binocle_collider_hitbox_new(kmAABB2 aabb)¶
-
float binocle_collider_hitbox_get_absolute_left(binocle_collider_hitbox *hitbox)¶
-
float binocle_collider_hitbox_get_absolute_top(binocle_collider_hitbox *hitbox)¶
-
float binocle_collider_hitbox_get_absolute_right(binocle_collider_hitbox *hitbox)¶
-
float binocle_collider_hitbox_get_absolute_bottom(binocle_collider_hitbox *hitbox)¶
-
float binocle_collider_hitbox_get_width(binocle_collider_hitbox *hitbox)¶
-
float binocle_collider_hitbox_get_height(binocle_collider_hitbox *hitbox)¶
-
bool binocle_collider_hitbox_intersects_hitbox(binocle_collider_hitbox *hitbox_a, binocle_collider_hitbox *hitbox_b)¶
-
binocle_point_sectors binocle_collide_get_sector_rect_point(kmAABB2 rect, kmVec2 point)¶
-
binocle_point_sectors binocle_collide_get_sector_parts_point(float r_x, float r_y, float r_w, float r_h, kmVec2 point)¶
-
kmVec2 binocle_collide_closest_point_on_line(kmVec2 lineA, kmVec2 lineB, kmVec2 closestTo)¶
-
bool binocle_collide_rect_to_circle(float rect_x, float rect_y, float rect_width, float rect_height, kmVec2 c_position, float c_radius)¶
-
bool binocle_collide_circle_to_point(kmVec2 circle_position, float circle_radius, kmVec2 point)¶
-
bool binocle_collide_circle_to_line(kmVec2 cPosiition, float cRadius, kmVec2 lineFrom, kmVec2 lineTo)¶
-
bool binocle_collide_circle_to_circle(binocle_collider_circle *circle_a, binocle_collider_circle *circle_b)¶
-
bool binocle_collide_circle_to_hitbox(binocle_collider_circle *circle, binocle_collider_hitbox *hitbox)¶
-
bool binocle_collide_hitbox_to_hitbox(binocle_collider_hitbox *hitbox_a, binocle_collider_hitbox *hitbox_b)¶
-
binocle_collider binocle_collider_new()¶
-
binocle_spatial_hash binocle_spatial_hash_new(float width, float height, uint32_t cell_size)¶
-
void binocle_spatial_hash_destroy(binocle_spatial_hash *spatial_hash)¶
-
binocle_spatial_hash_cell binocle_spatial_hash_cell_new()¶
-
kmVec2 binocle_spatial_hash_get_cell_coords(binocle_spatial_hash *spatial_hash, float x, float y)¶
-
binocle_spatial_hash_cell *binocle_spatial_hash_cell_at_position(binocle_spatial_hash *spatial_hash, int x, int y, bool createCellIfEmpty)¶
-
void binocle_spatial_hash_add_body(binocle_spatial_hash *spatial_hash, binocle_collider *collider)¶
-
void binocle_spatial_hash_remove_body(binocle_spatial_hash *spatial_hash, binocle_collider *collider)¶
-
void binocle_spatial_hash_update_body(binocle_spatial_hash *spatial_hash, binocle_collider *collider)¶
-
void binocle_spatial_hash_add_index(binocle_spatial_hash *spatial_hash, binocle_collider *collider, binocle_spatial_hash_grid_key_t cell_pos)¶
-
void binocle_collider_add_grid_index(binocle_collider *collider, binocle_spatial_hash_grid_key_t cell_pos)¶
-
void binocle_spatial_hash_cell_add_collider(binocle_spatial_hash_cell *cell, binocle_collider *collider)¶
-
void binocle_spatial_hash_remove_indexes(binocle_spatial_hash *spatial_hash, binocle_collider *collider)¶
-
void binocle_spatial_hash_update_indexes(binocle_spatial_hash *spatial_hash, binocle_collider *collider, binocle_grid_key_array_t *ar)¶
-
binocle_grid_key_array_t *binocle_spatial_hash_aabb_to_grid(binocle_spatial_hash *spatial_hash, kmVec2 min, kmVec2 max)¶
-
uint64_t binocle_spatial_hash_get_key(int x, int y)¶
-
void binocle_spatial_hash_get_all_bodies_sharing_cells_with_body(binocle_spatial_hash *spatial_hash, binocle_collider *collider, binocle_collider_ptr_array_t *colliding_colliders, int layer_mask)¶
-
bool binocle_spatial_hash_is_body_sharing_any_cell(binocle_spatial_hash *spatial_hash, binocle_collider *collider)¶
-
bool binocle_collision_ray_cast_obb(kmVec3 ray_origin, kmVec3 ray_direction, kmVec3 aabb_min, kmVec3 aabb_max, kmMat4 model_matrix, float *intersection_distance)¶
- Parameters
ray_origin – the ray origin in world space
ray_direction – the ray direction in world space. This must be normalized
aabb_min – minimum X,Y,Z coordinates of the mesh when not transformed at all
aabb_max – maximum X,Y,Z coordinates of the mesh when not transformed at all
model_matrix – the transformation applied to the mesh. It will be applied to the bounding box, too
intersection_distance – the distance between ray_origin and the intersection with the OBB
- Returns
-
struct binocle_collider_circle
-
struct binocle_collider_hitbox
Public Members
-
kmAABB2 aabb¶
-
kmAABB2 aabb¶
-
struct binocle_collider
Public Members
-
binocle_collider_circle *circle¶
-
binocle_collider_hitbox *hitbox¶
-
binocle_grid_key_array_t grid_index¶
-
binocle_collider_circle *circle¶
-
struct binocle_spatial_hash_cell
Public Members
-
binocle_collider_ptr_array_t colliders¶
-
binocle_collider_ptr_array_t colliders¶
-
struct binocle_spatial_hash
Public Functions
- khash_t (spatial_hash_cell_map_t) *grid