diff --git a/src/entity.h b/src/entity.h index 475ca144..84ccd135 100644 --- a/src/entity.h +++ b/src/entity.h @@ -66,7 +66,8 @@ struct entity { /* ENTITY_PROP_TEST */ b32 test_initialized; - struct trs test_trs; + struct trs test_start_rel_trs; + struct trs test_start_sprite_trs; /* ====================================================================== */ /* ENTITY_PROP_TEST_SOUND_EMITTER */ diff --git a/src/game.c b/src/game.c index 4220ee5a..84755f85 100644 --- a/src/game.c +++ b/src/game.c @@ -158,7 +158,7 @@ INTERNAL void game_update(void) e->sprite_name = sprite_name; e->sprite_trs = TRS(.t = V2(1, 0), .r = 0, .s = size); - e->sprite_pivot = V2(0, -0.5); + e->sprite_pivot = V2(1, 0); entity_enable_prop(e, ENTITY_PROP_TEST); entity_enable_prop(e, ENTITY_PROP_TEST_FOLLOW_MOUSE); @@ -200,7 +200,8 @@ INTERNAL void game_update(void) /* ENTITY_PROP_TEST */ if (entity_has_prop(ent, ENTITY_PROP_TEST) && !ent->test_initialized) { ent->test_initialized = true; - ent->test_trs = ent->rel_trs; + ent->test_start_rel_trs = ent->rel_trs; + ent->test_start_sprite_trs = ent->sprite_trs; } /* ========================== * @@ -243,7 +244,7 @@ break_animation: /* ENTITY_PROP_TEST_FOLLOW_MOUSE */ if (entity_has_prop(ent, ENTITY_PROP_TEST_FOLLOW_MOUSE)) { ent->rel_trs.t = L.tick.player_focus; - ent->test_trs.t = L.tick.player_focus; + ent->test_start_rel_trs.t = L.tick.player_focus; } /* ENTITY_PROP_TEST */ @@ -251,12 +252,13 @@ break_animation: f32 t = ((f32)L.time); f32 r = t * 0.5f; - ent->sprite_trs.r = ent->test_trs.r + (r * 3.0f); + ent->rel_trs.r = ent->test_start_rel_trs.r + (r * 0.5f); + ent->sprite_trs.r = ent->test_start_sprite_trs.r + (r * 3.0f); - ent->rel_trs.r = ent->test_trs.r + (r * 0.25f); - //f32 s = 1 + (math_abs_f32(math_sin(t * 5)) * 0.5f); - //ent->rel_trs.s = v2_mul(ent->test_trs.s, s); + f32 s = 1 + (math_abs_f32(math_sin(t * 5)) * 0.25f); + ent->rel_trs.s = v2_mul(ent->test_start_rel_trs.s, s); + ent->sprite_trs.s = v2_mul(ent->test_start_sprite_trs.s, s * 1.5f); } /* ========================== *