diff options
Diffstat (limited to 'sprite.gd')
-rw-r--r-- | sprite.gd | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -2,7 +2,7 @@ class_name Sprite extends Node2D -var sprite_data: SpriteResource +@export var sprite_data: SpriteResource var action_data: ActionFormat var current_action_idx := 0 @@ -21,16 +21,13 @@ func _ready() -> void: func load_file(path: String): var basename = path.get_basename() - sprite_data = load("%s.tres" % basename) + sprite_data = load("%s/sprite.tres" % basename) var act = FileAccess.open("%s.act" % basename, FileAccess.READ) action_data = ActionFormat.from_bytes(ByteStream.from_bytes( act.get_buffer(act.get_length()) )) - if not sprite_data.files_exist(): - sprite_data.save_to_file() # generate at "runtime" - set_process(true) set_current_action(0) @@ -71,19 +68,18 @@ func update(sprite_layers: Array[ActionFormat.SpriteLayer]): for idx in sprite_layers.size(): var sprite_layer = sprite_layers[idx] - - var base_dir = sprite_data.filepath.substr(0, sprite_data.filepath.length() - 4) # cut off .spr - var image = load("%s/%s.png" % [base_dir, str(sprite_layer.sprite_index).pad_zeros(3)]) + var image = sprite_data.images[sprite_layer.sprite_index] var sprite: Sprite2D if has_different_layer_count: sprite = Sprite2D.new() + sprite.centered = false # 必要!! sprite.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST else: sprite = %SpriteLayers.get_child(idx) sprite.texture = image - sprite.position = sprite_layer.get_position() + sprite.position = sprite_layer.get_position() - ceil(sprite_layer.get_size() / 2) # for fixing half pixel drawing sprite.self_modulate = sprite_layer.get_color() sprite.scale = sprite_layer.get_scale() sprite.rotation_degrees = sprite_layer.rotation_degrees |