From e81e2ea117a67364786184aa328bc6e2b543e38f Mon Sep 17 00:00:00 2001 From: Arnold <27396817+arngo@users.noreply.github.com> Date: Fri, 26 May 2023 12:09:26 -0400 Subject: implemented 2d collision system --- include/rodeo/collision.h | 29 +++++++++++++++++++++++------ include/rodeo/collision_t.h | 11 +++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/rodeo/collision.h b/include/rodeo/collision.h index 9e7b856..277b780 100644 --- a/include/rodeo/collision.h +++ b/include/rodeo/collision.h @@ -7,7 +7,9 @@ rodeo_collision_2d_world_t rodeo_collision_2d_world_create(void); void -rodeo_collision_2d_world_destroy(void); +rodeo_collision_2d_world_destroy( + rodeo_collision_2d_world_t *world +); cvec_collision_2d_world_item_value* rodeo_collision_2d_world_item_create( @@ -17,19 +19,34 @@ rodeo_collision_2d_world_item_create( void rodeo_collision_2d_world_item_destroy( - rodeo_collision_2d_world_t *world, cvec_collision_2d_world_item_value* cvec_value ); +void +rodeo_collision_2d_world_item_destroy_by_id( + world_id id +); + +rodeo_collision_2d_world_item_t* +rodeo_collision_2d_world_item_get_by_id( + world_id id +); + void rodeo_collision_2d_world_compare_self( - rodeo_collision_2d_world_t *world - // resolve function? + rodeo_collision_2d_world_t *world, + void (*resolve)( + rodeo_collision_2d_world_item_t *a, + rodeo_collision_2d_world_item_t *b + ) ); void rodeo_collision_2d_world_compare_other( rodeo_collision_2d_world_t *world_a, - rodeo_collision_2d_world_t *world_b - // resolve function? + rodeo_collision_2d_world_t *world_b, + void (*resolve)( + rodeo_collision_2d_world_item_t *a, + rodeo_collision_2d_world_item_t *b + ) ); diff --git a/include/rodeo/collision_t.h b/include/rodeo/collision_t.h index e51386c..e75d243 100644 --- a/include/rodeo/collision_t.h +++ b/include/rodeo/collision_t.h @@ -4,10 +4,19 @@ #include #include +struct cvec_collision_2d_world_item; + typedef struct { uint32_t id; + struct cvec_collision_2d_world_item *world; +} world_id; + +typedef +struct +{ + world_id id; float x; float y; float dx; @@ -18,6 +27,7 @@ struct } rodeo_collision_2d_world_item_t; + int rodeo_collision_2d_item_cmp( const rodeo_collision_2d_world_item_t* a, const rodeo_collision_2d_world_item_t* b @@ -28,4 +38,5 @@ int rodeo_collision_2d_item_cmp( #define i_type cvec_collision_2d_world_item #include "stc/cvec.h" + typedef cvec_collision_2d_world_item rodeo_collision_2d_world_t; -- cgit v1.2.3