Compare commits

..

2 Commits

21 changed files with 65 additions and 13 deletions

View File

@ -6,9 +6,10 @@ export var base_move_speed :Vector2
export var base_move_acceleration :Vector2
export var move_speed_modifier :Vector2
export var move_speed_modifier_acceleration :Vector2
export var jerk_factor :Vector2
var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")
var jerk: float = 0.0
#var jerk: float = 0.0
## Can be set to help with debugging the velocity controller
export var debug_name :String
@ -28,7 +29,7 @@ func modify(_movement_parameters :MovementParameters):
func apply_multiple_modifiers( _modifiers: Array):
for m in _modifiers:
if m is StateModifierAnimatedActor:
if m is StateModifierMovement:
apply_state_modifier(m)
func apply_state_modifier(_modifier :StateModifierMovement):

View File

@ -17,6 +17,8 @@ onready var parent: KinematicBody2D = get_parent()
export var callable_state_machine :NodePath
var request_state_change: FuncRef
var get_state_machine_modifiers: FuncRef #get_modifiers_of_type
onready var desired_movement_vector: Vector2 = Vector2(0,0)
# Since animactor state machine can actually view properties from this type
@ -44,6 +46,7 @@ func _ready():
## FuncRef to request state machine change state
request_state_change = funcref(get_node(callable_state_machine), 'change_to_known_state')
get_state_machine_modifiers = funcref(get_node(callable_state_machine), 'get_modifiers_of_type')
## Connect signal to get alerted of state change
get_node(callable_state_machine).connect("state_changed", self,"_on_state_change")
## Get notified when modifiers updated
@ -145,10 +148,14 @@ func _on_modifiers_updated(_modifier_type :int, _modifier_action :int, _merged_m
modifier = _merged_modifier
func apply_state_modifier(movement_parameters :MovementParameters) -> MovementParameters:
if modifier and modifier.is_active:
if (current_state.is_grounded and modifier.only_grounded): # Should we skip
movement_parameters.apply_state_modifier(modifier)
# if modifier and modifier.is_active:
# if (current_state.is_grounded and modifier.only_grounded): # Should we skip
# 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

View File

@ -24,6 +24,9 @@ export var vertical_speed_offset: float = 0
## Applies only if offset applies
export var vertical_speed_offset_acceleration: float = 0
export var horizontal_jerk_factor: float = 1.0
export var vertical_jerk_factor: float = 1.0
## Should this state keep the inertia from previous states
export var preserve_inertia :bool = true
@ -33,8 +36,6 @@ export var is_grounded :bool = true
## Default state gravity is the project's gravity
var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")
var jerk: float
## Variables intended to allow state receivers to communicate
var animation_finished: bool = false
var animation_frame :int = -1
@ -50,7 +51,7 @@ func enter() -> void:
animation_finished = false
movement_stopped = false
animation_frame = -1
jerk = 0
#jerk = 0
return

View File

@ -76,6 +76,15 @@ func merge_modifiers():
if m.is_active:
this_mod_type.merge(m)
## When trying to get multiple modifiers
func get_modifiers_of_type(_modifier_type :String, _only_active: bool = false) -> Array:
var mod_array :Array = []
for m in state_modifiers:
if m.to_string() == _modifier_type:
if (_only_active and m.is_active) or _only_active == false:
mod_array.append(m)
return mod_array
# Change to the new state by first calling any exit logic on the current state.
func change_state(new_state: State) -> void:
var current_state_name :String

View File

@ -51,6 +51,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "hurt" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "attack-punch" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "attack-shoot" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "attack-sword" ]

View File

@ -17,6 +17,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "climb" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "idle-crouch" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "run_crouch" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "death" ]

View File

@ -17,6 +17,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "walk" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = false
animation_sequence = [ "jump" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "idle" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 200.0
vertical_acceleration = 0.0
vertical_speed_offset = -208.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = false
animation_sequence = [ "jump" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "land" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "ledge-climb" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "ledge-grab" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true
is_grounded = true
animation_sequence = [ "run" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0
vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = false
is_grounded = true
animation_sequence = [ "roll" ]