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): func apply_multiple_modifiers( _modifiers: Array, _movement_direction :Vector2):
for m in _modifiers: for m in _modifiers:
if m is StateModifierMovement: 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) apply_state_modifier(m, _movement_direction)
func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction :Vector2): 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 active_mods :bool= true
var mods :Array = get_state_machine_modifiers.call_func('StateModifierMovement', active_mods, current_state.is_grounded) var mods :Array = get_state_machine_modifiers.call_func('StateModifierMovement', active_mods, current_state.is_grounded)
if (mods.size() > 0): 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 return movement_parameters

View File

@ -36,6 +36,10 @@ export(Vector2) var acceleration
export var gravity: int = 0 export var gravity: int = 0
export var only_grounded :bool = false 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 ## Ways to determine how modifiers are applied to movement parameters
enum SUB_TYPE { enum SUB_TYPE {

View File

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