Removed the spritesheet generator.

This commit is contained in:
Relintai 2022-02-20 22:15:49 +01:00
parent a343af9cba
commit 9eca3ec0d8
13 changed files with 0 additions and 1392 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,113 +0,0 @@
[gd_scene load_steps=10 format=2]
[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=1]
[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=2]
[ext_resource path="res://spritesheet_generator/SheetGen.gd" type="Script" id=3]
[ext_resource path="res://testsave.png" type="Texture" id=4]
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5]
[ext_resource path="res://characters/naturalist_characteratlas.tres" type="CharacterAtlas" id=6]
[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=7]
[sub_resource type="Environment" id=1]
ssao_enabled = true
[sub_resource type="World" id=2]
environment = SubResource( 1 )
[node name="TextureAtlasGenerator" type="Node2D"]
script = ExtResource( 3 )
_sprite_size = 38
_sprite_num = 16
_show_atlas = true
save_texture = true
animations = [ "run", "idle", "casting", "rest" ]
z_index_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l") ]
instant_preview_path = NodePath("InstantPreview")
sprite_preview_path = NodePath("SpritePreview")
viewport_path = NodePath("Viewport")
atlas_preview_path = NodePath("AtlasPreview")
model_front_path = NodePath("Viewport/Node2D/CharacterFrontModel")
model_front_animation_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationPlayer")
model_front_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationTree")
model_side_path = NodePath("Viewport/Node2D/CharacterSideModel")
model_side_animation_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationPlayer")
model_side_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationTree")
cast_animation_index = 2
cast_animation_scene = ExtResource( 7 )
cast_animation_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l/end"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/arm_l/hand_l/end") ]
[node name="Viewport" type="Viewport" parent="."]
size = Vector2( 64, 64 )
own_world = true
world = SubResource( 2 )
transparent_bg = true
handle_input_locally = false
hdr = false
usage = 0
render_target_v_flip = true
render_target_update_mode = 3
[node name="Camera" type="Camera2D" parent="Viewport"]
position = Vector2( 0, -15.726 )
z_index = 2
current = true
[node name="Node2D" type="Node2D" parent="Viewport"]
[node name="CharacterFrontModel" parent="Viewport/Node2D" instance=ExtResource( 1 )]
_atlas = ExtResource( 6 )
[node name="Torso" parent="Viewport/Node2D/CharacterFrontModel/Hip" index="1"]
position = Vector2( 0, -2.289 )
[node name="hand_l" parent="Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l" index="0"]
z_index = 1
[node name="AnimationTree" parent="Viewport/Node2D/CharacterFrontModel" index="2"]
active = false
[node name="CharacterSideModel" parent="Viewport/Node2D" instance=ExtResource( 2 )]
visible = false
rotation = 3.14147
scale = Vector2( 1, -1 )
_atlas = ExtResource( 6 )
[node name="arm_r" parent="Viewport/Node2D/CharacterSideModel" index="0"]
position = Vector2( -3.50004, -24.6155 )
[node name="hand_r" parent="Viewport/Node2D/CharacterSideModel" index="1"]
position = Vector2( -3.50004, -19.1155 )
z_index = 1
[node name="Torso" parent="Viewport/Node2D/CharacterSideModel/Hip" index="3"]
position = Vector2( 0, -2 )
[node name="AnimationTree" parent="Viewport/Node2D/CharacterSideModel" index="4"]
active = false
[node name="InstantPreview" type="Sprite" parent="."]
[node name="SpritePreview" type="Sprite" parent="."]
[node name="AtlasPreview" type="Sprite" parent="."]
position = Vector2( 603.531, 254.594 )
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 101.579, 162.161 )
texture = ExtResource( 4 )
hframes = 16
vframes = 16
frame = 9
script = ExtResource( 5 )
[node name="Test" type="Sprite" parent="."]
position = Vector2( -91.0568, 21.4517 )
texture = ExtResource( 4 )
hframes = 16
vframes = 16
[node name="Camera2D" type="Camera2D" parent="."]
current = true
[editable path="Viewport/Node2D/CharacterFrontModel"]
[editable path="Viewport/Node2D/CharacterSideModel"]

View File

@ -1,138 +0,0 @@
[gd_scene load_steps=12 format=2]
[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=1]
[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=2]
[ext_resource path="res://spritesheet_generator/SheetGenv2.gd" type="Script" id=3]
[ext_resource path="res://testsave.png" type="Texture" id=4]
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5]
[ext_resource path="res://characters/naturalist_characteratlas.tres" type="CharacterAtlas" id=6]
[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=7]
[sub_resource type="Environment" id=1]
ssao_enabled = true
[sub_resource type="World" id=2]
environment = SubResource( 1 )
[sub_resource type="Environment" id=3]
[sub_resource type="World" id=4]
environment = SubResource( 3 )
[node name="TextureAtlasGenerator" type="Node2D"]
script = ExtResource( 3 )
_sprite_size = 26
_sprite_num = 16
outline_color = Color( 0.027451, 0.027451, 0.027451, 1 )
_show_atlas = true
save_texture = true
animations = [ "run", "idle", "casting", "rest" ]
z_index_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l") ]
wp2_sprite3d_path = NodePath("Viewport2/Sprite3D")
instant_preview_path = NodePath("InstantPreview")
sprite_preview_path = NodePath("SpritePreview")
viewport_path = NodePath("Viewport")
viewport2_path = NodePath("Viewport2")
atlas_preview_path = NodePath("AtlasPreview")
model_front_path = NodePath("Viewport/Node2D/CharacterFrontModel")
model_front_animation_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationPlayer")
model_front_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationTree")
model_side_path = NodePath("Viewport/Node2D/CharacterSideModel")
model_side_animation_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationPlayer")
model_side_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationTree")
cast_animation_index = 2
cast_animation_scene = ExtResource( 7 )
cast_animation_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l/end"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/arm_l/hand_l/end") ]
[node name="Viewport" type="Viewport" parent="."]
size = Vector2( 64, 64 )
own_world = true
world = SubResource( 2 )
transparent_bg = true
handle_input_locally = false
hdr = false
usage = 0
render_target_v_flip = true
render_target_update_mode = 3
[node name="Camera" type="Camera2D" parent="Viewport"]
position = Vector2( 0, -15.726 )
z_index = 2
current = true
[node name="Node2D" type="Node2D" parent="Viewport"]
[node name="CharacterFrontModel" parent="Viewport/Node2D" instance=ExtResource( 1 )]
_atlas = ExtResource( 6 )
[node name="Torso" parent="Viewport/Node2D/CharacterFrontModel/Hip" index="1"]
position = Vector2( 0, -2.289 )
[node name="hand_l" parent="Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l" index="0"]
z_index = 1
[node name="AnimationTree" parent="Viewport/Node2D/CharacterFrontModel" index="2"]
active = false
[node name="CharacterSideModel" parent="Viewport/Node2D" instance=ExtResource( 2 )]
visible = false
rotation = 3.14147
scale = Vector2( 1, -1 )
_atlas = ExtResource( 6 )
[node name="arm_r" parent="Viewport/Node2D/CharacterSideModel" index="0"]
position = Vector2( -3.50004, -24.6155 )
[node name="hand_r" parent="Viewport/Node2D/CharacterSideModel" index="1"]
position = Vector2( -3.50004, -19.1155 )
z_index = 1
[node name="Torso" parent="Viewport/Node2D/CharacterSideModel/Hip" index="3"]
position = Vector2( 0, -2 )
[node name="AnimationTree" parent="Viewport/Node2D/CharacterSideModel" index="4"]
active = false
[node name="Viewport2" type="Viewport" parent="."]
size = Vector2( 64, 64 )
own_world = true
world = SubResource( 4 )
transparent_bg = true
handle_input_locally = false
keep_3d_linear = true
render_target_v_flip = true
render_target_update_mode = 3
[node name="Camera" type="Camera" parent="Viewport2"]
transform = Transform( 1, 0, 0, 0, 0.889783, 0.456384, 0, -0.456384, 0.889783, 0, 0.154229, 0.172536 )
projection = 1
current = true
[node name="Sprite3D" type="Sprite3D" parent="Viewport2"]
[node name="InstantPreview" type="Sprite" parent="."]
[node name="SpritePreview" type="Sprite" parent="."]
[node name="AtlasPreview" type="Sprite" parent="."]
position = Vector2( 603.531, 254.594 )
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 101.579, 162.161 )
texture = ExtResource( 4 )
hframes = 16
vframes = 16
frame = 9
script = ExtResource( 5 )
[node name="Test" type="Sprite" parent="."]
position = Vector2( -91.0568, 21.4517 )
texture = ExtResource( 4 )
hframes = 16
vframes = 16
[node name="Camera2D" type="Camera2D" parent="."]
current = true
[editable path="Viewport/Node2D/CharacterFrontModel"]
[editable path="Viewport/Node2D/CharacterSideModel"]

View File

@ -1,314 +0,0 @@
extends Node
export (int) var _sprite_size
export (int) var _sprite_num
var _directions : int = 4
export (bool) var _show_atlas = false
export (bool) var save_texture = false
export (bool) var generate : bool = false setget set_generate, get_generate
export (String) var output_file_name : String = "res://testsave.png"
export(bool) var outline_image : bool = true
export(Color) var outline_color : Color = Color(0, 0, 0, 1)
export(bool) var modulate_image_color : bool = true
export(Color) var modulate_color : Color = Color(1, 1, 1, 1)
export (Array, String) var animations : Array
export (Array, NodePath) var z_index_paths : Array
export (NodePath) var instant_preview_path
export (NodePath) var sprite_preview_path
export (NodePath) var viewport_path
export (NodePath) var atlas_preview_path
export (NodePath) var model_front_path
export (NodePath) var model_front_animation_player_path
export (NodePath) var model_front_animation_tree_player_path
export (NodePath) var model_side_path
export (NodePath) var model_side_animation_player_path
export (NodePath) var model_side_animation_tree_player_path
export(int) var cast_animation_index : int = 0
export(PackedScene) var cast_animation_scene : PackedScene = null
export (Array, NodePath) var cast_animation_paths : Array
var cast_animations : Array
var _viewport
var _viewport_texture
var _atlas
var _image_texture
var _atlas_texture
var _instant_preview
var _sprite_preview
var _atlas_preview
var _time = 0
var _frame = 0
var _index = 0
var _direction = 0
var _current_animation_index = 0
var _current_animation_player = null
var _running = false
var _model_front
var _model_front_animation_player
var _model_front_animation_tree_player
var _model_side
var _model_side_animation_player
var _model_side_animation_tree_player
var _texture
var _first = true
func _ready():
_viewport = get_node(viewport_path)
_instant_preview = get_node(instant_preview_path)
_sprite_preview = get_node(sprite_preview_path)
_atlas_preview = get_node(atlas_preview_path)
var img = ImageTexture.new()
img.flags = 0
img.create(_sprite_size, _sprite_size, 5, 0)
_sprite_preview.texture = img
_model_front = get_node(model_front_path)
_model_front_animation_player = get_node(model_front_animation_player_path)
_model_front_animation_tree_player = get_node(model_front_animation_tree_player_path)
if _model_side_animation_tree_player:
_model_front_animation_tree_player.active = false
_model_side = get_node(model_side_path)
_model_side_animation_player = get_node(model_side_animation_player_path)
_model_side_animation_tree_player = get_node(model_side_animation_tree_player_path)
if _model_side_animation_tree_player:
_model_side_animation_tree_player.active = false
_model_front.hide()
_model_side.show()
_viewport_texture = _viewport.get_texture()
_texture = Image.new()
var frame = _viewport.get_texture().get_data()
_texture.create(_sprite_size * _sprite_num, _sprite_size * _directions * animations.size(), false, frame.get_format())
_running = true
set_process(true)
func _process(delta):
#todo remove, only to make development easier
if !_viewport:
_ready()
if _first:
_first = false
setup_direction()
setup_animation()
return
var frame = _viewport.get_texture().get_data()
if modulate_image_color:
apply_modulate(frame)
if outline_image:
generate_outline(frame)
_sprite_preview.get_texture().set_data(frame)
if not _running:
return
if _frame >= _sprite_num:
_frame = 0
_index += 1
_direction += 1
if _direction >= _directions:
_direction = 0
_current_animation_index += 1
setup_direction()
if (_index >= _directions * animations.size()):
_running = false
create_atlas()
return
setup_animation()
return
var ur = frame.get_used_rect()
var xx : float = 0
xx = (_sprite_size - ur.size.x) / 2
_texture.blend_rect(frame, ur, Vector2((_frame * _sprite_size) + xx, (_index * _sprite_size)))
_current_animation_player.seek(_frame * (_current_animation_player.current_animation_length / (_sprite_num)), true)
_frame += 1
func setup_animation():
_current_animation_player.play(animations[_current_animation_index])
_current_animation_player.seek(0, true)
if !cast_animation_scene:
return
if _current_animation_index == cast_animation_index:
for cap in cast_animation_paths:
var n = get_node(cap)
if !n:
continue
var pa = cast_animation_scene.instance()
cast_animations.push_back(pa)
n.add_child(pa)
else:
for n in cast_animations:
n.queue_free()
cast_animations.clear()
#enum CharacterFacing
# FACING_FRONT = 0,
# FACING_BACK = 1,
# FACING_RIGHT = 2,
# FACING_LEFT = 3,
func setup_direction():
for a in cast_animations:
if a.has_method("get_z_index"):
a.z_index = 0
if _direction == 0:
_current_animation_player = _model_side_animation_player
_model_side.set_facing(2)
_model_side.transform.x.x = -1
_model_side.show()
_model_front.hide()
for np in z_index_paths:
get_node(np).z_index = 0
if _direction == 1:
_current_animation_player = _model_side_animation_player
_model_side.set_facing(3)
_model_side.transform.x.x = 1
_model_side.show()
_model_front.hide()
for np in z_index_paths:
get_node(np).z_index = 0
if _direction == 2:
_current_animation_player = _model_front_animation_player
_model_front.set_facing(0)
_model_side.hide()
_model_front.show()
for np in z_index_paths:
get_node(np).z_index = 0
if _direction == 3:
_current_animation_player = _model_front_animation_player
_model_front.set_facing(1)
_model_side.hide()
_model_front.show()
for np in z_index_paths:
get_node(np).z_index = -1
for a in cast_animations:
if a.has_method("get_z_index"):
a.z_index = -1
func generate_outline(img : Image):
img.lock()
for x in range(1, img.get_size().x - 1):
for y in range(1, img.get_size().y - 1):
var c : Color = img.get_pixel(x, y)
if is_zero_approx(c.a):
var cxn : Color = img.get_pixel(x - 1, y)
var cxp : Color = img.get_pixel(x + 1, y)
var cyn : Color = img.get_pixel(x, y - 1)
var cyp : Color = img.get_pixel(x, y + 1)
if cxn.is_equal_approx(outline_color):
cxn.a = 0
if cxp.is_equal_approx(outline_color):
cxp.a = 0
if cyn.is_equal_approx(outline_color):
cyn.a = 0
if cyp.is_equal_approx(outline_color):
cyp.a = 0
if !is_zero_approx(cxn.a) || !is_zero_approx(cxp.a) || !is_zero_approx(cyn.a) || !is_zero_approx(cyp.a):
img.set_pixel(x, y, outline_color)
img.unlock()
func apply_modulate(img : Image):
img.lock()
for x in range(1, img.get_width()):
for y in range(1, img.get_height()):
var c : Color = img.get_pixel(x, y)
c *= modulate_color
img.set_pixel(x, y, c)
img.unlock()
func create_atlas():
_image_texture = ImageTexture.new()
_image_texture.create_from_image(_texture, 0)
_image_texture.get_data().save_png(output_file_name)
if save_texture:
_sprite_preview.set_texture(_image_texture)
if _show_atlas:
_atlas_preview.set_texture(_image_texture)
func set_generate(v : bool) -> void:
if !v:
return
#for easier development
_ready()
_running = true
#set_process(true)
func get_generate() -> bool:
return false

View File

@ -1,331 +0,0 @@
extends Node
export (int) var _sprite_size
export (int) var _sprite_num
var _directions : int = 4
export(bool) var outline_image : bool = true
export(Color) var outline_color : Color = Color(0, 0, 0, 1)
export (bool) var _show_atlas = false
export (bool) var save_texture = false
export (bool) var generate : bool = false setget set_generate, get_generate
export (String) var output_file_name : String = "res://testsave.png"
export (Array, String) var animations : Array
export (Array, NodePath) var z_index_paths : Array
export (NodePath) var wp2_sprite3d_path
export (NodePath) var instant_preview_path
export (NodePath) var sprite_preview_path
export (NodePath) var viewport_path
export (NodePath) var viewport2_path
export (NodePath) var atlas_preview_path
export (NodePath) var model_front_path
export (NodePath) var model_front_animation_player_path
export (NodePath) var model_front_animation_tree_player_path
export (NodePath) var model_side_path
export (NodePath) var model_side_animation_player_path
export (NodePath) var model_side_animation_tree_player_path
export(int) var cast_animation_index : int = 0
export(PackedScene) var cast_animation_scene : PackedScene = null
export (Array, NodePath) var cast_animation_paths : Array
var cast_animations : Array
var _wp2_sprite3d
var _viewport
var _viewport_texture
var _viewport2
var _viewport2_texture
var _atlas
var _image_texture
var _atlas_texture
var _instant_preview
var _sprite_preview
var _atlas_preview
var _time = 0
var _frame = 0
var _index = 0
var _frame_atlas = 0
var _index_atlas = 0
var _direction = 0
var _current_animation_index = 0
var _current_animation_player = null
var _running = false
var _model_front
var _model_front_animation_player
var _model_front_animation_tree_player
var _model_side
var _model_side_animation_player
var _model_side_animation_tree_player
var _texture
var _texture2
var _first = true
var _first_frame = true
func _ready():
_viewport = get_node(viewport_path)
_viewport2 = get_node(viewport2_path)
_wp2_sprite3d = get_node(wp2_sprite3d_path)
_instant_preview = get_node(instant_preview_path)
_sprite_preview = get_node(sprite_preview_path)
_atlas_preview = get_node(atlas_preview_path)
var img = ImageTexture.new()
img.flags = 0
img.create(_sprite_size, _sprite_size, 5, 0)
_sprite_preview.texture = img
var img2 = ImageTexture.new()
img2.flags = 0
img2.create(64, 64, 5, 0)
_wp2_sprite3d.texture = img2
_model_front = get_node(model_front_path)
_model_front_animation_player = get_node(model_front_animation_player_path)
_model_front_animation_tree_player = get_node(model_front_animation_tree_player_path)
if _model_side_animation_tree_player:
_model_front_animation_tree_player.active = false
_model_side = get_node(model_side_path)
_model_side_animation_player = get_node(model_side_animation_player_path)
_model_side_animation_tree_player = get_node(model_side_animation_tree_player_path)
if _model_side_animation_tree_player:
_model_side_animation_tree_player.active = false
_model_front.hide()
_model_side.show()
_viewport_texture = _viewport.get_texture()
_texture = Image.new()
var frame = _viewport.get_texture().get_data()
_texture.create(64, 64, false, frame.get_format())
_texture2 = Image.new()
var frame2 = _viewport2.get_texture().get_data()
_texture2.create(_sprite_size * _sprite_num, _sprite_size * _directions * animations.size(), false, frame2.get_format())
_running = true
set_process(true)
func _process(delta):
if not _running:
return
#todo remove, only to make development easier
if !_viewport || !_viewport2:
_ready()
if _first:
_first = false
setup_direction()
setup_animation()
return
var frame = _viewport.get_texture().get_data()
_wp2_sprite3d.get_texture().set_data(frame)
if _first_frame:
_first_frame = false
#we need to let the second step render the first image from the prev step
return
var frame2 = _viewport2.get_texture().get_data()
if outline_image:
generate_outline(frame2)
var ur = frame2.get_used_rect()
var xx : float = 0
xx = (_sprite_size - ur.size.x) / 2
_texture2.blend_rect(frame2, ur, Vector2((_frame_atlas * _sprite_size) + xx, (_index_atlas * _sprite_size)))
_current_animation_player.seek(_frame_atlas * (_current_animation_player.current_animation_length / (_sprite_num)), true)
if (_index >= _directions * animations.size()):
_running = false
create_atlas()
return
_frame_atlas = _frame
_index_atlas = _index
_sprite_preview.get_texture().set_data(frame2)
if _frame >= _sprite_num:
_frame = 0
_index += 1
_direction += 1
if _direction >= _directions:
_direction = 0
_current_animation_index += 1
setup_direction()
if (_index >= _directions * animations.size()):
# _running = false
# create_atlas()
return
setup_animation()
return
_frame += 1
func setup_animation():
_current_animation_player.play(animations[_current_animation_index])
_current_animation_player.seek(0, true)
if !cast_animation_scene:
return
if _current_animation_index == cast_animation_index:
for cap in cast_animation_paths:
var n = get_node(cap)
if !n:
continue
var pa = cast_animation_scene.instance()
cast_animations.push_back(pa)
n.add_child(pa)
else:
for n in cast_animations:
n.queue_free()
cast_animations.clear()
#enum CharacterFacing
# FACING_FRONT = 0,
# FACING_BACK = 1,
# FACING_RIGHT = 2,
# FACING_LEFT = 3,
func setup_direction():
for a in cast_animations:
if a.has_method("get_z_index"):
a.z_index = 0
if _direction == 0:
_current_animation_player = _model_side_animation_player
_model_side.set_facing(2)
_model_side.transform.x.x = -1
_model_side.show()
_model_front.hide()
for np in z_index_paths:
get_node(np).z_index = 0
if _direction == 1:
_current_animation_player = _model_side_animation_player
_model_side.set_facing(3)
_model_side.transform.x.x = 1
_model_side.show()
_model_front.hide()
for np in z_index_paths:
get_node(np).z_index = 0
if _direction == 2:
_current_animation_player = _model_front_animation_player
_model_front.set_facing(0)
_model_side.hide()
_model_front.show()
for np in z_index_paths:
get_node(np).z_index = 0
if _direction == 3:
_current_animation_player = _model_front_animation_player
_model_front.set_facing(1)
_model_side.hide()
_model_front.show()
for np in z_index_paths:
get_node(np).z_index = -1
for a in cast_animations:
if a.has_method("get_z_index"):
a.z_index = -1
func generate_outline(img : Image):
img.lock()
for x in range(1, img.get_size().x - 1):
for y in range(1, img.get_size().y - 1):
var c : Color = img.get_pixel(x, y)
if is_zero_approx(c.a):
var cxn : Color = img.get_pixel(x - 1, y)
var cxp : Color = img.get_pixel(x + 1, y)
var cyn : Color = img.get_pixel(x, y - 1)
var cyp : Color = img.get_pixel(x, y + 1)
if cxn.is_equal_approx(outline_color):
cxn.a = 0
if cxp.is_equal_approx(outline_color):
cxp.a = 0
if cyn.is_equal_approx(outline_color):
cyn.a = 0
if cyp.is_equal_approx(outline_color):
cyp.a = 0
if !is_zero_approx(cxn.a) || !is_zero_approx(cxp.a) || !is_zero_approx(cyn.a) || !is_zero_approx(cyp.a):
img.set_pixel(x, y, outline_color)
img.unlock()
func create_atlas():
_image_texture = ImageTexture.new()
_image_texture.create_from_image(_texture2, 0)
_image_texture.get_data().save_png(output_file_name)
if save_texture:
_sprite_preview.set_texture(_image_texture)
if _show_atlas:
_atlas_preview.set_texture(_image_texture)
func set_generate(v : bool) -> void:
if !v:
return
#for easier development
_ready()
_running = true
#set_process(true)
func get_generate() -> bool:
return false

View File

@ -1,22 +0,0 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://icon.png" type="Texture" id=1]
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=2]
[sub_resource type="SpatialMaterial" id=1]
flags_transparent = true
params_billboard_mode = 1
[node name="Sprite3D" type="Sprite3D"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.39352, 0 )
material_override = SubResource( 1 )
cast_shadow = 0
flip_v = true
pixel_size = 0.064
texture = ExtResource( 1 )
vframes = 16
hframes = 16
script = ExtResource( 2 )

View File

@ -1,82 +0,0 @@
extends Node
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
var _sprite
export (bool) var enabled = true
export(int) var _animset = 0
export(int) var _animset_size = 16
export(int) var _animset_count = 16
var _min_frame = 0
var _max_frame = 16 * 16
var x = 0
var y = 0
var timer = 0
var _frame = 1
# Called when the node enters the scene tree for the first time.
func _ready():
_sprite = get_node(".")
_sprite.set_frame(_min_frame)
#_sprite.set_position(Vector2(x, y))
func set_movement_vector(vector):
var a = Vector2(vector.x, vector.z)
a = a.normalized()
var base = Vector2(0, -1)
var angle = a.angle_to(base) + PI
var slice = (2*PI) / _animset_count
var num_slice = int(angle / slice)
set_animset(num_slice)
func set_animset(animest_id):
if (animest_id >= _animset_count):
_animset = _animset_count - 1
if (animest_id < 0):
_animset = 0
_animset = animest_id
#_min_frame = _animset * _animset_size
#_max_frame = _animset * _animset_size + _animset_size
func _process(delta):
#set_animset(_animset)
if not enabled:
set_process(false)
return
timer += delta
if (timer > 0.05):
timer -= 0.05
_frame += 1
if _frame > _animset_size - 1:
_frame = 0
_sprite.set_frame(_frame + (_animset * _animset_size))
# Called every frame. 'delta' is the elapsed time since the previous frame.
func a_process(delta):
#x += int(delta * 300)
y += int(delta * 200)
if y > 700:
y = -50
_sprite.set_position(Vector2(x, y))

File diff suppressed because one or more lines are too long

View File

@ -1,137 +0,0 @@
[gd_scene load_steps=12 format=2]
[ext_resource path="res://spritesheet_generator/SheetGen.gd" type="Script" id=3]
[ext_resource path="res://spritesheet_generator_3d/Spatial.tscn" type="PackedScene" id=4]
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5]
[ext_resource path="res://spritesheet_generator/Sprite3Ds.tscn" type="PackedScene" id=6]
[sub_resource type="ProceduralSky" id=1]
[sub_resource type="Environment" id=2]
background_mode = 2
background_sky = SubResource( 1 )
background_color = Color( 0.364706, 0.364706, 0.364706, 1 )
background_energy = 0.69
ambient_light_color = Color( 1, 1, 1, 1 )
ambient_light_energy = 0.68
ambient_light_sky_contribution = 0.0
[sub_resource type="Environment" id=3]
background_mode = 1
background_energy = 0.57
ambient_light_color = Color( 0.113725, 0.113725, 0.113725, 1 )
ambient_light_energy = 0.68
ssao_enabled = true
[sub_resource type="World" id=4]
environment = SubResource( 3 )
[sub_resource type="Environment" id=5]
background_mode = 1
background_energy = 0.26
ambient_light_color = Color( 0.113725, 0.113725, 0.113725, 1 )
ambient_light_energy = 0.58
ambient_light_sky_contribution = 0.1
tonemap_exposure = 0.36
tonemap_white = 0.47
[sub_resource type="ViewportTexture" id=6]
viewport_path = NodePath("Viewport")
[sub_resource type="SpatialMaterial" id=7]
flags_transparent = true
params_billboard_mode = 1
[node name="Node" type="Node"]
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource( 2 )
[node name="player2" parent="." instance=ExtResource( 4 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -34.2601 )
visible = false
[node name="player" parent="." instance=ExtResource( 4 )]
visible = false
[node name="MicamoChar" parent="." instance=ExtResource( 4 )]
[node name="Viewport" type="Viewport" parent="."]
size = Vector2( 32, 32 )
own_world = true
world = SubResource( 4 )
transparent_bg = true
handle_input_locally = false
hdr = false
render_target_v_flip = true
render_target_update_mode = 3
script = ExtResource( 3 )
_sprite_size = 32
_sprite_num = 16
save_texture = true
[node name="MicamoChar" parent="Viewport" instance=ExtResource( 4 )]
[node name="Camera" type="Camera" parent="Viewport"]
transform = Transform( 0.707107, -0.353553, 0.612372, 0, 0.866025, 0.5, -0.707107, -0.353553, 0.612372, 2.95796, 3.39896, 2.92486 )
environment = SubResource( 5 )
projection = 1
current = true
size = 2.2
near = 0.01
far = 240.8
[node name="OmniLight" type="OmniLight" parent="Viewport"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05496, 1.55159, 3.33238 )
layers = 3
light_color = Color( 0.952941, 0.929412, 0.807843, 1 )
light_energy = 0.74
light_indirect_energy = 1.27
light_specular = 0.15
omni_range = 6.4
omni_attenuation = 1.1487
[node name="OmniLight2" type="OmniLight" parent="Viewport"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.4893, 3.88558, -2.30035 )
light_color = Color( 0.898039, 0.898039, 0.729412, 1 )
light_energy = 0.58
light_indirect_energy = 2.95
omni_range = 4.3
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 837.448, 475.588 )
centered = false
flip_v = true
hframes = 16
vframes = 16
script = ExtResource( 5 )
[node name="Camera" type="Camera" parent="."]
transform = Transform( 0.707107, -0.353553, 0.612372, 0, 0.866026, 0.5, -0.707107, -0.353553, 0.612372, 13.5879, 9.78323, 18.7533 )
projection = 1
current = true
size = 10.0
[node name="Sprite2" type="Sprite" parent="."]
position = Vector2( 179.55, 160.55 )
texture = SubResource( 6 )
flip_v = true
[node name="Sprite3" type="Sprite" parent="."]
position = Vector2( 603.531, 254.594 )
flip_v = true
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8.18889, 0, 14.9987 )
material_override = SubResource( 7 )
cast_shadow = 0
flip_v = true
pixel_size = 0.0156
hframes = 16
vframes = 16
script = ExtResource( 5 )
[node name="Sprite3D2" parent="." instance=ExtResource( 6 )]
visible = false
[editable path="Viewport/MicamoChar"]

View File

@ -1,129 +0,0 @@
extends Node
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
export (int) var _sprite_size
export (int) var _sprite_num
export (int) var _directions
export (bool) var _show_atlas = false
export (bool) var save_texture = false
export (NodePath) var _atlas_show_sprite_path
export (NodePath) var _sprite_path
export (NodePath) var _animation_player_path
export (NodePath) var _player_path
export (NodePath) var _animation_tree_player_path
var _viewport
var _viewport_texture
var _sprite
var _animation_player
var _time = 0
var _animation_tree_player
var _frame = 0
var _rotcount = 0
var _rotation = 0
var _atlas
var _image_texture
var _running = false
var _atlas_sprite_show_node
var _atlas_texture
var _player
var _texture
# Called when the node enters the scene tree for the first time.
func _ready():
_viewport = get_node(".")
#_viewport.set
_sprite = get_node(_sprite_path)
_atlas_sprite_show_node = get_node(_atlas_show_sprite_path)
_animation_player = get_node(_animation_player_path)
_player = get_node(_player_path)
_animation_tree_player = get_node(_animation_tree_player_path)
_viewport_texture = _viewport.get_texture()
_texture = Image.new()
var frame = _viewport.get_texture().get_data()
_texture.create(_sprite_size * _sprite_num, _sprite_size * _directions, false, frame.get_format())
yield(get_tree(), "idle_frame")
yield(get_tree(), "idle_frame")
_running = true
#_generated_image = Image.new()
#_generated_image.
#_sprite.set_texture(_viewport_texture)
#_frame_data.clear()
#_generated_image.create_from_data(64, 64, false, Image.FORMAT_RGBA4444, texture.get_data().get_data())
#texture = _viewport.get_texture()
#_sprite.set_texture(texture)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
#if not _running and Input.is_key_pressed(KEY_K):
# _running = true
if not _running:
return
#_viewport.update_worlds()
var frame = _viewport.get_texture().get_data()
#if _frame == 0 and _rotcount == 0:
_texture.blend_rect(frame, frame.get_used_rect(), Vector2((_frame * _sprite_size), (_rotcount * _sprite_size)))
#_time += 0.3
#_animation_player.seek (_time , true )
_frame += 1
if _frame > _sprite_num - 1:
_frame = 0
_rotcount += 1
if (_rotcount > _sprite_num - 1):
_running = false
create_atlas()
return
#var m3 = Basis()
#m3 = m3.rotated( Vector3(0,1,0), 0.19625 )
_player.rotate_y((PI*2)/float(_directions))
_animation_player.play("default")
#_rotation = _rotcount * 22.5
#_player.tra
#return
#0.83
_animation_player.seek(_frame * (_animation_player.current_animation_length / (_sprite_num - 1)), true)
#_animation_tree_player.advance(0.05)
func create_atlas():
_image_texture = ImageTexture.new()
_image_texture.create_from_image(_texture, 0)
_image_texture.get_data().save_png("res://testsave.png")
if save_texture:
_sprite.set_texture(_image_texture)
if _show_atlas:
_atlas_sprite_show_node.set_texture(_image_texture)
pass

View File

@ -1,3 +0,0 @@
[gd_scene format=2]
[node name="Spatial" type="Spatial"]

View File

@ -1,19 +0,0 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://testsave.png" type="Texture" id=1]
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=2]
[sub_resource type="SpatialMaterial" id=1]
flags_transparent = true
params_billboard_mode = 1
[node name="Sprite3D" type="Sprite3D"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.39352, 0 )
material_override = SubResource( 1 )
cast_shadow = 0
flip_v = true
pixel_size = 0.064
texture = ExtResource( 1 )
hframes = 16
vframes = 16
script = ExtResource( 2 )

View File

@ -1,82 +0,0 @@
extends Node
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
var _sprite
export (bool) var enabled = true
export(int) var _animset = 0
export(int) var _animset_size = 16
export(int) var _animset_count = 16
var _min_frame = 0
var _max_frame = 16 * 16
var x = 0
var y = 0
var timer = 0
var _frame = 1
# Called when the node enters the scene tree for the first time.
func _ready():
_sprite = get_node(".")
_sprite.set_frame(_min_frame)
#_sprite.set_position(Vector2(x, y))
func set_movement_vector(vector):
var a = Vector2(vector.x, vector.z)
a = a.normalized()
var base = Vector2(0, -1)
var angle = a.angle_to(base) + PI
var slice = (2*PI) / _animset_count
var num_slice = int(angle / slice)
set_animset(num_slice)
func set_animset(animest_id):
if (animest_id >= _animset_count):
_animset = _animset_count - 1
if (animest_id < 0):
_animset = 0
_animset = animest_id
#_min_frame = _animset * _animset_size
#_max_frame = _animset * _animset_size + _animset_size
func _process(delta):
#set_animset(_animset)
if not enabled:
set_process(false)
return
timer += delta
if (timer > 0.05):
timer -= 0.05
_frame += 1
if _frame > _animset_size - 1:
_frame = 0
_sprite.set_frame(_frame + (_animset * _animset_size))
# Called every frame. 'delta' is the elapsed time since the previous frame.
func a_process(delta):
#x += int(delta * 300)
y += int(delta * 200)
if y > 700:
y = -50
_sprite.set_position(Vector2(x, y))