Multiple Movement Modifiers at once instead of having to be merged.
This commit is contained in:
parent
71a497b73b
commit
0ac1c4abef
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user