The new tool can now save, also improved it's code, and fixed a few bugs.

This commit is contained in:
Relintai 2020-02-17 20:51:49 +01:00
parent 7d66723e19
commit c45c7eaa9a
3 changed files with 61 additions and 28 deletions

View File

@ -2,8 +2,8 @@ tool
extends Node2D
class_name LayeredTextureMaker
export(Vector2) var texture_size = Vector2(16, 16) setget set_tex_size
export(String) var texture_name = ""
export(Vector2) var texture_size : Vector2 = Vector2(16, 16) setget set_tex_size
export(Texture) var texture : Texture = null
export(float) var refresh_rate : float = 2.0
export(bool) var save : bool = false setget save_set
@ -12,46 +12,39 @@ var preview_node : Sprite = null
var viewport : Viewport = null
var last_refresh : float = 0
var queued_save : bool = false
const DEBUG_TREE : bool = false
func _enter_tree():
if not Engine.editor_hint:
return
set_meta("_edit_lock_", true)
emit_signal("item_lock_status_changed")
#emit_signal("item_lock_status_changed")
create_preview()
set_process(true)
func create_preview():
for c in get_children():
if c.name == "Preview":
preview_node = c
for ch in preview_node.get_children():
if ch is Viewport:
viewport = ch as Viewport
break
c.name = "------"
c.queue_free()
break
if viewport != null:
viewport.queue_free()
if preview_node != null:
preview_node.queue_free()
preview_node = Sprite.new() as Sprite
preview_node.name = "Preview"
preview_node.centered = false
add_child(preview_node)
#don't, so it won't show up in the inspector
#if Engine.editor_hint:
# preview_node.owner = get_tree().edited_scene_root
if Engine.editor_hint and DEBUG_TREE:
preview_node.owner = get_tree().edited_scene_root
viewport = Viewport.new()
preview_node.add_child(viewport)
#don't, so it won't show up in the inspector
#if Engine.editor_hint:
# viewport.owner = get_tree().edited_scene_root
if Engine.editor_hint and DEBUG_TREE:
viewport.owner = get_tree().edited_scene_root
viewport.set_vflip(true)
viewport.set_size(texture_size)
@ -61,6 +54,9 @@ func create_preview():
set_process(true)
func _process(delta):
if (queued_save):
save()
#not the best solution, but works for now
last_refresh += delta
@ -71,16 +67,29 @@ func _process(delta):
ch.queue_free()
for ch in get_children():
viewport.add_child(ch.duplicate())
if ch.name == "Preview":
continue
var n = ch.duplicate()
viewport.add_child(n)
if Engine.editor_hint and DEBUG_TREE:
n.owner = get_tree().edited_scene_root
if get_children().has(preview_node) and get_child(get_child_count() - 1) != preview_node:
move_child(preview_node, get_child_count() - 1)
queued_save = true
func save() -> void:
if texture_name == "":
print("Set a name for your texture!")
queued_save = false
if texture == null:
#print("LayeredTextureMaker: Set a target texture!")
return
texture.set_data(viewport.get_texture().get_data())
func preview_refresh() -> void:
for ch in viewport.get_children():

View File

@ -1,10 +1,21 @@
[gd_scene load_steps=2 format=2]
[gd_scene load_steps=4 format=2]
[ext_resource path="res://texture_tools/LayeredTextureMaker.gd" type="Script" id=1]
[ext_resource path="res://icon.png" type="Texture" id=2]
[ext_resource path="res://texture_tools/test/new_packerimageresource.tres" type="Texture" id=3]
[node name="LayeredTextureMaker" type="Node2D"]
script = ExtResource( 1 )
__meta__ = {
"_edit_lock_": true
}
refresh_rate = 3.0
texture = ExtResource( 3 )
refresh_rate = 2.0
[node name="Sprite" type="Sprite" parent="."]
modulate = Color( 0.780392, 0.478431, 0.478431, 1 )
self_modulate = Color( 0.454902, 1, 0.796078, 1 )
position = Vector2( 8.29768, 10.7308 )
rotation = 0.724902
scale = Vector2( 0.152605, 0.115388 )
texture = ExtResource( 2 )

View File

@ -0,0 +1,13 @@
[gd_resource type="PackerImageResource" load_steps=2 format=2]
[sub_resource type="Image" id=1]
data = {
"data": PoolByteArray( 73, 101, 123, 70, 79, 86, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 80, 135, 173, 73, 111, 137, 73, 77, 79, 75, 75, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 81, 139, 180, 81, 135, 174, 72, 97, 115, 74, 75, 76, 76, 76, 76, 75, 75, 75, 74, 74, 74, 74, 75, 75, 71, 77, 82, 72, 75, 78, 74, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 81, 140, 181, 81, 139, 180, 80, 125, 157, 73, 93, 106, 74, 77, 79, 72, 74, 76, 73, 75, 76, 67, 79, 87, 69, 109, 136, 73, 109, 134, 70, 88, 100, 72, 76, 78, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 81, 140, 181, 81, 140, 181, 81, 138, 179, 79, 132, 168, 74, 120, 152, 73, 103, 124, 70, 92, 108, 72, 106, 130, 73, 125, 161, 72, 135, 176, 74, 134, 174, 75, 113, 139, 70, 81, 89, 74, 74, 74, 76, 76, 76, 76, 76, 76, 81, 140, 181, 81, 140, 181, 81, 141, 181, 78, 139, 182, 75, 136, 185, 72, 135, 187, 73, 133, 177, 74, 131, 170, 73, 136, 179, 74, 141, 187, 74, 141, 187, 74, 138, 182, 75, 124, 158, 71, 85, 94, 74, 74, 74, 76, 76, 76, 82, 142, 182, 81, 141, 181, 81, 140, 182, 75, 139, 187, 73, 138, 190, 72, 138, 191, 72, 137, 190, 73, 140, 188, 74, 141, 188, 74, 142, 189, 74, 142, 189, 74, 141, 188, 74, 134, 176, 73, 105, 127, 72, 75, 76, 75, 75, 75, 120, 169, 200, 91, 146, 185, 110, 136, 158, 89, 135, 174, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 73, 140, 190, 74, 142, 189, 74, 142, 189, 74, 142, 189, 74, 139, 184, 67, 96, 115, 73, 74, 75, 76, 76, 76, 206, 224, 232, 189, 208, 221, 175, 183, 189, 132, 139, 151, 93, 134, 171, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 73, 140, 190, 74, 142, 189, 74, 141, 188, 74, 138, 181, 72, 105, 127, 72, 76, 78, 75, 75, 75, 159, 166, 172, 169, 171, 179, 197, 204, 210, 171, 181, 187, 126, 134, 147, 96, 133, 166, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 139, 191, 74, 142, 189, 74, 141, 187, 74, 133, 173, 68, 95, 113, 73, 75, 77, 77, 78, 80, 86, 88, 91, 111, 115, 118, 206, 210, 216, 141, 146, 157, 118, 127, 141, 96, 133, 165, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 139, 191, 74, 142, 189, 74, 141, 187, 74, 134, 175, 69, 99, 122, 87, 89, 91, 69, 69, 70, 76, 78, 80, 116, 117, 121, 203, 207, 212, 131, 144, 158, 90, 136, 171, 73, 141, 190, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 139, 191, 74, 142, 189, 74, 141, 188, 74, 135, 177, 167, 174, 175, 98, 101, 103, 71, 72, 74, 131, 133, 135, 222, 226, 233, 125, 165, 193, 76, 143, 189, 74, 142, 189, 74, 141, 189, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 74, 141, 189, 74, 142, 189, 153, 160, 162, 191, 197, 199, 148, 151, 153, 178, 182, 183, 128, 161, 183, 80, 144, 187, 74, 142, 189, 75, 142, 189, 74, 142, 189, 74, 142, 189, 72, 139, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 73, 141, 190, 96, 143, 174, 122, 125, 130, 155, 162, 163, 139, 169, 187, 87, 144, 183, 82, 144, 186, 79, 144, 189, 77, 143, 189, 77, 143, 189, 75, 142, 189, 74, 142, 189, 72, 139, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191, 86, 145, 185, 91, 142, 177, 106, 133, 153, 91, 146, 182, 86, 145, 185, 87, 147, 188, 86, 148, 190, 86, 149, 192, 97, 155, 196, 78, 143, 189, 75, 143, 189, 74, 142, 189, 72, 139, 191, 72, 138, 191, 72, 138, 191, 72, 138, 191 ),
"format": "RGB8",
"height": 16,
"mipmaps": false,
"width": 16
}
[resource]
data = SubResource( 1 )