summaryrefslogtreecommitdiffhomepage
path: root/include/rodeo
diff options
context:
space:
mode:
Diffstat (limited to 'include/rodeo')
-rw-r--r--include/rodeo/collision.h50
-rw-r--r--include/rodeo/collision_t.h57
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
+);