diff options
| author | realtradam <[email protected]> | 2023-06-06 06:38:41 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-06-06 06:38:41 -0400 |
| commit | 6c2fb4e1cf6866fb1a21fc2f940af5722abdeac9 (patch) | |
| tree | 3199b2f2eb82f8fe3581f80195bf06ddfc25efcd /include | |
| parent | 06a3fc95288b8301a3b872ec5b4e906240f76fef (diff) | |
| download | RodeoKit-6c2fb4e1cf6866fb1a21fc2f940af5722abdeac9.tar.gz RodeoKit-6c2fb4e1cf6866fb1a21fc2f940af5722abdeac9.zip | |
complete most of the rewrite to avoid exposed pointers
Diffstat (limited to 'include')
| -rw-r--r-- | include/rodeo/collision.h | 50 | ||||
| -rw-r--r-- | include/rodeo/collision_t.h | 57 |
2 files changed, 64 insertions, 43 deletions
diff --git a/include/rodeo/collision.h b/include/rodeo/collision.h index b3619f4..ded048d 100644 --- a/include/rodeo/collision.h +++ b/include/rodeo/collision.h @@ -4,52 +4,46 @@ #include "rodeo/collision_t.h" #include "rodeo_types.h" -rodeo_collision_2d_world_t -rodeo_collision_2d_world_create(void); +rodeo_collision_2d_collection_t +rodeo_collision_2d_collection_create(void); void -rodeo_collision_2d_world_destroy( - rodeo_collision_2d_world_t *world +rodeo_collision_2d_collection_destroy( + rodeo_collision_2d_collection_t collection ); -cvec_collision_2d_world_item_value* -rodeo_collision_2d_world_item_create( - rodeo_collision_2d_world_t *world, - rodeo_collision_2d_world_item_t item_params +rodeo_collision_2d_item_t +rodeo_collision_2d_item_create( + rodeo_collision_2d_collection_t collection, + rodeo_collision_2d_item_data_t item_params ); void -rodeo_collision_2d_world_item_destroy( - cvec_collision_2d_world_item_value* cvec_value +rodeo_collision_2d_item_destroy( + rodeo_collision_2d_item_t item ); void -rodeo_collision_2d_world_item_destroy_by_id( - world_id id +rodeo_collision_2d_item_destroy_by_id( + rodeo_collision_2d_item_id_t id ); -rodeo_collision_2d_world_item_t* -rodeo_collision_2d_world_item_get_by_id( - world_id id +rodeo_collision_2d_item_t +rodeo_collision_2d_item_get_by_id( + rodeo_collision_2d_item_id_t id ); void -rodeo_collision_2d_world_compare_self( - rodeo_collision_2d_world_t *world, - void (*resolve)( - rodeo_collision_2d_world_item_t *a, - rodeo_collision_2d_world_item_t *b - ) +rodeo_collision_2d_collection_compare_self( + rodeo_collision_2d_collection_t collection, + rodeo_collision_2d_resolver_f resolver ); void -rodeo_collision_2d_world_compare_other( - rodeo_collision_2d_world_t *world_a, - rodeo_collision_2d_world_t *world_b, - void (*resolve)( - rodeo_collision_2d_world_item_t *a, - rodeo_collision_2d_world_item_t *b - ) +rodeo_collision_2d_collection_compare_other( + rodeo_collision_2d_collection_t collection_a, + rodeo_collision_2d_collection_t collection_b, + rodeo_collision_2d_resolver_f resolver ); // from raylib GetCollisionRect diff --git a/include/rodeo/collision_t.h b/include/rodeo/collision_t.h index 21ffbf4..a3e2306 100644 --- a/include/rodeo/collision_t.h +++ b/include/rodeo/collision_t.h @@ -8,35 +8,62 @@ #include <stdint.h> #include <stdbool.h> -struct cvec_collision_2d_world_item; +typedef struct rodeo_collision_2d_item rodeo_collision_2d_item_t; +typedef struct rodeo_collision_2d_collection_data rodeo_collision_2d_collection_data_t; +typedef struct rodeo_collision_2d_item_data rodeo_collision_2d_item_data_t; + +typedef +struct +rodeo_collision_2d_collection +{ + rodeo_collision_2d_collection_data_t *data; +} +rodeo_collision_2d_collection_t; typedef struct { - uint32_t id; - struct cvec_collision_2d_world_item *world; -} world_id; + //uint32_t id; + rodeo_collision_2d_collection_t collection; + rodeo_collision_2d_item_data_t **self_handle; // needs to be updated automatically whenever it moves in the struct +} +rodeo_collision_2d_item_id_t; -typedef struct +rodeo_collision_2d_item_data { - world_id id; + rodeo_collision_2d_item_id_t id; rodeo_rectangle_t rect; float dx; float dy; -} -rodeo_collision_2d_world_item_t; +}; +struct +rodeo_collision_2d_item +{ + rodeo_collision_2d_item_data_t **data_handle; +}; -int rodeo_collision_2d_item_cmp( - const rodeo_collision_2d_world_item_t* a, - const rodeo_collision_2d_world_item_t* b +int32_t irodeo_collision_2d_item_data_cmp( + const rodeo_collision_2d_item_data_t *a, + const rodeo_collision_2d_item_data_t *b ); -#define i_val rodeo_collision_2d_world_item_t -#define i_cmp rodeo_collision_2d_item_cmp -#define i_type cvec_collision_2d_world_item +#define i_val rodeo_collision_2d_item_data_t +#define i_cmp irodeo_collision_2d_item_data_cmp +#define i_type cvec_collision_2d_item_data #include "stc/cvec.h" +struct +rodeo_collision_2d_collection_data +{ + cvec_collision_2d_item_data collection; +}; + +//typedef cvec_collision_2d_item rodeo_collision_2d_collection_t; -typedef cvec_collision_2d_world_item rodeo_collision_2d_world_t; +typedef +void (*rodeo_collision_2d_resolver_f)( + rodeo_collision_2d_item_data_t *a, + rodeo_collision_2d_item_data_t *b +); |
