80 lines
2.8 KiB
GDScript
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)
|
|
|