mirror of
https://codeberg.org/StreamGraph/StreamGraph.git
synced 2024-11-13 19:49:55 +01:00
disallow grouping and removing group i/o nodes
This commit is contained in:
parent
16c6cfb4f9
commit
73422418ba
4 changed files with 17 additions and 2 deletions
|
@ -143,11 +143,14 @@ func is_empty() -> bool:
|
||||||
|
|
||||||
|
|
||||||
## Remove a node from this deck.
|
## Remove a node from this deck.
|
||||||
func remove_node(uuid: String, remove_connections: bool = false, keep_group_instances: bool = false) -> void:
|
func remove_node(uuid: String, remove_connections: bool = false, force: bool = false, keep_group_instances: bool = false) -> void:
|
||||||
var node := get_node(uuid)
|
var node := get_node(uuid)
|
||||||
if node == null:
|
if node == null:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if !node.user_can_delete && !force:
|
||||||
|
return
|
||||||
|
|
||||||
if node.node_type == "group_node" && !keep_group_instances:
|
if node.node_type == "group_node" && !keep_group_instances:
|
||||||
DeckHolder.close_group_instance(node.group_id, node.group_instance_id)
|
DeckHolder.close_group_instance(node.group_id, node.group_instance_id)
|
||||||
|
|
||||||
|
@ -179,7 +182,13 @@ func remove_node(uuid: String, remove_connections: bool = false, keep_group_inst
|
||||||
func group_nodes(nodes_to_group: Array) -> Deck:
|
func group_nodes(nodes_to_group: Array) -> Deck:
|
||||||
if nodes_to_group.is_empty():
|
if nodes_to_group.is_empty():
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
# don't include nodes that can't be grouped/deleted
|
||||||
|
nodes_to_group = nodes_to_group.filter(
|
||||||
|
func(x: DeckNode):
|
||||||
|
return x.user_can_delete
|
||||||
|
)
|
||||||
|
|
||||||
var node_ids_to_keep := nodes_to_group.map(
|
var node_ids_to_keep := nodes_to_group.map(
|
||||||
func(x: DeckNode):
|
func(x: DeckNode):
|
||||||
return x._id
|
return x._id
|
||||||
|
|
|
@ -41,6 +41,10 @@ var props_to_serialize: Array[StringName]
|
||||||
## Only used by renderers.
|
## Only used by renderers.
|
||||||
var position: Dictionary = {"x": 0.0, "y": 0.0}
|
var position: Dictionary = {"x": 0.0, "y": 0.0}
|
||||||
|
|
||||||
|
## If [code]true[/code], the user can delete this node by normal means.
|
||||||
|
## The parent [Deck] can still delete the node by other means.
|
||||||
|
var user_can_delete: bool = true
|
||||||
|
|
||||||
enum PortType{
|
enum PortType{
|
||||||
INPUT, ## Input port type (slot on the left).
|
INPUT, ## Input port type (slot on the left).
|
||||||
OUTPUT, ## Output port type (slot on the right).
|
OUTPUT, ## Output port type (slot on the right).
|
||||||
|
|
|
@ -12,6 +12,7 @@ func _init() -> void:
|
||||||
node_type = "group_input"
|
node_type = "group_input"
|
||||||
props_to_serialize = [&"output_count"]
|
props_to_serialize = [&"output_count"]
|
||||||
appears_in_search = false
|
appears_in_search = false
|
||||||
|
user_can_delete = false
|
||||||
|
|
||||||
add_output_port(
|
add_output_port(
|
||||||
DeckType.Types.ANY,
|
DeckType.Types.ANY,
|
||||||
|
|
|
@ -12,6 +12,7 @@ func _init() -> void:
|
||||||
node_type = "group_output"
|
node_type = "group_output"
|
||||||
props_to_serialize = [&"input_count"]
|
props_to_serialize = [&"input_count"]
|
||||||
appears_in_search = false
|
appears_in_search = false
|
||||||
|
user_can_delete = false
|
||||||
|
|
||||||
add_input_port(
|
add_input_port(
|
||||||
DeckType.Types.ANY,
|
DeckType.Types.ANY,
|
||||||
|
|
Loading…
Reference in a new issue