class_name StateModifierMovement extends StateModifier ## Movement Modifiers var horizontal_speed: float = 0 var horizontal_acceleration: float = 0 ## Movement Speed Offsets (Positive or Negative) var horizontal_speed_offset: float = 0 ## Applies only if offset applies var horizontal_speed_offset_acceleration: float = 0 var jerk_factor: float = 0 var gravity: int = 0 enum SUB_TYPE { NONE, # Basic physics modifier just adds numbers PASS_ZERO # Allows ability to surpass zero and move backwords } func _to_string(): return "StateModifierMovement" func reset(): .reset() modifier_type = SUB_TYPE.NONE horizontal_speed = 0 horizontal_acceleration = 0 ## Movement Speed Offsets (Positive or Negative) horizontal_speed_offset = 0 ## Applies only if offset applies horizontal_speed_offset_acceleration = 0 jerk_factor = 0 func copy(_copy_state: StateModifier): .copy(_copy_state) modifier_type = _copy_state.modifier_type if _copy_state.to_string() == "StateModifierMovement": _copy_state.horizontal_speed = horizontal_speed _copy_state.horizontal_acceleration = horizontal_acceleration func merge(_merge_from_modifier: StateModifier): .merge(_merge_from_modifier) is_active = _merge_from_modifier.is_active if modifier_type != SUB_TYPE.NONE and _merge_from_modifier.modifier_type != SUB_TYPE.NONE: push_warning( "Attempt to push modifier type over existing one. Wut du?" ) if _merge_from_modifier.to_string() == "StateModifierMovement": if modifier_type == SUB_TYPE.NONE and _merge_from_modifier.modifier_type != SUB_TYPE.NONE: modifier_type = _merge_from_modifier.modifier_type match _merge_from_modifier.modifier_type: _: horizontal_speed += _merge_from_modifier.horizontal_speed horizontal_acceleration += _merge_from_modifier.horizontal_acceleration horizontal_speed_offset += _merge_from_modifier.horizontal_speed_offset horizontal_speed_offset_acceleration += _merge_from_modifier.horizontal_speed_offset_acceleration