I took a break. What was I doing.
This commit is contained in:
parent
a02eb6830a
commit
b49b1d67d2
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user