Add delay to global external forces for entities
Changelog: - Apply delay to crates and boulderscene_man
parent
a1101cd951
commit
371e6fcbdf
|
@ -41,6 +41,8 @@ typedef struct _CTransform_t {
|
|||
Vector2 prev_velocity;
|
||||
Vector2 accel;
|
||||
Vector2 fric_coeff;
|
||||
int8_t grav_delay;
|
||||
int8_t grav_timer;
|
||||
} CTransform_t;
|
||||
|
||||
typedef struct _CMovementState_t {
|
||||
|
|
|
@ -832,6 +832,12 @@ void global_external_forces_system(Scene_t* scene)
|
|||
CTransform_t* p_ctransform = get_component(p_ent, CTRANSFORM_COMP_T);
|
||||
CBBox_t* p_bbox = get_component(p_ent, CBBOX_COMP_T);
|
||||
|
||||
if (p_ctransform->grav_timer > 0)
|
||||
{
|
||||
p_ctransform->grav_timer--;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(p_mstate->ground_state & 1))
|
||||
{
|
||||
// Only apply upthrust if center is in water
|
||||
|
@ -1225,6 +1231,12 @@ void state_transition_update_system(Scene_t* scene)
|
|||
p_ent, p_ctransform->position, p_ctransform->prev_position, p_bbox->size,
|
||||
&data->tilemap
|
||||
);
|
||||
|
||||
if (on_ground)
|
||||
{
|
||||
p_ctransform->grav_timer = p_ctransform->grav_delay;
|
||||
}
|
||||
|
||||
bool in_water = false;
|
||||
if (!(p_mstate->water_state & 1))
|
||||
{
|
||||
|
|
|
@ -10,7 +10,8 @@ Entity_t* create_crate(EntityManager_t* ent_manager, Assets_t* assets, bool meta
|
|||
p_bbox->solid = true;
|
||||
p_bbox->fragile = !metal;
|
||||
|
||||
add_component(p_crate, CTRANSFORM_COMP_T);
|
||||
CTransform_t* p_ctransform = add_component(p_crate, CTRANSFORM_COMP_T);
|
||||
p_ctransform->grav_delay = 5;
|
||||
add_component(p_crate, CMOVEMENTSTATE_T);
|
||||
add_component(p_crate, CTILECOORD_COMP_T);
|
||||
CHurtbox_t* p_hurtbox = add_component(p_crate, CHURTBOX_T);
|
||||
|
@ -28,7 +29,8 @@ Entity_t* create_boulder(EntityManager_t* ent_manager, Assets_t* assets)
|
|||
p_bbox->solid = true;
|
||||
p_bbox->fragile = false;
|
||||
|
||||
add_component(p_boulder, CTRANSFORM_COMP_T);
|
||||
CTransform_t* p_ctransform = add_component(p_boulder, CTRANSFORM_COMP_T);
|
||||
p_ctransform->grav_delay = 5;
|
||||
add_component(p_boulder, CMOVEMENTSTATE_T);
|
||||
add_component(p_boulder, CTILECOORD_COMP_T);
|
||||
CMoveable_t* p_cmove = add_component(p_boulder, CMOVEABLE_T);
|
||||
|
|
Loading…
Reference in New Issue