Multiple Movement Modifiers at once instead of having to be merged.

This commit is contained in:
Dustin 2025-05-10 21:22:51 -07:00
parent 71a497b73b
commit 0ac1c4abef
3 changed files with 12 additions and 7 deletions

View File

@ -29,7 +29,7 @@ func modify(_movement_parameters :MovementParameters):
func apply_multiple_modifiers( _modifiers: Array): func apply_multiple_modifiers( _modifiers: Array):
for m in _modifiers: for m in _modifiers:
if m is StateModifierAnimatedActor: if m is StateModifierMovement:
apply_state_modifier(m) apply_state_modifier(m)
func apply_state_modifier(_modifier :StateModifierMovement): func apply_state_modifier(_modifier :StateModifierMovement):

View File

@ -148,10 +148,14 @@ func _on_modifiers_updated(_modifier_type :int, _modifier_action :int, _merged_m
modifier = _merged_modifier modifier = _merged_modifier
func apply_state_modifier(movement_parameters :MovementParameters) -> MovementParameters: func apply_state_modifier(movement_parameters :MovementParameters) -> MovementParameters:
if modifier and modifier.is_active: # if modifier and modifier.is_active:
if (current_state.is_grounded and modifier.only_grounded): # Should we skip # if (current_state.is_grounded and modifier.only_grounded): # Should we skip
movement_parameters.apply_state_modifier(modifier) # movement_parameters.apply_state_modifier(modifier)
var active_mods :bool= true
var mods :Array = get_state_machine_modifiers.call_func('StateModifierMovement', active_mods)
if (mods.size() > 0):
movement_parameters.apply_multiple_modifiers(mods)
return movement_parameters return movement_parameters

View File

@ -77,10 +77,11 @@ func merge_modifiers():
this_mod_type.merge(m) this_mod_type.merge(m)
## When trying to get multiple modifiers ## When trying to get multiple modifiers
func get_modifiers_of_type(_modifier_type :String) -> Array: func get_modifiers_of_type(_modifier_type :String, _only_active: bool = false) -> Array:
var mod_array :Array = [] var mod_array :Array = []
for m in state_modifiers: for m in state_modifiers:
if m.to_string() == _modifier_type: if m.to_string() == _modifier_type:
if (_only_active and m.is_active) or _only_active == false:
mod_array.append(m) mod_array.append(m)
return mod_array return mod_array