From 63ea303e55df4d30e2b425ee979d3003a9882359 Mon Sep 17 00:00:00 2001 From: arngo <27396817+arngo@users.noreply.github.com> Date: Fri, 26 May 2023 12:11:21 -0400 Subject: bump with collision code --- external/RodeoKit | 2 +- src/main.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/external/RodeoKit b/external/RodeoKit index e81eb23..e81e2ea 160000 --- a/external/RodeoKit +++ b/external/RodeoKit @@ -1 +1 @@ -Subproject commit e81eb2369cbf21ca66fc49d2d09aab270131ea87 +Subproject commit e81e2ea117a67364786184aa328bc6e2b543e38f diff --git a/src/main.c b/src/main.c index e8e6b19..c50aa6d 100644 --- a/src/main.c +++ b/src/main.c @@ -2,6 +2,7 @@ #include "rodeo.h" #include #include "input.h" +#include "rodeo/collision.h" cstr renderer; float time_var; @@ -18,6 +19,8 @@ struct summon_t; summon_t summon_position = { .x = 100, .y = 100 }; +summon_t box1_position = { .x = 100, .y = 100 }; +summon_t box2_position = { .x = 100, .y = 100 }; float orc_size[] = {13.0f * 2.0f, 19.0f * 2.0f}; @@ -68,6 +71,10 @@ const rodeo_color_RGBAFloat_t pink_clear = .colors.alpha = 0.5f }; +rodeo_collision_2d_world_t world_orc; +rodeo_collision_2d_world_t world_other; +world_id orc_collision_id; + void summon_units(void) { @@ -88,6 +95,18 @@ summon_units(void) } } +void collision_resolve( + rodeo_collision_2d_world_item_t *a, + rodeo_collision_2d_world_item_t *b +) { + rodeo_log( + rodeo_logLevel_info, + "%d collided with %d", + a->id.id, b->id.id + ); + rodeo_collision_2d_world_item_destroy(b); +} + void main_loop(void) { @@ -120,6 +139,15 @@ main_loop(void) summon_position.x += *(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL); summon_position.y += *(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL); + rodeo_collision_2d_world_item_t* orc_collision_item = rodeo_collision_2d_world_item_get_by_id(orc_collision_id); + + orc_collision_item->x = summon_position.x; + orc_collision_item->y = summon_position.y; + orc_collision_item->dx = *(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL); + orc_collision_item->dy = *(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL); + + rodeo_collision_2d_world_compare_self(&world_orc, collision_resolve); + if(*(bool*)play_sound_input(NULL, NULL)) { rodeo_audio_sound_play(scratch); @@ -282,6 +310,32 @@ main(void) // 2, // texture_memory //); + + world_orc = rodeo_collision_2d_world_create(); + world_other = rodeo_collision_2d_world_create(); + + rodeo_collision_2d_world_item_t orc_collision_params = { + .x = summon_position.x, + .y = summon_position.y, + .width = orc_size[0], + .height = orc_size[1] + }; + orc_collision_id = rodeo_collision_2d_world_item_create(&world_orc, orc_collision_params)->id; + + rodeo_collision_2d_world_item_t test_collision_params = { + .x = 320, + .y = 240, + .width = orc_size[0], + .height = orc_size[1] + }; + rodeo_collision_2d_world_item_create(&world_orc, test_collision_params); + rodeo_collision_2d_world_item_t test2_collision_params = { + .x = 0, + .y = 240, + .width = orc_size[0], + .height = orc_size[1] + }; + rodeo_collision_2d_world_item_create(&world_orc, test2_collision_params); texture = rodeo_texture_2d_create_from_path(cstr_lit("assets/orc.png")); scratch = rodeo_audio_sound_create_from_path(cstr_lit("assets/sample.wav")); @@ -292,6 +346,8 @@ main(void) ); rodeo_texture_2d_destroy(&texture); + rodeo_collision_2d_world_destroy(&world_orc); + rodeo_collision_2d_world_destroy(&world_other); } -- cgit v1.2.3