diff --git a/graph_node_renderer/deck_node_renderer_graph_node.gd b/graph_node_renderer/deck_node_renderer_graph_node.gd
index 0d764b3..ee80fc2 100644
--- a/graph_node_renderer/deck_node_renderer_graph_node.gd
+++ b/graph_node_renderer/deck_node_renderer_graph_node.gd
@@ -25,6 +25,17 @@ const PORT_USAGE_ICONS := {
Port.UsageType.BOTH: preload("res://graph_node_renderer/textures/port_any_12.svg"),
}
+const DESCRIPTOR_SCENES := {
+ "button": preload("res://graph_node_renderer/descriptors/button_descriptor.tscn"),
+ "field": preload("res://graph_node_renderer/descriptors/field_descriptor.tscn"),
+ "singlechoice": preload("res://graph_node_renderer/descriptors/single_choice_descriptor.tscn"),
+ "codeblock": preload("res://graph_node_renderer/descriptors/codeblock_descriptor.tscn"),
+ "checkbox": preload("res://graph_node_renderer/descriptors/check_box_descriptor.tscn"),
+ "spinbox": preload("res://graph_node_renderer/descriptors/spin_box_descriptor.tscn"),
+ "label": preload("res://graph_node_renderer/descriptors/label_descriptor.tscn"),
+}
+
+
## Setups up all the properties based off [member node]. Including looping through
## [method DeckNode.get_all_ports()] and setting up all the descriptors.
func _ready() -> void:
@@ -112,94 +123,13 @@ func _on_node_renamed(new_name: String) -> void:
func update_port(port: Port) -> void:
var descriptor_split := port.descriptor.split(":")
- match descriptor_split[0]:
- "button":
- var button := Button.new()
- add_child(button)
- button.text = port.label
- if port.port_type == DeckNode.PortType.OUTPUT:
- button.pressed.connect(
- func():
- node.send(port.index_of_type, true)
- )
- #elif port.port_type == DeckNode.PortType.INPUT:
- else:
- button.pressed.connect(
- func():
- node._receive(port.index_of_type, true)
- )
- "field":
- var line_edit := LineEdit.new()
- add_child(line_edit)
- if port.value:
- line_edit.text = str(port.value)
- line_edit.placeholder_text = port.label
- port.value_callback = line_edit.get_text
- line_edit.text_changed.connect(port.set_value)
- "singlechoice":
- var box := OptionButton.new()
- if descriptor_split.slice(1).is_empty():
- if port.value:
- box.add_item(port.value)
- else:
- box.add_item(port.label)
- else:
- for item in descriptor_split.slice(1):
- box.add_item(item)
- add_child(box)
- port.value_callback = func(): return box.get_item_text(box.get_selected_id())
- if port.type == DeckType.Types.STRING:
- box.item_selected.connect(
- func(_id: int):
- port.set_value.call(box.get_item_text(box.get_selected_id()))
- )
- "codeblock":
- var code_edit = CodeEdit.new()
- add_child(code_edit)
- if port.value:
- code_edit.text = str(port.value)
- code_edit.placeholder_text = port.label
- port.value_callback = code_edit.get_text
- code_edit.text_changed.connect(port.set_value.bind(code_edit.get_text))
- code_edit.custom_minimum_size = Vector2(200, 100)
- code_edit.size_flags_vertical = SIZE_EXPAND_FILL
- "checkbox":
- var cb := CheckBox.new()
- add_child(cb)
- if descriptor_split.size() > 1:
- cb.button_pressed = true
- if port.value is bool:
- cb.button_pressed = port.value
- cb.text = port.label
- port.value_callback = cb.is_pressed
- cb.toggled.connect(port.set_value)
- "spinbox":
- var sb := SpinBox.new()
- add_child(sb)
- if port.value != null:
- sb.value = float(port.value)
- if "unbounded" in descriptor_split:
- sb.max_value = 99999
- sb.allow_greater = true
- sb.allow_lesser = true
- if descriptor_split.size() > 2:
- sb.step = float(descriptor_split[1])
- else:
- sb.step = 1.0
- else:
- sb.min_value = float(descriptor_split[1])
- if descriptor_split.size() > 2:
- sb.max_value = float(descriptor_split[2])
- if descriptor_split.size() > 3:
- sb.step = float(descriptor_split[3])
- port.value_callback = sb.get_value
- sb.value_changed.connect(port.set_value)
- _:
- var label := Label.new()
- add_child(label)
- label.text = port.label
- if port.port_type == DeckNode.PortType.OUTPUT:
- label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT
+ var d: DescriptorContainer
+ if DESCRIPTOR_SCENES.has(descriptor_split[0]):
+ d = DESCRIPTOR_SCENES[descriptor_split[0]].instantiate()
+ else:
+ d = DESCRIPTOR_SCENES.label.instantiate()
+ add_child(d)
+ d.set_up_from_port(port, node)
set_slot(
port.index,
diff --git a/graph_node_renderer/descriptors/button_descriptor.gd b/graph_node_renderer/descriptors/button_descriptor.gd
new file mode 100644
index 0000000..7ba66f5
--- /dev/null
+++ b/graph_node_renderer/descriptors/button_descriptor.gd
@@ -0,0 +1,21 @@
+# meta-description: An empty template with StreamGraph license header.
+# (c) 2023-present Eroax
+# (c) 2023-present Yagich
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+extends DescriptorContainer
+
+@onready var button: Button = %Button
+
+
+func _setup(port: Port, node: DeckNode) -> void:
+ button.text = port.label
+ if port.port_type == DeckNode.PortType.OUTPUT:
+ button.pressed.connect(
+ func():
+ node.send(port.index_of_type, true)
+ )
+ else:
+ button.pressed.connect(
+ func():
+ node._receive(port.index_of_type, true)
+ )
diff --git a/graph_node_renderer/descriptors/button_descriptor.tscn b/graph_node_renderer/descriptors/button_descriptor.tscn
new file mode 100644
index 0000000..23c3276
--- /dev/null
+++ b/graph_node_renderer/descriptors/button_descriptor.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://ckr4kal7nctrx"]
+
+[ext_resource type="PackedScene" uid="uid://8fmb03aluec" path="res://graph_node_renderer/descriptors/descriptor_container.tscn" id="1_hfny8"]
+[ext_resource type="Script" path="res://graph_node_renderer/descriptors/button_descriptor.gd" id="2_65frt"]
+
+[node name="ButtonDescriptor" instance=ExtResource("1_hfny8")]
+script = ExtResource("2_65frt")
+
+[node name="Button" type="Button" parent="." index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
diff --git a/graph_node_renderer/descriptors/check_box_descriptor.gd b/graph_node_renderer/descriptors/check_box_descriptor.gd
new file mode 100644
index 0000000..0e64e76
--- /dev/null
+++ b/graph_node_renderer/descriptors/check_box_descriptor.gd
@@ -0,0 +1,16 @@
+# (c) 2023-present Eroax
+# (c) 2023-present Yagich
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+extends DescriptorContainer
+
+@onready var check_box: CheckBox = %CheckBox
+
+
+func _setup(port: Port, _node: DeckNode) -> void:
+ if descriptor.size() > 1:
+ check_box.button_pressed = true
+ if port.value is bool:
+ check_box.button_pressed = port.value
+ check_box.text = port.label
+ port.value_callback = check_box.is_pressed
+ check_box.toggled.connect(port.set_value)
diff --git a/graph_node_renderer/descriptors/check_box_descriptor.tscn b/graph_node_renderer/descriptors/check_box_descriptor.tscn
new file mode 100644
index 0000000..01fac83
--- /dev/null
+++ b/graph_node_renderer/descriptors/check_box_descriptor.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://t1n4n78tstam"]
+
+[ext_resource type="PackedScene" uid="uid://8fmb03aluec" path="res://graph_node_renderer/descriptors/descriptor_container.tscn" id="1_seff0"]
+[ext_resource type="Script" path="res://graph_node_renderer/descriptors/check_box_descriptor.gd" id="2_3wtke"]
+
+[node name="CheckBoxDescriptor" instance=ExtResource("1_seff0")]
+script = ExtResource("2_3wtke")
+
+[node name="CheckBox" type="CheckBox" parent="." index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
diff --git a/graph_node_renderer/descriptors/codeblock_descriptor.gd b/graph_node_renderer/descriptors/codeblock_descriptor.gd
new file mode 100644
index 0000000..7d81747
--- /dev/null
+++ b/graph_node_renderer/descriptors/codeblock_descriptor.gd
@@ -0,0 +1,16 @@
+# (c) 2023-present Eroax
+# (c) 2023-present Yagich
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+extends DescriptorContainer
+
+@onready var code_edit: CodeEdit = %CodeEdit
+
+
+func _setup(port: Port, _node: DeckNode) -> void:
+ if port.value:
+ code_edit.text = str(port.value)
+ code_edit.placeholder_text = port.label
+ port.value_callback = code_edit.get_text
+ code_edit.text_changed.connect(port.set_value.bind(code_edit.get_text))
+ code_edit.custom_minimum_size = Vector2(200, 100)
+ code_edit.size_flags_vertical = SIZE_EXPAND_FILL
diff --git a/graph_node_renderer/descriptors/codeblock_descriptor.tscn b/graph_node_renderer/descriptors/codeblock_descriptor.tscn
new file mode 100644
index 0000000..cabb7d5
--- /dev/null
+++ b/graph_node_renderer/descriptors/codeblock_descriptor.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://chkr2fe7myh8u"]
+
+[ext_resource type="PackedScene" uid="uid://8fmb03aluec" path="res://graph_node_renderer/descriptors/descriptor_container.tscn" id="1_mf186"]
+[ext_resource type="Script" path="res://graph_node_renderer/descriptors/codeblock_descriptor.gd" id="2_2orkx"]
+
+[node name="CodeblockDescriptor" instance=ExtResource("1_mf186")]
+script = ExtResource("2_2orkx")
+
+[node name="CodeEdit" type="CodeEdit" parent="." index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
diff --git a/graph_node_renderer/descriptors/descriptor_container.gd b/graph_node_renderer/descriptors/descriptor_container.gd
new file mode 100644
index 0000000..60a2910
--- /dev/null
+++ b/graph_node_renderer/descriptors/descriptor_container.gd
@@ -0,0 +1,37 @@
+# meta-description: An empty template with StreamGraph license header.
+# (c) 2023-present Eroax
+# (c) 2023-present Yagich
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+extends HBoxContainer
+class_name DescriptorContainer
+
+@onready var type_icon: TextureRect = %TypeIcon
+var descriptor: Array
+
+const TYPE_ICONS := {
+ DeckType.Types.BOOL: preload("res://graph_node_renderer/textures/type_bool.svg"),
+ DeckType.Types.NUMERIC: preload("res://graph_node_renderer/textures/type_numeric.svg"),
+ DeckType.Types.STRING: preload("res://graph_node_renderer/textures/type_string.svg"),
+ DeckType.Types.ARRAY: preload("res://graph_node_renderer/textures/type_array.svg"),
+ DeckType.Types.DICTIONARY: preload("res://graph_node_renderer/textures/type_dictionary.svg"),
+}
+
+
+@warning_ignore("unused_parameter")
+func set_up_from_port(port: Port, node: DeckNode) -> void:
+ descriptor = port.descriptor.split(":")
+ _setup(port, node)
+ if port.port_type == DeckNode.PortType.VIRTUAL or port.type == DeckType.Types.ANY:
+ type_icon.visible = false
+ return
+
+ type_icon.modulate = DeckNodeRendererGraphNode.TYPE_COLORS[port.type]
+ type_icon.tooltip_text = "Type: %s" % DeckType.type_str(port.type).to_lower()
+ type_icon.texture = TYPE_ICONS[port.type]
+ if port.port_type == DeckNode.PortType.OUTPUT:
+ move_child(type_icon, -1)
+
+
+@warning_ignore("unused_parameter")
+func _setup(port: Port, node: DeckNode) -> void:
+ pass
diff --git a/graph_node_renderer/descriptors/descriptor_container.tscn b/graph_node_renderer/descriptors/descriptor_container.tscn
new file mode 100644
index 0000000..776737c
--- /dev/null
+++ b/graph_node_renderer/descriptors/descriptor_container.tscn
@@ -0,0 +1,15 @@
+[gd_scene load_steps=3 format=3 uid="uid://8fmb03aluec"]
+
+[ext_resource type="Script" path="res://graph_node_renderer/descriptors/descriptor_container.gd" id="1_mllll"]
+[ext_resource type="Texture2D" uid="uid://bol5ialhcf2ro" path="res://graph_node_renderer/textures/type_bool.svg" id="2_jphog"]
+
+[node name="DescriptorContainer" type="HBoxContainer"]
+size_flags_horizontal = 3
+script = ExtResource("1_mllll")
+
+[node name="TypeIcon" type="TextureRect" parent="."]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(16, 16)
+layout_mode = 2
+texture = ExtResource("2_jphog")
+stretch_mode = 3
diff --git a/graph_node_renderer/descriptors/field_descriptor.gd b/graph_node_renderer/descriptors/field_descriptor.gd
new file mode 100644
index 0000000..44ad79a
--- /dev/null
+++ b/graph_node_renderer/descriptors/field_descriptor.gd
@@ -0,0 +1,14 @@
+# (c) 2023-present Eroax
+# (c) 2023-present Yagich
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+extends DescriptorContainer
+
+@onready var line_edit: LineEdit = %LineEdit
+
+
+func _setup(port: Port, _node: DeckNode) -> void:
+ if port.value:
+ line_edit.text = str(port.value)
+ line_edit.placeholder_text = port.label
+ port.value_callback = line_edit.get_text
+ line_edit.text_changed.connect(port.set_value)
diff --git a/graph_node_renderer/descriptors/field_descriptor.tscn b/graph_node_renderer/descriptors/field_descriptor.tscn
new file mode 100644
index 0000000..e858f82
--- /dev/null
+++ b/graph_node_renderer/descriptors/field_descriptor.tscn
@@ -0,0 +1,13 @@
+[gd_scene load_steps=3 format=3 uid="uid://c8024ohyvhk5i"]
+
+[ext_resource type="PackedScene" uid="uid://8fmb03aluec" path="res://graph_node_renderer/descriptors/descriptor_container.tscn" id="1_5hcki"]
+[ext_resource type="Script" path="res://graph_node_renderer/descriptors/field_descriptor.gd" id="2_fot1l"]
+
+[node name="FieldDescriptor" instance=ExtResource("1_5hcki")]
+script = ExtResource("2_fot1l")
+
+[node name="LineEdit" type="LineEdit" parent="." index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+caret_blink = true
diff --git a/graph_node_renderer/descriptors/label_descriptor.gd b/graph_node_renderer/descriptors/label_descriptor.gd
new file mode 100644
index 0000000..af65863
--- /dev/null
+++ b/graph_node_renderer/descriptors/label_descriptor.gd
@@ -0,0 +1,12 @@
+# (c) 2023-present Eroax
+# (c) 2023-present Yagich
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+extends DescriptorContainer
+
+@onready var label: Label = %Label
+
+
+func _setup(port: Port, _node: DeckNode) -> void:
+ label.text = port.label
+ if port.port_type == DeckNode.PortType.OUTPUT:
+ label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT
diff --git a/graph_node_renderer/descriptors/label_descriptor.tscn b/graph_node_renderer/descriptors/label_descriptor.tscn
new file mode 100644
index 0000000..d9e6ecc
--- /dev/null
+++ b/graph_node_renderer/descriptors/label_descriptor.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://rb5g86kwrovd"]
+
+[ext_resource type="PackedScene" uid="uid://8fmb03aluec" path="res://graph_node_renderer/descriptors/descriptor_container.tscn" id="1_45bmr"]
+[ext_resource type="Script" path="res://graph_node_renderer/descriptors/label_descriptor.gd" id="2_mwy0b"]
+
+[node name="LabelDescriptor" instance=ExtResource("1_45bmr")]
+script = ExtResource("2_mwy0b")
+
+[node name="Label" type="Label" parent="." index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
diff --git a/graph_node_renderer/descriptors/single_choice_descriptor.gd b/graph_node_renderer/descriptors/single_choice_descriptor.gd
new file mode 100644
index 0000000..28550a5
--- /dev/null
+++ b/graph_node_renderer/descriptors/single_choice_descriptor.gd
@@ -0,0 +1,23 @@
+# (c) 2023-present Eroax
+# (c) 2023-present Yagich
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+extends DescriptorContainer
+
+@onready var box: OptionButton = %Box
+
+
+func _setup(port: Port, _node: DeckNode) -> void:
+ if descriptor.slice(1).is_empty():
+ if port.value:
+ box.add_item(port.value)
+ else:
+ box.add_item(port.label)
+ else:
+ for item in descriptor.slice(1):
+ box.add_item(item)
+ port.value_callback = func(): return box.get_item_text(box.get_selected_id())
+ if port.type == DeckType.Types.STRING:
+ box.item_selected.connect(
+ func(_id: int):
+ port.set_value.call(box.get_item_text(box.get_selected_id()))
+ )
diff --git a/graph_node_renderer/descriptors/single_choice_descriptor.tscn b/graph_node_renderer/descriptors/single_choice_descriptor.tscn
new file mode 100644
index 0000000..6d61eaa
--- /dev/null
+++ b/graph_node_renderer/descriptors/single_choice_descriptor.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://b1gndmvua0sc1"]
+
+[ext_resource type="PackedScene" uid="uid://8fmb03aluec" path="res://graph_node_renderer/descriptors/descriptor_container.tscn" id="1_d3gnn"]
+[ext_resource type="Script" path="res://graph_node_renderer/descriptors/single_choice_descriptor.gd" id="2_v3n2u"]
+
+[node name="SingleChoiceDescriptor" instance=ExtResource("1_d3gnn")]
+script = ExtResource("2_v3n2u")
+
+[node name="Box" type="OptionButton" parent="." index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
diff --git a/graph_node_renderer/descriptors/spin_box_descriptor.gd b/graph_node_renderer/descriptors/spin_box_descriptor.gd
new file mode 100644
index 0000000..82b86ca
--- /dev/null
+++ b/graph_node_renderer/descriptors/spin_box_descriptor.gd
@@ -0,0 +1,27 @@
+# (c) 2023-present Eroax
+# (c) 2023-present Yagich
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+extends DescriptorContainer
+
+@onready var spin_box: SpinBox = %SpinBox
+
+
+func _setup(port: Port, _node: DeckNode) -> void:
+ if port.value != null:
+ spin_box.value = float(port.value)
+ if "unbounded" in descriptor:
+ spin_box.max_value = 99999
+ spin_box.allow_greater = true
+ spin_box.allow_lesser = true
+ if descriptor.size() > 2:
+ spin_box.step = float(descriptor[1])
+ else:
+ spin_box.step = 1.0
+ else:
+ spin_box.min_value = float(descriptor[1])
+ if descriptor.size() > 2:
+ spin_box.max_value = float(descriptor[2])
+ if descriptor.size() > 3:
+ spin_box.step = float(descriptor[3])
+ port.value_callback = spin_box.get_value
+ spin_box.value_changed.connect(port.set_value)
diff --git a/graph_node_renderer/descriptors/spin_box_descriptor.tscn b/graph_node_renderer/descriptors/spin_box_descriptor.tscn
new file mode 100644
index 0000000..3bb5d4f
--- /dev/null
+++ b/graph_node_renderer/descriptors/spin_box_descriptor.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://bvdxb4cj0anb6"]
+
+[ext_resource type="PackedScene" uid="uid://8fmb03aluec" path="res://graph_node_renderer/descriptors/descriptor_container.tscn" id="1_ea46l"]
+[ext_resource type="Script" path="res://graph_node_renderer/descriptors/spin_box_descriptor.gd" id="2_cxb6h"]
+
+[node name="SpinBoxDescriptor" instance=ExtResource("1_ea46l")]
+script = ExtResource("2_cxb6h")
+
+[node name="SpinBox" type="SpinBox" parent="." index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
diff --git a/graph_node_renderer/textures/type_array.svg b/graph_node_renderer/textures/type_array.svg
new file mode 100644
index 0000000..5f6ad6a
--- /dev/null
+++ b/graph_node_renderer/textures/type_array.svg
@@ -0,0 +1,55 @@
+
+
+
+
diff --git a/graph_node_renderer/textures/type_array.svg.import b/graph_node_renderer/textures/type_array.svg.import
new file mode 100644
index 0000000..fd5aa15
--- /dev/null
+++ b/graph_node_renderer/textures/type_array.svg.import
@@ -0,0 +1,37 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bigqmjuo8snv6"
+path="res://.godot/imported/type_array.svg-2e1191c84d43632ec1e2fc36c8d61944.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://graph_node_renderer/textures/type_array.svg"
+dest_files=["res://.godot/imported/type_array.svg-2e1191c84d43632ec1e2fc36c8d61944.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/graph_node_renderer/textures/type_bool.svg b/graph_node_renderer/textures/type_bool.svg
new file mode 100644
index 0000000..2125b63
--- /dev/null
+++ b/graph_node_renderer/textures/type_bool.svg
@@ -0,0 +1,55 @@
+
+
+
+
diff --git a/graph_node_renderer/textures/type_bool.svg.import b/graph_node_renderer/textures/type_bool.svg.import
new file mode 100644
index 0000000..b09717c
--- /dev/null
+++ b/graph_node_renderer/textures/type_bool.svg.import
@@ -0,0 +1,37 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bol5ialhcf2ro"
+path="res://.godot/imported/type_bool.svg-92b38d7de4df29735406c7b522d91e73.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://graph_node_renderer/textures/type_bool.svg"
+dest_files=["res://.godot/imported/type_bool.svg-92b38d7de4df29735406c7b522d91e73.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/graph_node_renderer/textures/type_dictionary.svg b/graph_node_renderer/textures/type_dictionary.svg
new file mode 100644
index 0000000..9a189ee
--- /dev/null
+++ b/graph_node_renderer/textures/type_dictionary.svg
@@ -0,0 +1,59 @@
+
+
+
+
diff --git a/graph_node_renderer/textures/type_dictionary.svg.import b/graph_node_renderer/textures/type_dictionary.svg.import
new file mode 100644
index 0000000..ee5b985
--- /dev/null
+++ b/graph_node_renderer/textures/type_dictionary.svg.import
@@ -0,0 +1,37 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://po7fd7hyx61b"
+path="res://.godot/imported/type_dictionary.svg-99302a86f715d579f92f26a0938f2f8e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://graph_node_renderer/textures/type_dictionary.svg"
+dest_files=["res://.godot/imported/type_dictionary.svg-99302a86f715d579f92f26a0938f2f8e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/graph_node_renderer/textures/type_numeric.svg b/graph_node_renderer/textures/type_numeric.svg
new file mode 100644
index 0000000..5f23f92
--- /dev/null
+++ b/graph_node_renderer/textures/type_numeric.svg
@@ -0,0 +1,23 @@
+
+
+
+
diff --git a/graph_node_renderer/textures/type_numeric.svg.import b/graph_node_renderer/textures/type_numeric.svg.import
new file mode 100644
index 0000000..179c2fb
--- /dev/null
+++ b/graph_node_renderer/textures/type_numeric.svg.import
@@ -0,0 +1,37 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://4nxbgk4y2k2g"
+path="res://.godot/imported/type_numeric.svg-e123dacd412d3ef8051ed92c771cabc3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://graph_node_renderer/textures/type_numeric.svg"
+dest_files=["res://.godot/imported/type_numeric.svg-e123dacd412d3ef8051ed92c771cabc3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/graph_node_renderer/textures/type_string.svg b/graph_node_renderer/textures/type_string.svg
new file mode 100644
index 0000000..2e60a99
--- /dev/null
+++ b/graph_node_renderer/textures/type_string.svg
@@ -0,0 +1,47 @@
+
+
+
+
diff --git a/graph_node_renderer/textures/type_string.svg.import b/graph_node_renderer/textures/type_string.svg.import
new file mode 100644
index 0000000..e24e461
--- /dev/null
+++ b/graph_node_renderer/textures/type_string.svg.import
@@ -0,0 +1,37 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://i0jytdaqbhfq"
+path="res://.godot/imported/type_string.svg-899d33697d621295887bbca38bdc4ef5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://graph_node_renderer/textures/type_string.svg"
+dest_files=["res://.godot/imported/type_string.svg-899d33697d621295887bbca38bdc4ef5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false