diff --git a/lib/classes/movement_parameters.gd b/lib/classes/movement_parameters.gd index 66d5b67..171749a 100644 --- a/lib/classes/movement_parameters.gd +++ b/lib/classes/movement_parameters.gd @@ -29,7 +29,7 @@ func modify(_movement_parameters :MovementParameters): func apply_multiple_modifiers( _modifiers: Array): for m in _modifiers: - if m is StateModifierAnimatedActor: + if m is StateModifierMovement: apply_state_modifier(m) func apply_state_modifier(_modifier :StateModifierMovement): diff --git a/lib/classes/movement_state_receiver.gd b/lib/classes/movement_state_receiver.gd index 9390c22..096a0c3 100644 --- a/lib/classes/movement_state_receiver.gd +++ b/lib/classes/movement_state_receiver.gd @@ -148,10 +148,14 @@ func _on_modifiers_updated(_modifier_type :int, _modifier_action :int, _merged_m modifier = _merged_modifier func apply_state_modifier(movement_parameters :MovementParameters) -> MovementParameters: - if modifier and modifier.is_active: - if (current_state.is_grounded and modifier.only_grounded): # Should we skip - movement_parameters.apply_state_modifier(modifier) - +# if modifier and modifier.is_active: +# if (current_state.is_grounded and modifier.only_grounded): # Should we skip +# 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 diff --git a/lib/classes/state_machine.gd b/lib/classes/state_machine.gd index fcaa141..f8ff14a 100644 --- a/lib/classes/state_machine.gd +++ b/lib/classes/state_machine.gd @@ -77,11 +77,12 @@ func merge_modifiers(): this_mod_type.merge(m) ## 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 = [] for m in state_modifiers: if m.to_string() == _modifier_type: - mod_array.append(m) + if (_only_active and m.is_active) or _only_active == false: + mod_array.append(m) return mod_array # Change to the new state by first calling any exit logic on the current state.