diff --git a/addons/block_code/blocks/communication/add_node_to_group.tres b/addons/block_code/blocks/communication/add_node_to_group.tres new file mode 100644 index 00000000..b4ea7d66 --- /dev/null +++ b/addons/block_code/blocks/communication/add_node_to_group.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://bpvefei72nh3a"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_5qal7"] + +[resource] +script = ExtResource("1_5qal7") +name = &"add_node_to_group" +description = "Add the node into the group" +category = "Communication | Groups" +type = 2 +variant_type = 0 +display_template = "Add {node: OBJECT} to group {group: STRING}" +code_template = "{node}.add_to_group({group})" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/communication/add_to_group.tres b/addons/block_code/blocks/communication/add_to_group.tres new file mode 100644 index 00000000..a7dcb889 --- /dev/null +++ b/addons/block_code/blocks/communication/add_to_group.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://bvrmau8atjx1x"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_bcm71"] + +[resource] +script = ExtResource("1_bcm71") +name = &"add_to_group" +type = 2 +variant_type = 0 +display_template = "Add to group {group: STRING}" +code_template = "add_to_group({group})" +description = "Add this node into the group" +category = "Communication | Groups" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/communication/call_method_group.tres b/addons/block_code/blocks/communication/call_method_group.tres new file mode 100644 index 00000000..5df2fe2f --- /dev/null +++ b/addons/block_code/blocks/communication/call_method_group.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://c15vtdfihdxb8"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_mlm68"] + +[resource] +script = ExtResource("1_mlm68") +name = &"call_method_group" +type = 2 +variant_type = 0 +display_template = "Call method {method_name: STRING} in group {group: STRING}" +code_template = "get_tree().call_group({group}, {method_name})" +description = "Calls the method/function on each member of the given group" +category = "Communication | Methods" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/communication/call_method_node.tres b/addons/block_code/blocks/communication/call_method_node.tres new file mode 100644 index 00000000..5ed916df --- /dev/null +++ b/addons/block_code/blocks/communication/call_method_node.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://c04j5flmimjvf"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_pg363"] + +[resource] +script = ExtResource("1_pg363") +name = &"call_method_node" +type = 2 +variant_type = 0 +display_template = "Call method {method_name: STRING} on node {node: OBJECT}" +code_template = "{node}.call({method_name})" +description = "Calls the method/function of the given node" +category = "Communication | Methods" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/communication/define_method.tres b/addons/block_code/blocks/communication/define_method.tres new file mode 100644 index 00000000..5679c761 --- /dev/null +++ b/addons/block_code/blocks/communication/define_method.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://7r2b2griss3i"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_6e473"] + +[resource] +script = ExtResource("1_6e473") +name = &"define_method" +description = "Define a method/function with following code_templates" +category = "Communication | Methods" +type = 1 +variant_type = 0 +display_template = "Define method {method_name: NIL}" +code_template = "func {method_name}():" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/communication/is_in_group.tres b/addons/block_code/blocks/communication/is_in_group.tres new file mode 100644 index 00000000..0b38920a --- /dev/null +++ b/addons/block_code/blocks/communication/is_in_group.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://q4cnstftvsiu"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_tjyq5"] + +[resource] +script = ExtResource("1_tjyq5") +name = &"is_in_group" +description = "Is this node in the group" +category = "Communication | Groups" +type = 3 +variant_type = 1 +display_template = "Is in group {group: STRING}" +code_template = "is_in_group({group})" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/communication/is_node_in_group.tres b/addons/block_code/blocks/communication/is_node_in_group.tres new file mode 100644 index 00000000..3639b336 --- /dev/null +++ b/addons/block_code/blocks/communication/is_node_in_group.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://bbtdxeey74x67"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_5krrs"] + +[resource] +script = ExtResource("1_5krrs") +name = &"is_node_in_group" +description = "Is the node in the group" +category = "Communication | Groups" +type = 3 +variant_type = 1 +display_template = "Is {node: OBJECT} in group {group: STRING}" +code_template = "{node}.is_in_group({group})" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/communication/remove_from_group.tres b/addons/block_code/blocks/communication/remove_from_group.tres new file mode 100644 index 00000000..7e20f653 --- /dev/null +++ b/addons/block_code/blocks/communication/remove_from_group.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://dgenw5wyqorvq"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_cdwef"] + +[resource] +script = ExtResource("1_cdwef") +name = &"remove_from_group" +type = 2 +variant_type = 0 +display_template = "Remove from group {group: STRING}" +code_template = "remove_from_group({group})" +description = "Remove this node from the group" +category = "Communication | Groups" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/communication/remove_node_from_group.tres b/addons/block_code/blocks/communication/remove_node_from_group.tres new file mode 100644 index 00000000..9b132bed --- /dev/null +++ b/addons/block_code/blocks/communication/remove_node_from_group.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://b2dwk77hnri8y"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_pec24"] + +[resource] +script = ExtResource("1_pec24") +name = &"remove_node_from_group" +type = 2 +variant_type = 0 +display_template = "Remove {node: OBJECT} from group {group: STRING}" +code_template = "{node}.remove_from_group({group})" +description = "Remove the node from the group" +category = "Communication | Groups" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/lifecycle/physics_process.tres b/addons/block_code/blocks/lifecycle/physics_process.tres new file mode 100644 index 00000000..9042e139 --- /dev/null +++ b/addons/block_code/blocks/lifecycle/physics_process.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://bxl7n4tkf1mvd"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_s0hq0"] + +[resource] +script = ExtResource("1_s0hq0") +name = &"physics_process" +type = 1 +variant_type = 0 +display_template = "On Physics Process" +code_template = "func _physics_process(delta):" +description = "The following will be executed during the \"physics\" processing step of the main loop" +category = "Lifecycle" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/lifecycle/process.tres b/addons/block_code/blocks/lifecycle/process.tres new file mode 100644 index 00000000..7bb2ee83 --- /dev/null +++ b/addons/block_code/blocks/lifecycle/process.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://chioedvp50013"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_pmina"] + +[resource] +script = ExtResource("1_pmina") +name = &"process" +type = 1 +variant_type = 0 +display_template = "On Process" +code_template = "func _process(delta):" +description = "The following will be executed during the processing step of the main loop" +category = "Lifecycle" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/lifecycle/queue_free.tres b/addons/block_code/blocks/lifecycle/queue_free.tres new file mode 100644 index 00000000..2c65bdf4 --- /dev/null +++ b/addons/block_code/blocks/lifecycle/queue_free.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://4hj5b3xaiuy8"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_75fle"] + +[resource] +script = ExtResource("1_75fle") +name = &"queue_free" +type = 2 +variant_type = 0 +display_template = "Queue Free" +code_template = "queue_free()" +description = "Queues this node to be deleted at the end of the current frame" +category = "Lifecycle" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/lifecycle/ready.tres b/addons/block_code/blocks/lifecycle/ready.tres new file mode 100644 index 00000000..1455b0ae --- /dev/null +++ b/addons/block_code/blocks/lifecycle/ready.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://dgwfoepoejlom"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_vk0xk"] + +[resource] +script = ExtResource("1_vk0xk") +name = &"ready" +type = 1 +variant_type = 0 +display_template = "On Ready" +code_template = "func _ready():" +description = "The following will be executed when the node is \"ready\"" +category = "Lifecycle" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/log/concat.tres b/addons/block_code/blocks/log/concat.tres new file mode 100644 index 00000000..744bd5a7 --- /dev/null +++ b/addons/block_code/blocks/log/concat.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://cb6ux0amdhhlw"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_lstbo"] + +[resource] +script = ExtResource("1_lstbo") +name = &"concat" +description = "" +category = "Log" +type = 3 +variant_type = 4 +display_template = "{string1: STRING} + {string2: STRING}" +code_template = "{string1} + {string2}" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/log/print.tres b/addons/block_code/blocks/log/print.tres new file mode 100644 index 00000000..b0e85240 --- /dev/null +++ b/addons/block_code/blocks/log/print.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://barxsapb8tl0r"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_0lih2"] + +[resource] +script = ExtResource("1_0lih2") +name = &"print" +description = "Print the text to output" +category = "Log" +type = 2 +variant_type = 0 +display_template = "Print {text: STRING}" +code_template = "print({text})" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/logic/and.tres b/addons/block_code/blocks/logic/and.tres new file mode 100644 index 00000000..c333138f --- /dev/null +++ b/addons/block_code/blocks/logic/and.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://d0g11cp3ff81i"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="2_lxlcw"] + +[resource] +script = ExtResource("2_lxlcw") +name = &"and" +description = "" +category = "Logic | Boolean" +type = 3 +variant_type = 1 +display_template = "{bool1: BOOL} and {bool2: BOOL}" +code_template = "{bool1} and {bool2}" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/logic/compare.tres b/addons/block_code/blocks/logic/compare.tres new file mode 100644 index 00000000..d671d90e --- /dev/null +++ b/addons/block_code/blocks/logic/compare.tres @@ -0,0 +1,24 @@ +[gd_resource type="Resource" load_steps=4 format=3 uid="uid://pr5wnn3ltkbo"] + +[ext_resource type="Script" path="res://addons/block_code/ui/block_canvas/option_data.gd" id="1_hcv2h"] +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_wp40r"] + +[sub_resource type="Resource" id="Resource_ie4sg"] +script = ExtResource("1_hcv2h") +selected = 0 +items = ["==", ">", "<", ">=", "<=", "!="] + +[resource] +script = ExtResource("1_wp40r") +name = &"compare" +description = "" +category = "Logic | Comparison" +type = 3 +variant_type = 1 +display_template = "{float1: FLOAT} {op: OPTION} {float2: FLOAT}" +code_template = "{float1} {op} {float2}" +defaults = { +"op": SubResource("Resource_ie4sg") +} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/logic/else.tres b/addons/block_code/blocks/logic/else.tres new file mode 100644 index 00000000..4877389d --- /dev/null +++ b/addons/block_code/blocks/logic/else.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://dpgx8j3veifgl"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_x816c"] + +[resource] +script = ExtResource("1_x816c") +name = &"else" +type = 4 +variant_type = 0 +display_template = "Else" +code_template = "else:" +description = "" +category = "Logic | Conditionals" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/logic/else_if.tres b/addons/block_code/blocks/logic/else_if.tres new file mode 100644 index 00000000..d3d4dae0 --- /dev/null +++ b/addons/block_code/blocks/logic/else_if.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://by53vmmn3wtny"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_kgjks"] + +[resource] +script = ExtResource("1_kgjks") +name = &"else_if" +type = 4 +variant_type = 0 +display_template = "Else if {condition: BOOL}" +code_template = "elif {condition}:" +description = "" +category = "Logic | Conditionals" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/logic/if.tres b/addons/block_code/blocks/logic/if.tres new file mode 100644 index 00000000..5ba37c37 --- /dev/null +++ b/addons/block_code/blocks/logic/if.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://cxvoo3jassq8c"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_c6ly3"] + +[resource] +script = ExtResource("1_c6ly3") +name = &"if" +type = 4 +variant_type = 0 +display_template = "If {condition: BOOL}" +code_template = "if {condition}:" +description = "" +category = "Logic | Conditionals" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/logic/not.tres b/addons/block_code/blocks/logic/not.tres new file mode 100644 index 00000000..5839cabb --- /dev/null +++ b/addons/block_code/blocks/logic/not.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://d6asv53q6ok8"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_6igv6"] + +[resource] +script = ExtResource("1_6igv6") +name = &"not" +description = "" +category = "Logic | Boolean" +type = 3 +variant_type = 1 +display_template = "Not {bool: BOOL}" +code_template = "not {bool}" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/logic/or.tres b/addons/block_code/blocks/logic/or.tres new file mode 100644 index 00000000..c7b0f909 --- /dev/null +++ b/addons/block_code/blocks/logic/or.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://cyu2tntoqf85m"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_oets3"] + +[resource] +script = ExtResource("1_oets3") +name = &"or" +description = "" +category = "Logic | Boolean" +type = 3 +variant_type = 1 +display_template = "{bool1: BOOL} or {bool2: BOOL}" +code_template = "{bool1} or {bool2}" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/loops/break.tres b/addons/block_code/blocks/loops/break.tres new file mode 100644 index 00000000..afcbb27d --- /dev/null +++ b/addons/block_code/blocks/loops/break.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://dwteydig4c6hi"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_4rhsl"] + +[resource] +script = ExtResource("1_4rhsl") +name = &"break" +type = 2 +variant_type = 0 +display_template = "Break" +code_template = "break" +description = "" +category = "Loops" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/loops/continue.tres b/addons/block_code/blocks/loops/continue.tres new file mode 100644 index 00000000..a2697831 --- /dev/null +++ b/addons/block_code/blocks/loops/continue.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://srm0bee85n0d"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_junev"] + +[resource] +script = ExtResource("1_junev") +name = &"continue" +type = 2 +variant_type = 0 +display_template = "Continue" +code_template = "continue" +description = "" +category = "Loops" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/loops/for.tres b/addons/block_code/blocks/loops/for.tres new file mode 100644 index 00000000..6491c063 --- /dev/null +++ b/addons/block_code/blocks/loops/for.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://0g4njflvemaa"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_u01bi"] + +[resource] +script = ExtResource("1_u01bi") +name = &"for" +type = 4 +variant_type = 0 +display_template = "Repeat {n: INT}" +code_template = "for __i in {n}:" +description = "Run the connected blocks [i]n[/i] times" +category = "Loops" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/loops/while.tres b/addons/block_code/blocks/loops/while.tres new file mode 100644 index 00000000..3c3404a0 --- /dev/null +++ b/addons/block_code/blocks/loops/while.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://ccnjk5s5qb2xe"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_fxxh0"] + +[resource] +script = ExtResource("1_fxxh0") +name = &"while" +type = 4 +variant_type = 0 +display_template = "While {condition: BOOL}" +code_template = "while {condition}:" +description = "Run the connected blocks as long as [i]condition[/i] is true.\\nHint: snap a [b]Comparison[/b] block into the condition." +category = "Loops" +defaults = {} +signal_name = "" diff --git a/addons/block_code/blocks/math/add.tres b/addons/block_code/blocks/math/add.tres new file mode 100644 index 00000000..8a8621d3 --- /dev/null +++ b/addons/block_code/blocks/math/add.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://coy3o7q0x0y60"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_rks7c"] + +[resource] +script = ExtResource("1_rks7c") +name = &"add" +description = "" +category = "Math" +type = 3 +variant_type = 3 +display_template = "{a: FLOAT} + {b: FLOAT}" +code_template = "{a} + {b}" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/math/divide.tres b/addons/block_code/blocks/math/divide.tres new file mode 100644 index 00000000..1c5de6e1 --- /dev/null +++ b/addons/block_code/blocks/math/divide.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://dwk6c70c4ta0"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_rhh7v"] + +[resource] +script = ExtResource("1_rhh7v") +name = &"divide" +description = "" +category = "Math" +type = 3 +variant_type = 3 +display_template = "{a: FLOAT} / {b: FLOAT}" +code_template = "{a} / {b}" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/math/multiply.tres b/addons/block_code/blocks/math/multiply.tres new file mode 100644 index 00000000..19ec90e0 --- /dev/null +++ b/addons/block_code/blocks/math/multiply.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://yipjitb3p66q"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_c5vny"] + +[resource] +script = ExtResource("1_c5vny") +name = &"multiply" +description = "" +category = "Math" +type = 3 +variant_type = 3 +display_template = "{a: FLOAT} * {b: FLOAT}" +code_template = "{a} * {b}" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/math/pow.tres b/addons/block_code/blocks/math/pow.tres new file mode 100644 index 00000000..50a5b375 --- /dev/null +++ b/addons/block_code/blocks/math/pow.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://bib11ow5t44to"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_cx5g5"] + +[resource] +script = ExtResource("1_cx5g5") +name = &"pow" +description = "" +category = "Math" +type = 3 +variant_type = 3 +display_template = "{base: FLOAT} ^ {exp: FLOAT}" +code_template = "pow({base}, {exp})" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/math/subtract.tres b/addons/block_code/blocks/math/subtract.tres new file mode 100644 index 00000000..371ccc0c --- /dev/null +++ b/addons/block_code/blocks/math/subtract.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://dkt135xfcklya"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_n0dmm"] + +[resource] +script = ExtResource("1_n0dmm") +name = &"subtract" +description = "" +category = "Math" +type = 3 +variant_type = 3 +display_template = "{a: FLOAT} - {b: FLOAT}" +code_template = "{a} - {b}" +defaults = {} +signal_name = "" +scope = "" diff --git a/addons/block_code/blocks/variables/vector2.tres b/addons/block_code/blocks/variables/vector2.tres new file mode 100644 index 00000000..0da6e806 --- /dev/null +++ b/addons/block_code/blocks/variables/vector2.tres @@ -0,0 +1,19 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://ddj24k1fp0s82"] + +[ext_resource type="Script" path="res://addons/block_code/code_generation/block_definition.gd" id="1_ilw3v"] + +[resource] +script = ExtResource("1_ilw3v") +name = &"vector2" +description = "" +category = "Variables" +type = 3 +variant_type = 5 +display_template = "Vector2 x: {x: FLOAT} y: {y: FLOAT}" +code_template = "Vector2({x}, {y})" +defaults = { +"x": 0.0, +"y": 0.0 +} +signal_name = "" +scope = "" diff --git a/addons/block_code/code_generation/block_definition.gd b/addons/block_code/code_generation/block_definition.gd index e8ba7027..6ae6ce68 100644 --- a/addons/block_code/code_generation/block_definition.gd +++ b/addons/block_code/code_generation/block_definition.gd @@ -1,21 +1,47 @@ +@tool + extends Resource const Types = preload("res://addons/block_code/types/types.gd") -var name: StringName -var type: Types.BlockType -var description: String -var category: String +@export var name: StringName +@export var description: String +@export var category: String + +@export var type: Types.BlockType +@export var variant_type: Variant.Type -var label_template: String -var code_template: String -var defaults: Dictionary = {} +@export var display_template: String +@export var code_template: String +@export var defaults: Dictionary ## Only for blocks of type Types.ENTRY. If non-empty, this block defines a ## callback that will be connected to the signal with this name. -var signal_name: String = "" +@export var signal_name: String + +## Empty except for blocks that have a defined scope +@export var scope: String -func _init(p_name: StringName, p_type: Types.BlockType): +func _init( + p_name: StringName = &"", + p_description: String = "", + p_category: String = "", + p_type: Types.BlockType = Types.BlockType.STATEMENT, + p_variant_type: Variant.Type = TYPE_NIL, + p_display_template: String = "", + p_code_template: String = "", + p_defaults = {}, + p_signal_name: String = "", + p_scope: String = "", +): name = p_name + description = p_description + category = p_category type = p_type + variant_type = p_variant_type + display_template = p_display_template + code_template = p_code_template + defaults = p_defaults + signal_name = p_signal_name + scope = p_scope diff --git a/addons/block_code/code_generation/blocks_catalog.gd b/addons/block_code/code_generation/blocks_catalog.gd index ec961c71..8ceda199 100644 --- a/addons/block_code/code_generation/blocks_catalog.gd +++ b/addons/block_code/code_generation/blocks_catalog.gd @@ -11,15 +11,19 @@ static func setup(): return _catalog = {} - var block_definition: BlockDefinition = BlockDefinition.new(&"ready_block", Types.BlockType.ENTRY) - block_definition.label_template = "On Ready" + var block_definition: BlockDefinition = BlockDefinition.new() + block_definition.name = &"ready_block" + block_definition.type = Types.BlockType.ENTRY + block_definition.display_template = "On Ready" block_definition.code_template = "func _ready():" block_definition.description = 'Attached blocks will be executed once when the node is "ready"' block_definition.category = "Lifecycle" _catalog[&"ready_block"] = block_definition - block_definition = BlockDefinition.new(&"print", Types.BlockType.STATEMENT) - block_definition.label_template = "print {text: STRING}" + block_definition = BlockDefinition.new() + block_definition.name = &"print" + block_definition.type = Types.BlockType.STATEMENT + block_definition.display_template = "print {text: STRING}" block_definition.code_template = "print({text})" block_definition.defaults = {"text": "Hello"} block_definition.description = "Print the text to output" diff --git a/addons/block_code/types/types.gd b/addons/block_code/types/types.gd index fe73e757..aab4bf79 100644 --- a/addons/block_code/types/types.gd +++ b/addons/block_code/types/types.gd @@ -16,6 +16,7 @@ const VARIANT_TYPE_TO_STRING: Dictionary = { TYPE_VECTOR2: "VECTOR2", TYPE_COLOR: "COLOR", TYPE_NODE_PATH: "NODE_PATH", + TYPE_OBJECT: "OBJECT", TYPE_NIL: "NIL", } @@ -27,6 +28,7 @@ const STRING_TO_VARIANT_TYPE: Dictionary = { "VECTOR2": TYPE_VECTOR2, "COLOR": TYPE_COLOR, "NODE_PATH": TYPE_NODE_PATH, + "OBJECT": TYPE_OBJECT, "NIL": TYPE_NIL, } diff --git a/addons/block_code/ui/util.gd b/addons/block_code/ui/util.gd index dddbe87b..5184726b 100644 --- a/addons/block_code/ui/util.gd +++ b/addons/block_code/ui/util.gd @@ -20,7 +20,7 @@ static func instantiate_block(block_name: StringName) -> Block: var scene = SCENE_PER_TYPE[block_definition.type] var b = scene.instantiate() b.block_name = block_definition.name - b.block_format = block_definition.label_template + b.block_format = block_definition.display_template b.statement = block_definition.code_template b.defaults = block_definition.defaults b.tooltip_text = block_definition.description