I took a break. What was I doing.

This commit is contained in:
Dustin 2025-05-24 08:14:33 -07:00
parent a02eb6830a
commit b49b1d67d2
4 changed files with 25 additions and 6 deletions

View File

@ -56,6 +56,9 @@ func modify(_movement_parameters :MovementParameters):
func apply_multiple_modifiers( _modifiers: Array, _movement_direction :Vector2):
for m in _modifiers:
if m is StateModifierMovement:
##TODO: Check sign of direction here or maybe further down?
# if m.direction != sign(_movement_direction):
# pass
apply_state_modifier(m, _movement_direction)
func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction :Vector2):

View File

@ -155,7 +155,8 @@ func apply_state_modifier(movement_parameters :MovementParameters) -> MovementPa
var active_mods :bool= true
var mods :Array = get_state_machine_modifiers.call_func('StateModifierMovement', active_mods, current_state.is_grounded)
if (mods.size() > 0):
movement_parameters.apply_multiple_modifiers(mods, Vector2(0,0))
## Process mods and supply current velocity for single directions
movement_parameters.apply_multiple_modifiers(mods, velocity_controller.velocity)
return movement_parameters

View File

@ -36,6 +36,10 @@ export(Vector2) var acceleration
export var gravity: int = 0
export var only_grounded :bool = false
## Properties of modifier only take place when velocity is moving in this direction
## Honestly I'm not sure when this would come up so it's maybe not worth building for.
## A speed boost that only works in one direction? Why?
#export var only_apply_in_single_direction :bool = false
## Ways to determine how modifiers are applied to movement parameters
enum SUB_TYPE {

View File

@ -80,12 +80,12 @@ func calculate_velocity(_delta :float,
#var h_speed = resolve_h_speed(movement_parameters)
var start_speed :float = (
(movement_parameters.get_speed_start(RELATIVE_DIRECTION).x * move_direction.x) +
(movement_parameters.get_speed_start(POSITIVE_DIRECTION).x * POSITIVE_DIRECTION) -
(movement_parameters.get_speed_start(POSITIVE_DIRECTION).x * POSITIVE_DIRECTION) +
(movement_parameters.get_speed_start(NEGATIVE_DIRECTION).x * NEGATIVE_DIRECTION)
)
var end_speed :float = (
(movement_parameters.get_speed_end(RELATIVE_DIRECTION).x * move_direction.x) +
(movement_parameters.get_speed_end(POSITIVE_DIRECTION).x * POSITIVE_DIRECTION) -
(movement_parameters.get_speed_end(POSITIVE_DIRECTION).x * POSITIVE_DIRECTION) +
(movement_parameters.get_speed_end(NEGATIVE_DIRECTION).x * NEGATIVE_DIRECTION)
)
@ -118,11 +118,22 @@ func calculate_velocity(_delta :float,
print("resetting V impulse")
_v_impulse_applied = false
## Acceleration is always postive because we use the
# move toward functions.
## Acceleration is always postive because we use the current inertia
## placement to the movement range to determine direction of movement.
#calc_acceleration.x = abs(resolve_h_acceleration(movement_parameters, move_direction.x))
if sign(move_direction.x) != 0:
calc_acceleration.x = abs(movement_parameters.get_acceleration(0).x)
#calc_acceleration.x = abs(movement_parameters.get_acceleration(0).x)
calc_acceleration.x = (
movement_parameters.get_acceleration(RELATIVE_DIRECTION).x +
movement_parameters.get_acceleration(POSITIVE_DIRECTION).x +
movement_parameters.get_acceleration(NEGATIVE_DIRECTION).x
)
if calc_acceleration.x < 0:
push_warning("Negative Acceleration shouln't happen")
calc_acceleration.x = abs(calc_acceleration.x)
if sign(move_direction.y) != 0:
calc_acceleration.y = abs(movement_parameters.get_acceleration(0).y)