diff --git a/src/Autoload/Global.gd b/src/Autoload/Global.gd index 2d4fa177d..de2693735 100644 --- a/src/Autoload/Global.gd +++ b/src/Autoload/Global.gd @@ -427,12 +427,8 @@ var base_layer_button_node: PackedScene = load("res://src/UI/Timeline/BaseLayerB var pixel_layer_button_node: PackedScene = load("res://src/UI/Timeline/PixelLayerButton.tscn") ## The preload of button used by the [GroupLayer]. var group_layer_button_node: PackedScene = load("res://src/UI/Timeline/GroupLayerButton.tscn") -## The preload of button used by the [PixelCel]. -var pixel_cel_button_node: PackedScene = load("res://src/UI/Timeline/PixelCelButton.tscn") -## The preload of button used by the [GroupCel]. -var group_cel_button_node: PackedScene = load("res://src/UI/Timeline/GroupCelButton.tscn") -## The preload of button used by the [Cel3D]. -var cel_3d_button_node: PackedScene = load("res://src/UI/Timeline/Cel3DButton.tscn") +## The [PackedScene] of the button used by cels in the timeline. +var cel_button_scene: PackedScene = load("res://src/UI/Timeline/CelButton.tscn") @onready var main_window := get_window() ## The main Pixelorama [Window]. ## The control node (aka Main node). It has the [param Main.gd] script attached. diff --git a/src/Classes/Cels/BaseCel.gd b/src/Classes/Cels/BaseCel.gd index 87aec6fc5..8e0d08a8b 100644 --- a/src/Classes/Cels/BaseCel.gd +++ b/src/Classes/Cels/BaseCel.gd @@ -85,7 +85,7 @@ func on_remove() -> void: ## Returns an instance of the cel button that will be added to the timeline. func instantiate_cel_button() -> Node: - return null + return Global.cel_button_scene.instantiate() ## Returns to get the type of the cel class. diff --git a/src/Classes/Cels/Cel3D.gd b/src/Classes/Cels/Cel3D.gd index b35e138ce..5f1e1976f 100644 --- a/src/Classes/Cels/Cel3D.gd +++ b/src/Classes/Cels/Cel3D.gd @@ -290,9 +290,5 @@ func on_remove() -> void: viewport.queue_free() -func instantiate_cel_button() -> Node: - return Global.cel_3d_button_node.instantiate() - - func get_class_name() -> String: return "Cel3D" diff --git a/src/Classes/Cels/GroupCel.gd b/src/Classes/Cels/GroupCel.gd index a33e39cdd..08f1bcf2a 100644 --- a/src/Classes/Cels/GroupCel.gd +++ b/src/Classes/Cels/GroupCel.gd @@ -16,9 +16,5 @@ func get_image() -> Image: return image -func instantiate_cel_button() -> Node: - return Global.group_cel_button_node.instantiate() - - func get_class_name() -> String: return "GroupCel" diff --git a/src/Classes/Cels/PixelCel.gd b/src/Classes/Cels/PixelCel.gd index 78530b765..cab1a2ab1 100644 --- a/src/Classes/Cels/PixelCel.gd +++ b/src/Classes/Cels/PixelCel.gd @@ -57,9 +57,5 @@ func update_texture() -> void: super.update_texture() -func instantiate_cel_button() -> Node: - return Global.pixel_cel_button_node.instantiate() - - func get_class_name() -> String: return "PixelCel" diff --git a/src/UI/Timeline/Cel3DButton.tscn b/src/UI/Timeline/Cel3DButton.tscn deleted file mode 100644 index 9e3f7ecbb..000000000 --- a/src/UI/Timeline/Cel3DButton.tscn +++ /dev/null @@ -1,14 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://cqpi2e7amvsau"] - -[ext_resource type="PackedScene" uid="uid://byhnvhs6av108" path="res://src/UI/Timeline/BaseCelButton.tscn" id="1"] -[ext_resource type="Script" path="res://src/UI/Timeline/CelButton.gd" id="2"] - -[node name="PixelCelButton" instance=ExtResource("1")] -pivot_offset = Vector2(-18, 6) -script = ExtResource("2") - -[node name="LinkedIndicator" type="Polygon2D" parent="." index="1"] -color = Color(0, 1, 0, 1) -invert_enabled = true -invert_border = 1.0 -polygon = PackedVector2Array(0, 0, 36, 0, 36, 36, 0, 36) diff --git a/src/UI/Timeline/CelButton.gd b/src/UI/Timeline/CelButton.gd index 341318ab0..cd3a224eb 100644 --- a/src/UI/Timeline/CelButton.gd +++ b/src/UI/Timeline/CelButton.gd @@ -17,6 +17,8 @@ func _ready() -> void: button_setup() _dim_checker() cel.texture_changed.connect(_dim_checker) + if cel is GroupCel: + transparent_checker.visible = false func button_setup() -> void: @@ -84,7 +86,7 @@ func _on_CelButton_pressed() -> void: release_focus() elif Input.is_action_just_released("right_mouse"): - if is_instance_valid(popup_menu): + if cel is PixelCel: popup_menu.popup(Rect2(get_global_mouse_position(), Vector2.ONE)) button_pressed = !button_pressed elif Input.is_action_just_released("middle_mouse"): diff --git a/src/UI/Timeline/BaseCelButton.tscn b/src/UI/Timeline/CelButton.tscn similarity index 62% rename from src/UI/Timeline/BaseCelButton.tscn rename to src/UI/Timeline/CelButton.tscn index acb791d9d..e068d78b1 100644 --- a/src/UI/Timeline/BaseCelButton.tscn +++ b/src/UI/Timeline/CelButton.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=4 format=3 uid="uid://byhnvhs6av108"] +[gd_scene load_steps=5 format=3 uid="uid://dw7ci3uixjuev"] -[ext_resource type="Shader" path="res://src/Shaders/TransparentChecker.gdshader" id="1"] -[ext_resource type="PackedScene" uid="uid://3pmb60gpst7b" path="res://src/UI/Nodes/TransparentChecker.tscn" id="2"] +[ext_resource type="Script" path="res://src/UI/Timeline/CelButton.gd" id="1_iewgo"] +[ext_resource type="PackedScene" uid="uid://3pmb60gpst7b" path="res://src/UI/Nodes/TransparentChecker.tscn" id="2_mi8wp"] +[ext_resource type="Shader" path="res://src/Shaders/TransparentChecker.gdshader" id="3_qv21g"] [sub_resource type="ShaderMaterial" id="1"] -shader = ExtResource("1") +shader = ExtResource("3_qv21g") shader_parameter/size = 10.0 shader_parameter/alpha = 1.0 shader_parameter/color1 = Color(0.7, 0.7, 0.7, 1) @@ -15,17 +16,19 @@ shader_parameter/rect_size = Vector2(0, 0) shader_parameter/follow_movement = false shader_parameter/follow_scale = false -[node name="BaseCelButton" type="Button"] +[node name="CelButton" type="Button"] custom_minimum_size = Vector2(36, 36) offset_top = 18.0 offset_right = 36.0 offset_bottom = 54.0 +pivot_offset = Vector2(-18, 6) size_flags_horizontal = 0 size_flags_vertical = 0 focus_mode = 0 mouse_default_cursor_shape = 2 toggle_mode = true button_mask = 7 +script = ExtResource("1_iewgo") [node name="CelTexture" type="TextureRect" parent="."] custom_minimum_size = Vector2(32, 32) @@ -39,7 +42,7 @@ size_flags_vertical = 0 expand_mode = 1 stretch_mode = 6 -[node name="TransparentChecker" parent="CelTexture" instance=ExtResource("2")] +[node name="TransparentChecker" parent="CelTexture" instance=ExtResource("2_mi8wp")] show_behind_parent = true material = SubResource("1") layout_mode = 1 @@ -49,5 +52,21 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +[node name="PopupMenu" type="PopupMenu" parent="."] +item_count = 3 +item_0/text = "Delete" +item_0/id = -1 +item_1/text = "Link Cels to" +item_1/id = -1 +item_2/text = "Unlink Cels" +item_2/id = 2 + +[node name="LinkedIndicator" type="Polygon2D" parent="."] +color = Color(0, 1, 0, 1) +invert_enabled = true +invert_border = 1.0 +polygon = PackedVector2Array(0, 0, 36, 0, 36, 36, 0, 36) + [connection signal="pressed" from="." to="." method="_on_CelButton_pressed"] [connection signal="resized" from="." to="." method="_on_CelButton_resized"] +[connection signal="id_pressed" from="PopupMenu" to="." method="_on_PopupMenu_id_pressed"] diff --git a/src/UI/Timeline/GroupCelButton.tscn b/src/UI/Timeline/GroupCelButton.tscn deleted file mode 100644 index fb3267a12..000000000 --- a/src/UI/Timeline/GroupCelButton.tscn +++ /dev/null @@ -1,10 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://b5qw4utq8u88h"] - -[ext_resource type="PackedScene" uid="uid://byhnvhs6av108" path="res://src/UI/Timeline/BaseCelButton.tscn" id="1"] -[ext_resource type="Script" path="res://src/UI/Timeline/CelButton.gd" id="2"] - -[node name="GroupCelButton" instance=ExtResource("1")] -script = ExtResource("2") - -[node name="TransparentChecker" parent="CelTexture" index="0"] -visible = false diff --git a/src/UI/Timeline/PixelCelButton.tscn b/src/UI/Timeline/PixelCelButton.tscn deleted file mode 100644 index 947f31686..000000000 --- a/src/UI/Timeline/PixelCelButton.tscn +++ /dev/null @@ -1,25 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://dw7ci3uixjuev"] - -[ext_resource type="PackedScene" uid="uid://byhnvhs6av108" path="res://src/UI/Timeline/BaseCelButton.tscn" id="1"] -[ext_resource type="Script" path="res://src/UI/Timeline/CelButton.gd" id="2"] - -[node name="PixelCelButton" instance=ExtResource("1")] -pivot_offset = Vector2(-18, 6) -script = ExtResource("2") - -[node name="PopupMenu" type="PopupMenu" parent="." index="1"] -item_count = 3 -item_0/text = "Delete" -item_0/id = -1 -item_1/text = "Link Cels to" -item_1/id = -1 -item_2/text = "Unlink Cels" -item_2/id = 2 - -[node name="LinkedIndicator" type="Polygon2D" parent="." index="2"] -color = Color(0, 1, 0, 1) -invert_enabled = true -invert_border = 1.0 -polygon = PackedVector2Array(0, 0, 36, 0, 36, 36, 0, 36) - -[connection signal="id_pressed" from="PopupMenu" to="." method="_on_PopupMenu_id_pressed"]