summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorarngo <[email protected]>2023-05-26 12:07:51 -0400
committerarngo <[email protected]>2023-05-26 12:07:51 -0400
commit1505735adadcdadb0966f9ec1ba8aafc46602e47 (patch)
treeb3b10f3aef85f321f958b22bebc96ceff98cc833 /src
parentccadd3c51a7040532fe26cf185140b05a2bdcbe4 (diff)
downloadRodeoKit-collision.tar.gz
RodeoKit-collision.zip
make id a struct with numberical id and world ptrcollision
Diffstat (limited to 'src')
-rw-r--r--src/collision/rodeo_collision.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/collision/rodeo_collision.c b/src/collision/rodeo_collision.c
index 8119fb9..e4791bf 100644
--- a/src/collision/rodeo_collision.c
+++ b/src/collision/rodeo_collision.c
@@ -34,7 +34,8 @@ rodeo_collision_2d_world_item_create(
)
{
static uint32_t next_id = 0;
- item_params.id = next_id++;
+ item_params.id.id = next_id++;
+ item_params.id.world = world;
cvec_collision_2d_world_item_value* new_item = cvec_collision_2d_world_item_push(world, item_params);
return new_item;
@@ -42,24 +43,32 @@ 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
)
{
- cvec_collision_2d_world_item_value temp = *cvec_collision_2d_world_item_back(world);
- *cvec_collision_2d_world_item_back(world) = *cvec_value;
+
+ cvec_collision_2d_world_item_value temp = *cvec_collision_2d_world_item_back(cvec_value->id.world);
+ *cvec_collision_2d_world_item_back(cvec_value->id.world) = *cvec_value;
*cvec_value = temp;
- cvec_collision_2d_world_item_pop(world);
+ cvec_collision_2d_world_item_pop(cvec_value->id.world);
+}
+
+void
+rodeo_collision_2d_world_item_destroy_by_id(
+ world_id id
+)
+{
+ rodeo_collision_2d_world_item_t* item = rodeo_collision_2d_world_item_get_by_id(id);
+ rodeo_collision_2d_world_item_destroy(item);
}
rodeo_collision_2d_world_item_t*
rodeo_collision_2d_world_item_get_by_id(
- rodeo_collision_2d_world_t *world,
- uint32_t id
+ world_id id
)
{
- c_foreach(i, cvec_collision_2d_world_item, *world) {
- if (i.ref->id == id) {
+ c_foreach(i, cvec_collision_2d_world_item, *id.world) {
+ if (i.ref->id.id == id.id) {
return i.ref;
}
}
@@ -109,9 +118,9 @@ int rodeo_collision_2d_item_cmp(
const rodeo_collision_2d_world_item_t* b
)
{
- if (a->id == b->id) {
+ if (a->id.id == b->id.id) {
return 0;
} else {
- return a->id > b->id ? 1 : -1;
+ return a->id.id > b->id.id ? 1 : -1;
}
}