Attempt2/lib/classes/state_modifier_animation.gd

80 lines
2.8 KiB
GDScript

class_name StateModifierAnimatedActor
extends StateModifier
## Animation modifier variables
## The name of the animation that could be applied and starting frame
var animation_name: String = ''
var animation_suffix: String = ''
var animation_starting_frame: int = 0
var animation_speed: float
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
func reset():
.reset()
animation_name = ''
animation_suffix = ''
animation_starting_frame = 0
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_StateModifierAnimatedActor(_copy_state: StateModifierAnimatedActor):
.copy(_copy_state)
_copy_state.animation_name = animation_name
_copy_state.animation_starting_frame = animation_starting_frame
_copy_state.animation_speed = animation_speed
#TODO: finish these
_copy_state.horizontal_speed = horizontal_speed
_copy_state.horizontal_acceleration = horizontal_acceleration
func merge_StateModifierAnimatedActor(_merge_from_modifier: StateModifierAnimatedActor):
.merge(_merge_from_modifier)
if modifier_type == TYPE.NONE and _merge_from_modifier.modifier_type != TYPE.NONE:
modifier_type = _merge_from_modifier.modifier_type
#_copy_state.animation_name += animation_name
match _merge_from_modifier.modifier_type:
TYPE.ANIMATION_SUFFIX:
# Attempt to seemlessly transition animations.
if _merge_from_modifier.animation_suffix != '':
animation_suffix = _merge_from_modifier.animation_suffix
TYPE.REPLACE_ANIMATION:
if _merge_from_modifier.animation_name != '':
animation_name = _merge_from_modifier.animation_name
_: # None
#print ('physics?')
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
#_copy_state.animation_starting_frame = animation_starting_frame
#_copy_state.animation_speed = animation_speed
# This is probably not necessary just access properties directly
#func animation_mod_setup( anim_name:String = ''):
# # If somebody forgot to specify the type
# if anim_name != '' and modifier_type == TYPE.NONE:
# modifier_type = TYPE.REPLACE_ANIMATION
# animation_name = anim_name
## if parent != null and function_name != "":
## state_call_function = funcref(parent, function_name)