45 lines
1.7 KiB
GDScript
45 lines
1.7 KiB
GDScript
extends "animation_creator.gd"
|
|
|
|
|
|
func _setup_texture(sprite: Node, sprite_sheet: String, content: Dictionary, context: Dictionary):
|
|
var texture = _load_texture(sprite_sheet)
|
|
sprite.texture = texture
|
|
|
|
if content.frames.is_empty():
|
|
return
|
|
|
|
sprite.hframes = content.meta.size.w / content.frames[0].sourceSize.w
|
|
sprite.vframes = content.meta.size.h / content.frames[0].sourceSize.h
|
|
|
|
|
|
func _get_frame_property() -> String:
|
|
return "frame"
|
|
|
|
|
|
func _create_meta_tracks(sprite: Node, player: AnimationPlayer, animation: Animation):
|
|
var texture_track = _get_property_track_path(player, sprite, "texture")
|
|
var texture_track_index = _create_track(sprite, animation, texture_track)
|
|
animation.track_insert_key(texture_track_index, 0, sprite.texture)
|
|
|
|
var hframes_track = _get_property_track_path(player, sprite, "hframes")
|
|
var hframes_track_index = _create_track(sprite, animation, hframes_track)
|
|
animation.track_insert_key(hframes_track_index, 0, sprite.hframes)
|
|
|
|
var vframes_track = _get_property_track_path(player, sprite, "vframes")
|
|
var vframes_track_index = _create_track(sprite, animation, vframes_track)
|
|
animation.track_insert_key(vframes_track_index, 0, sprite.vframes)
|
|
|
|
var visible_track = _get_property_track_path(player, sprite, "visible")
|
|
var visible_track_index = _create_track(sprite, animation, visible_track)
|
|
animation.track_insert_key(visible_track_index, 0, true)
|
|
|
|
|
|
func _get_frame_key(sprite: Node, frame: Dictionary, context: Dictionary):
|
|
return _calculate_frame_index(sprite,frame)
|
|
|
|
|
|
func _calculate_frame_index(sprite: Node, frame: Dictionary) -> int:
|
|
var column = floor(frame.frame.x * sprite.hframes / sprite.texture.get_width())
|
|
var row = floor(frame.frame.y * sprite.vframes / sprite.texture.get_height())
|
|
return (row * sprite.hframes) + column
|
|
|