From 1608b8f6f575a72493a38df7455de36dc343972c Mon Sep 17 00:00:00 2001 From: The 64th Gamer <69170079+The64thGamer@users.noreply.github.com> Date: Mon, 7 Apr 2025 08:06:42 -0600 Subject: [PATCH] More epicness --- Scenes/Node Types/Float.tscn | 17 +++++++++++++ Scenes/Node Types/Random.tscn | 17 +++++++++++++ Scenes/Node Types/Sine.tscn | 1 + Scenes/Nodes/Node Row.tscn | 31 +++++++++++++++++++++++- Scenes/Nodes/Node.tscn | 19 +++++++++------ Scripts/GL_Float.gd | 11 +++++++++ Scripts/GL_Float.gd.uid | 1 + Scripts/GL_Node.gd | 36 ++++++++++++++++++++++++---- Scripts/GL_Node_Picker.gd | 9 +++++++ Scripts/GL_Node_Picker.gd.uid | 1 + Scripts/GL_Node_Picker_Bool.gd | 4 ++++ Scripts/GL_Node_Picker_Bool.gd.uid | 1 + Scripts/GL_Node_Picker_Color.gd | 4 ++++ Scripts/GL_Node_Picker_Color.gd.uid | 1 + Scripts/GL_Node_Picker_Float.gd | 4 ++++ Scripts/GL_Node_Picker_Float.gd.uid | 1 + Scripts/GL_Random.gd | 14 +++++++++++ Scripts/GL_Random.gd.uid | 1 + Scripts/GL_Search.gd | 2 +- Scripts/GL_Sine.gd | 8 ++++--- UI/Fonts/lectus.otf | Bin 0 -> 13704 bytes UI/Fonts/lectus.otf.import | 35 +++++++++++++++++++++++++++ UI/Fonts/lectus.ttf | Bin 0 -> 26468 bytes UI/Fonts/lectus.ttf.import | 35 +++++++++++++++++++++++++++ UI/Themes/Default.tres | 13 ++++++++++ UI/Themes/NodeTheme.tres | 11 +++++++++ 26 files changed, 260 insertions(+), 17 deletions(-) create mode 100644 Scenes/Node Types/Float.tscn create mode 100644 Scenes/Node Types/Random.tscn create mode 100644 Scripts/GL_Float.gd create mode 100644 Scripts/GL_Float.gd.uid create mode 100644 Scripts/GL_Node_Picker.gd create mode 100644 Scripts/GL_Node_Picker.gd.uid create mode 100644 Scripts/GL_Node_Picker_Bool.gd create mode 100644 Scripts/GL_Node_Picker_Bool.gd.uid create mode 100644 Scripts/GL_Node_Picker_Color.gd create mode 100644 Scripts/GL_Node_Picker_Color.gd.uid create mode 100644 Scripts/GL_Node_Picker_Float.gd create mode 100644 Scripts/GL_Node_Picker_Float.gd.uid create mode 100644 Scripts/GL_Random.gd create mode 100644 Scripts/GL_Random.gd.uid create mode 100644 UI/Fonts/lectus.otf create mode 100644 UI/Fonts/lectus.otf.import create mode 100644 UI/Fonts/lectus.ttf create mode 100644 UI/Fonts/lectus.ttf.import create mode 100644 UI/Themes/Default.tres create mode 100644 UI/Themes/NodeTheme.tres diff --git a/Scenes/Node Types/Float.tscn b/Scenes/Node Types/Float.tscn new file mode 100644 index 0000000..60d2546 --- /dev/null +++ b/Scenes/Node Types/Float.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=3 uid="uid://b2bkg67ii1e4p"] + +[ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_cnobp"] +[ext_resource type="Script" uid="uid://b325grg0122jn" path="res://Scripts/GL_Float.gd" id="2_cnobp"] + +[node name="Sine" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 1 + +[node name="Node" parent="." instance=ExtResource("1_cnobp")] +layout_mode = 0 +offset_right = 200.0 +script = ExtResource("2_cnobp") + +[connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] +[connection signal="mouse_exited" from="Node" to="Node" method="mouse_exit"] diff --git a/Scenes/Node Types/Random.tscn b/Scenes/Node Types/Random.tscn new file mode 100644 index 0000000..9aea24f --- /dev/null +++ b/Scenes/Node Types/Random.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=3 uid="uid://dhn8qtyeny0sm"] + +[ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_wswgt"] +[ext_resource type="Script" uid="uid://3vek1806nwqj" path="res://Scripts/GL_Random.gd" id="2_wswgt"] + +[node name="Sine" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 1 + +[node name="Node" parent="." instance=ExtResource("1_wswgt")] +layout_mode = 0 +offset_right = 200.0 +script = ExtResource("2_wswgt") + +[connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] +[connection signal="mouse_exited" from="Node" to="Node" method="mouse_exit"] diff --git a/Scenes/Node Types/Sine.tscn b/Scenes/Node Types/Sine.tscn index f87868b..dff98c4 100644 --- a/Scenes/Node Types/Sine.tscn +++ b/Scenes/Node Types/Sine.tscn @@ -10,6 +10,7 @@ mouse_filter = 1 [node name="Node" parent="." instance=ExtResource("1_m6pki")] layout_mode = 0 +offset_right = 200.0 script = ExtResource("2_claki") [connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] diff --git a/Scenes/Nodes/Node Row.tscn b/Scenes/Nodes/Node Row.tscn index c45db0e..77163a7 100644 --- a/Scenes/Nodes/Node Row.tscn +++ b/Scenes/Nodes/Node Row.tscn @@ -1,6 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://bdcxusbd86oox"] +[gd_scene load_steps=5 format=3 uid="uid://bdcxusbd86oox"] [ext_resource type="Script" uid="uid://dwl36vn5chqmq" path="res://Scripts/GL_Node_Point.gd" id="1_fygh4"] +[ext_resource type="Script" uid="uid://q5qlhwvjb16w" path="res://Scripts/GL_Node_Picker_Float.gd" id="2_vlx6y"] +[ext_resource type="Script" uid="uid://dflftb37a7ind" path="res://Scripts/GL_Node_Picker_Color.gd" id="3_tf34m"] +[ext_resource type="Script" uid="uid://b7ysqwtxh8pf" path="res://Scripts/GL_Node_Picker_Bool.gd" id="4_yal7b"] [node name="Node Row" type="HBoxContainer"] @@ -17,6 +20,29 @@ mouse_filter = 1 text = "Testtesttesttesttest" clip_text = true +[node name="Pick Float" type="HSlider" parent="."] +visible = false +custom_minimum_size = Vector2(50, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +max_value = 1.0 +step = 0.0 +script = ExtResource("2_vlx6y") + +[node name="Pick Color" type="ColorPickerButton" parent="."] +visible = false +custom_minimum_size = Vector2(50, 0) +layout_mode = 2 +color = Color(0.894432, 0.326066, 0.580441, 1) +script = ExtResource("3_tf34m") + +[node name="Pick Bool" type="CheckButton" parent="."] +visible = false +custom_minimum_size = Vector2(50, 0) +layout_mode = 2 +script = ExtResource("4_yal7b") + [node name="Output" type="Button" parent="." groups=["Outputs"]] layout_mode = 2 mouse_default_cursor_shape = 2 @@ -25,4 +51,7 @@ script = ExtResource("1_fygh4") [connection signal="mouse_entered" from="Input" to="Input" method="mouse_enter"] [connection signal="mouse_exited" from="Input" to="Input" method="mouse_exit"] +[connection signal="value_changed" from="Pick Float" to="Pick Float" method="value_changed"] +[connection signal="color_changed" from="Pick Color" to="Pick Color" method="color_changed"] +[connection signal="toggled" from="Pick Bool" to="Pick Bool" method="toggled"] [connection signal="button_down" from="Output" to="Output" method="_start_drag"] diff --git a/Scenes/Nodes/Node.tscn b/Scenes/Nodes/Node.tscn index d820fee..e0a91e6 100644 --- a/Scenes/Nodes/Node.tscn +++ b/Scenes/Nodes/Node.tscn @@ -1,13 +1,15 @@ -[gd_scene format=3 uid="uid://b0arjg8r75f8y"] +[gd_scene load_steps=2 format=3 uid="uid://b0arjg8r75f8y"] + +[ext_resource type="Theme" uid="uid://b3wjoiiv6sq22" path="res://UI/Themes/Default.tres" id="1_arhwt"] [node name="Node" type="Panel"] -custom_minimum_size = Vector2(100, 100) -offset_right = 100.0 -offset_bottom = 100.0 +custom_minimum_size = Vector2(200, 100) +offset_right = 200.0 +offset_bottom = 50.0 mouse_default_cursor_shape = 6 +theme = ExtResource("1_arhwt") -[node name="Holder" type="VBoxContainer" parent="."] -custom_minimum_size = Vector2(100, 100) +[node name="Margins" type="MarginContainer" parent="."] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -15,7 +17,10 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -[node name="Title" type="Label" parent="Holder"] +[node name="Holder" type="VBoxContainer" parent="Margins"] +layout_mode = 2 + +[node name="Title" type="Label" parent="Margins/Holder"] layout_mode = 2 text = "Test" horizontal_alignment = 1 diff --git a/Scripts/GL_Float.gd b/Scripts/GL_Float.gd new file mode 100644 index 0000000..9b59f8d --- /dev/null +++ b/Scripts/GL_Float.gd @@ -0,0 +1,11 @@ +extends GL_Node + +func _ready(): + _set_title("Float") + _create_row("Output",null,0.0,true,0.0,1) + pass + +func _process(delta): + super._process(delta) + rows["Output"]["output"] = rows["Output"]["pickValue"] + _send_input("Output") diff --git a/Scripts/GL_Float.gd.uid b/Scripts/GL_Float.gd.uid new file mode 100644 index 0000000..fd42519 --- /dev/null +++ b/Scripts/GL_Float.gd.uid @@ -0,0 +1 @@ +uid://b325grg0122jn diff --git a/Scripts/GL_Node.gd b/Scripts/GL_Node.gd index 969e598..36b3e18 100644 --- a/Scripts/GL_Node.gd +++ b/Scripts/GL_Node.gd @@ -24,7 +24,7 @@ func _create_uuid(): uuid = rand.randi() func _update_visuals(): - var holder = get_node("Holder") + var holder = get_node("Margins").get_node("Holder") for child in holder.get_children(): if child.name != "Title": child.queue_free() @@ -39,11 +39,31 @@ func _update_visuals(): input.mainNode = self output.valueName = str(key) output.mainNode = self + if rows[key]["picker"] == true: + match typeof(rows[key]["pickValue"]): + TYPE_FLOAT: + assignPick(nodeRow.get_node("Pick Float"),str(key)) + var slider = nodeRow.get_node("Pick Float") as HSlider + slider.max_value = rows[key]["pickFloatMax"] + slider.value = rows[key]["pickValue"] + TYPE_BOOL: + assignPick(nodeRow.get_node("Pick Bool"),str(key)) + (nodeRow.get_node("Pick Float") as ColorPickerButton).color = rows[key]["pickValue"] + TYPE_COLOR: + assignPick(nodeRow.get_node("Pick Color"),str(key)) + (nodeRow.get_node("Pick Float") as CheckButton).button_pressed = rows[key]["pickValue"] + + _set_inout_type(nodeRow.get_node("Input") as Button,rows[key]["input"]) _set_inout_type(nodeRow.get_node("Output") as Button,rows[key]["output"]) +func assignPick(pick:GL_Node_Picker,key:String): + if pick != null: + pick.mainNode = self + pick.valueName = key + func give_input_point_pos(name:String) -> Vector2: - var holder = get_node("Holder").get_node(name) + var holder = get_node("Margins").get_node("Holder").get_node(name) if holder == null: return global_position else: @@ -65,10 +85,10 @@ func _set_inout_type(label:Button, value): label.visible = false func _set_title(name:String): - (get_node("Holder").get_node("Title") as Label).text = name + (get_node("Margins").get_node("Holder").get_node("Title") as Label).text = name -func _create_row(name:String,input,output): - rows[name] = {"input": input, "output": output, "connections": []} +func _create_row(name:String,input,output,picker:bool,pickDefault,pickFloatMaximum:float): + rows[name] = {"input": input, "output": output, "connections": [], "picker":picker,"pickValue":pickDefault,"backConnected":false,"pickFloatMax":pickFloatMaximum} _update_visuals() func _recieve_input(inputName:String,value): @@ -86,6 +106,11 @@ func _send_input(output_name: String): if target and input_name: target._recieve_input(input_name, rows[output_name]["output"]) +func _confirm_backConnection(input_name:String): + if !rows.has(input_name): + return + rows[input_name]["backConnected"] = true + func _create_connection(target:GL_Node,input_name:String,output_name:String): if not rows.has(output_name): return @@ -113,6 +138,7 @@ func _create_connection(target:GL_Node,input_name:String,output_name:String): connections.append(thenew) rows[output_name]["connections"] = connections + target._confirm_backConnection(input_name) func mouse_enter(): canDrag = true diff --git a/Scripts/GL_Node_Picker.gd b/Scripts/GL_Node_Picker.gd new file mode 100644 index 0000000..ba6792c --- /dev/null +++ b/Scripts/GL_Node_Picker.gd @@ -0,0 +1,9 @@ +extends Control +class_name GL_Node_Picker +var mainNode : GL_Node +var valueName:String + +func _process(delta): + if mainNode == null: + return + visible = !mainNode.rows[valueName]["backConnected"] diff --git a/Scripts/GL_Node_Picker.gd.uid b/Scripts/GL_Node_Picker.gd.uid new file mode 100644 index 0000000..7a8238a --- /dev/null +++ b/Scripts/GL_Node_Picker.gd.uid @@ -0,0 +1 @@ +uid://csv3oi505a3yw diff --git a/Scripts/GL_Node_Picker_Bool.gd b/Scripts/GL_Node_Picker_Bool.gd new file mode 100644 index 0000000..3488074 --- /dev/null +++ b/Scripts/GL_Node_Picker_Bool.gd @@ -0,0 +1,4 @@ +extends GL_Node_Picker + +func toggled(value:bool): + mainNode.rows[valueName]["pickValue"] = value diff --git a/Scripts/GL_Node_Picker_Bool.gd.uid b/Scripts/GL_Node_Picker_Bool.gd.uid new file mode 100644 index 0000000..ccf7147 --- /dev/null +++ b/Scripts/GL_Node_Picker_Bool.gd.uid @@ -0,0 +1 @@ +uid://b7ysqwtxh8pf diff --git a/Scripts/GL_Node_Picker_Color.gd b/Scripts/GL_Node_Picker_Color.gd new file mode 100644 index 0000000..db8dbd2 --- /dev/null +++ b/Scripts/GL_Node_Picker_Color.gd @@ -0,0 +1,4 @@ +extends GL_Node_Picker + +func color_changed(value:Color): + mainNode.rows[valueName]["pickValue"] = value diff --git a/Scripts/GL_Node_Picker_Color.gd.uid b/Scripts/GL_Node_Picker_Color.gd.uid new file mode 100644 index 0000000..357aaea --- /dev/null +++ b/Scripts/GL_Node_Picker_Color.gd.uid @@ -0,0 +1 @@ +uid://dflftb37a7ind diff --git a/Scripts/GL_Node_Picker_Float.gd b/Scripts/GL_Node_Picker_Float.gd new file mode 100644 index 0000000..530ed11 --- /dev/null +++ b/Scripts/GL_Node_Picker_Float.gd @@ -0,0 +1,4 @@ +extends GL_Node_Picker + +func value_changed(value:float): + mainNode.rows[valueName]["pickValue"] = value diff --git a/Scripts/GL_Node_Picker_Float.gd.uid b/Scripts/GL_Node_Picker_Float.gd.uid new file mode 100644 index 0000000..569c7a0 --- /dev/null +++ b/Scripts/GL_Node_Picker_Float.gd.uid @@ -0,0 +1 @@ +uid://q5qlhwvjb16w diff --git a/Scripts/GL_Random.gd b/Scripts/GL_Random.gd new file mode 100644 index 0000000..af006df --- /dev/null +++ b/Scripts/GL_Random.gd @@ -0,0 +1,14 @@ +extends GL_Node +var rng : RandomNumberGenerator + +func _ready(): + _set_title("Random") + _create_row("Output",null,0.0,false,null,0) + rng = RandomNumberGenerator.new() + rng.seed = Time.get_ticks_msec() + pass + +func _process(delta): + super._process(delta) + rows["Output"]["output"] = rng.randf() + _send_input("Output") diff --git a/Scripts/GL_Random.gd.uid b/Scripts/GL_Random.gd.uid new file mode 100644 index 0000000..38999eb --- /dev/null +++ b/Scripts/GL_Random.gd.uid @@ -0,0 +1 @@ +uid://3vek1806nwqj diff --git a/Scripts/GL_Search.gd b/Scripts/GL_Search.gd index 972dd16..88557e0 100644 --- a/Scripts/GL_Search.gd +++ b/Scripts/GL_Search.gd @@ -1,6 +1,6 @@ extends Control -var rows : Dictionary = {"Sine":99} +var rows : Dictionary = {"Sine":99,"Random":99,"Float":99} var searching : bool var lastMousePos : Vector2 diff --git a/Scripts/GL_Sine.gd b/Scripts/GL_Sine.gd index ba20afd..4898744 100644 --- a/Scripts/GL_Sine.gd +++ b/Scripts/GL_Sine.gd @@ -2,11 +2,13 @@ extends GL_Node func _ready(): _set_title("Sine") - _create_row("Output",null,0.0) - _create_row("Length",0.01,null) + _create_row("Output",null,0.0,false,null,0) + _create_row("Length",0.01,null,true,0.01,0.05) pass func _process(delta): super._process(delta) - rows["Output"]["output"] = sin(Time.get_ticks_msec() * rows["Length"].get("input",1)) + if rows["Length"]["picker"] == true && rows["Length"]["backConnected"] == false: + rows["Length"]["input"] = rows["Length"]["pickValue"] + rows["Output"]["output"] = (sin(Time.get_ticks_msec() * rows["Length"].get("input",1)) / 2) + 0.5 _send_input("Output") diff --git a/UI/Fonts/lectus.otf b/UI/Fonts/lectus.otf new file mode 100644 index 0000000000000000000000000000000000000000..48bbc475a30311bd76aee03666a9e7bc8ff52ae6 GIT binary patch literal 13704 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 literal 0 HcmV?d00001 diff --git a/UI/Fonts/lectus.otf.import b/UI/Fonts/lectus.otf.import new file mode 100644 index 0000000..e3ae67c --- /dev/null +++ b/UI/Fonts/lectus.otf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://d1fox3cy2qhx" +path="res://.godot/imported/lectus.otf-7c6965b88aea060243f3c50fbfb098b9.fontdata" + +[deps] + +source_file="res://UI/Fonts/lectus.otf" +dest_files=["res://.godot/imported/lectus.otf-7c6965b88aea060243f3c50fbfb098b9.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/UI/Fonts/lectus.ttf b/UI/Fonts/lectus.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58aafa31e6314227691c9ea50dd15074a7632834 GIT binary patch literal 26468 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 HxcYwq)~*C+ literal 0 HcmV?d00001 diff --git a/UI/Fonts/lectus.ttf.import b/UI/Fonts/lectus.ttf.import new file mode 100644 index 0000000..09c3b14 --- /dev/null +++ b/UI/Fonts/lectus.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://kjbv8xwyxfmp" +path="res://.godot/imported/lectus.ttf-06bbf50f1312c892a54d0a5c8d6eacee.fontdata" + +[deps] + +source_file="res://UI/Fonts/lectus.ttf" +dest_files=["res://.godot/imported/lectus.ttf-06bbf50f1312c892a54d0a5c8d6eacee.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/UI/Themes/Default.tres b/UI/Themes/Default.tres new file mode 100644 index 0000000..58cbc50 --- /dev/null +++ b/UI/Themes/Default.tres @@ -0,0 +1,13 @@ +[gd_resource type="Theme" load_steps=3 format=3 uid="uid://b3wjoiiv6sq22"] + +[ext_resource type="FontFile" uid="uid://d1fox3cy2qhx" path="res://UI/Fonts/lectus.otf" id="1_crk4k"] +[ext_resource type="StyleBox" uid="uid://crsm0yvhb6rv1" path="res://UI/Themes/NodeTheme.tres" id="1_ne1i0"] + +[resource] +Label/font_sizes/font_size = 12 +Label/fonts/font = ExtResource("1_crk4k") +MarginContainer/constants/margin_bottom = 10 +MarginContainer/constants/margin_left = 10 +MarginContainer/constants/margin_right = 10 +MarginContainer/constants/margin_top = 10 +Panel/styles/panel = ExtResource("1_ne1i0") diff --git a/UI/Themes/NodeTheme.tres b/UI/Themes/NodeTheme.tres new file mode 100644 index 0000000..eaf2651 --- /dev/null +++ b/UI/Themes/NodeTheme.tres @@ -0,0 +1,11 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://crsm0yvhb6rv1"] + +[resource] +bg_color = Color(0.178668, 0.310803, 0.118615, 1) +border_width_left = 5 +border_width_top = 5 +border_width_right = 5 +border_width_bottom = 5 +border_blend = true +corner_radius_top_left = 2 +corner_radius_top_right = 2