Animation Creator Code

 avatar
HoppersEcho
plain_text
3 years ago
2.9 kB
46
No Index
func setup_character_animations(character :OverworldCharacter) -> void:
	for animation in CharacterAnimations[character.character_name]:
		# Start with the first animation frame
		var frame := 0
		for direction in Globals.Directions:
			print("Working on ", direction.capitalize())
			# Determine animation name
			var anim_name :String = animation + direction.capitalize()
			# Define a new blank animation
			var anim_to_add := Animation.new()
			# Create the node properties track
			var track_index:= anim_to_add.add_track(Animation.TYPE_VALUE)
			# Define the first timestamp in the animation
			var timestamp := 0.0
			# Determine the number of vertical frames (rows) in the spritesheet
			var rows := int(character.sprite.texture.get_height() / DEFAULT_CHARACTER_SPRITE_SIZE.y)
			# Determine number of horizontal frames in the spritesheet
			var columns := int(character.sprite.texture.get_width() / DEFAULT_CHARACTER_SPRITE_SIZE.x)
			# Set the animation length in float seconds
			anim_to_add.set_length(MOVEMENT_ANIMATION_LENGTH)
			# Set the update mode to discrete
			anim_to_add.value_track_set_update_mode(track_index, Animation.UPDATE_DISCRETE)
			# Setting sprite h_frames
			anim_to_add.track_set_path(track_index, "sprite:hframes")
			anim_to_add.track_insert_key(track_index, timestamp, columns)
			print("Key count for hframes: ", anim_to_add.track_get_key_count(track_index))
			anim_to_add.track_set_path(track_index, "sprite:vframes")
			anim_to_add.track_insert_key(track_index, timestamp, rows)
			print("Key count for vframes: ", anim_to_add.track_get_key_count(track_index))
			anim_to_add.track_set_path(track_index, "sprite:texture")
			anim_to_add.track_insert_key(track_index, timestamp, CharacterAnimations[character.character_name][animation])
			print("Key count for texture: ", anim_to_add.track_get_key_count(track_index))
			# Set animation keyframes
			anim_to_add.track_set_path(track_index, "sprite:frame")
			print("Track_get_path: ", anim_to_add.track_get_path(track_index))
			print("Initial key count for frames: ", anim_to_add.track_get_key_count(track_index))
			for i in columns:
				print("Attemping to add frame ", frame, " as a frame keyframe at ", timestamp, " in ", animation, " ", direction, ".")
				anim_to_add.track_insert_key(track_index, timestamp, frame)
				timestamp += 0.1
				frame += 1
			print("Final key count for frames: ", anim_to_add.track_get_key_count(track_index))
			for keyframe in anim_to_add.track_get_key_count(track_index):
				print(anim_to_add.track_get_key_value(track_index, keyframe))
			print(character.character_name, " ", direction, " Animations: ", CharacterAnimations[character.character_name].keys())
			
			print("Adding animation ", anim_name, " to ", character.character_name)
			print("Animation: ", anim_to_add)
			character.animPlayer.add_animation(anim_name, anim_to_add)
Editor is loading...