mirror of
https://codeberg.org/StreamGraph/StreamGraph.git
synced 2024-11-13 19:49:55 +01:00
add send id system (#75)
addresses https://codeberg.org/StreamGraph/StreamGraph/issues/59#issuecomment-1572604 Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/75 Co-authored-by: Lera Elvoé <yagich@poto.cafe> Co-committed-by: Lera Elvoé <yagich@poto.cafe>
This commit is contained in:
parent
c7e003ffe6
commit
f57374f3e2
19 changed files with 34 additions and 24 deletions
|
@ -20,6 +20,8 @@ var incoming_connections: Dictionary
|
|||
## A list of [Port]s on this node.
|
||||
var ports: Array[Port]
|
||||
|
||||
var _last_send_id: String
|
||||
|
||||
## The deck this node belongs to.
|
||||
var _belonging_to: Deck
|
||||
## A unique identifier for this node.
|
||||
|
@ -127,18 +129,26 @@ func remove_port(port_idx: int) -> void:
|
|||
|
||||
|
||||
## Send data to all outgoing connections on port [param from_output_port].
|
||||
func send(from_output_port: int, data: Variant, extra_data: Array = []) -> void:
|
||||
func send(from_output_port: int, data: Variant, send_id: String = UUID.v4()) -> void:
|
||||
if outgoing_connections.get(from_output_port) == null:
|
||||
return
|
||||
|
||||
for node: String in outgoing_connections[from_output_port]:
|
||||
for input_port: int in outgoing_connections[from_output_port][node]:
|
||||
get_node(node)._receive(input_port, data, extra_data)
|
||||
get_node(node).handle_receive(input_port, data, send_id)
|
||||
|
||||
|
||||
func handle_receive(to_input_port: int, data: Variant, send_id: String) -> void:
|
||||
if send_id == _last_send_id:
|
||||
return
|
||||
|
||||
_last_send_id = send_id
|
||||
_receive(to_input_port, data)
|
||||
|
||||
|
||||
## Virtual function that's called when this node receives data from another node's [method send] call.
|
||||
@warning_ignore("unused_parameter")
|
||||
func _receive(to_input_port: int, data: Variant, extra_data: Array = []) -> void:
|
||||
func _receive(to_input_port: int, data: Variant) -> void:
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ func _init():
|
|||
|
||||
|
||||
|
||||
func _receive(_to_input_port : int, data: Variant, _extra_data: Array = []) -> void:
|
||||
func _receive(_to_input_port : int, data: Variant) -> void:
|
||||
|
||||
thread = Thread.new()
|
||||
thread.start(handle_delay.bind(data))
|
||||
|
|
|
@ -25,9 +25,9 @@ func _init() -> void:
|
|||
)
|
||||
|
||||
|
||||
func _receive(to_input_port: int, data: Variant, extra_data: Array = []) -> void:
|
||||
func _receive(to_input_port: int, data: Variant) -> void:
|
||||
if to_input_port != 1:
|
||||
return
|
||||
|
||||
if await resolve_input_port_value_async(0):
|
||||
send(0, data, extra_data)
|
||||
send(0, data)
|
||||
|
|
|
@ -34,7 +34,7 @@ func _value_request(_on_port: int) -> Variant:
|
|||
return a == b
|
||||
|
||||
|
||||
func _receive(on_port: int, data: Variant, _extra_data: Array = []) -> void:
|
||||
func _receive(on_port: int, data: Variant) -> void:
|
||||
if on_port == 0:
|
||||
var b = await resolve_input_port_value_async(1)
|
||||
if data == b:
|
||||
|
|
|
@ -32,7 +32,7 @@ func _init() -> void:
|
|||
)
|
||||
|
||||
|
||||
func _receive(to_input_port: int, data: Variant, extra_data: Array = []) -> void:
|
||||
func _receive(to_input_port: int, data: Variant) -> void:
|
||||
if to_input_port != 1:
|
||||
return
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ func _init() -> void:
|
|||
)
|
||||
|
||||
|
||||
func _receive(to_input_port: int, _data: Variant, _extra_data: Array = []) -> void:
|
||||
func _receive(to_input_port: int, _data: Variant) -> void:
|
||||
if to_input_port != 2:
|
||||
return
|
||||
|
||||
|
|
|
@ -73,8 +73,8 @@ func recalculate_ports() -> void:
|
|||
extra_ports.append(port.port_type)
|
||||
|
||||
|
||||
func _receive(to_input_port: int, data: Variant, extra_data: Array = []):
|
||||
input_node.send(get_input_ports()[to_input_port].index_of_type, data, extra_data)
|
||||
func _receive(to_input_port: int, data: Variant):
|
||||
input_node.send(get_input_ports()[to_input_port].index_of_type, data)
|
||||
|
||||
|
||||
func _value_request(from_port: int) -> Variant:
|
||||
|
|
|
@ -74,5 +74,5 @@ func _post_load() -> void:
|
|||
)
|
||||
|
||||
|
||||
func _receive(to_input_port: int, data: Variant, extra_data: Array = []) -> void:
|
||||
group_node.send(group_node.get_output_ports()[to_input_port].index_of_type, data, extra_data)
|
||||
func _receive(to_input_port: int, data: Variant) -> void:
|
||||
group_node.send(group_node.get_output_ports()[to_input_port].index_of_type, data)
|
||||
|
|
|
@ -26,7 +26,7 @@ func _init() -> void:
|
|||
)
|
||||
|
||||
|
||||
func _receive(on_virtual_port: int, _data: Variant, _extra_data: Array = []) -> void:
|
||||
func _receive(on_virtual_port: int, _data: Variant) -> void:
|
||||
if on_virtual_port != 0:
|
||||
return
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ func _init() -> void:
|
|||
)
|
||||
|
||||
|
||||
func _receive(to_input_port: int, _data: Variant, _extra_data: Array = []) -> void:
|
||||
func _receive(to_input_port: int, _data: Variant) -> void:
|
||||
#{ "scene_item_transform": { "alignment": 5, "bounds_alignment": 0, "bounds_height": 0, "bounds_type": "OBS_BOUNDS_NONE", "bounds_width": 0, "crop_bottom": 0, "crop_left": 0, "crop_right": 0, "crop_top": 0, "height": 257, "position_x": 1800, "position_y": 414, "rotation": 0, "scale_x": 1, "scale_y": 1, "source_height": 257, "source_width": 146, "width": 146 }}
|
||||
if to_input_port != 3:
|
||||
return
|
||||
|
|
|
@ -25,7 +25,7 @@ func _init() -> void:
|
|||
)
|
||||
|
||||
|
||||
func _receive(on_input_port: int, _data: Variant, _extra_data: Array = []) -> void:
|
||||
func _receive(on_input_port: int, _data: Variant) -> void:
|
||||
if on_input_port != 1:
|
||||
return
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ func _init() -> void:
|
|||
)
|
||||
|
||||
|
||||
func _receive(on_virtual_port: int, _data: Variant, _extra_data: Array = []) -> void:
|
||||
func _receive(on_virtual_port: int, _data: Variant) -> void:
|
||||
if on_virtual_port != 2:
|
||||
return
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ func _init() -> void:
|
|||
add_input_port(DeckType.Types.BOOL, "Send", "button")
|
||||
|
||||
|
||||
func _receive(to_input_port: int, data: Variant, _extra_data: Array = []) -> void:
|
||||
func _receive(to_input_port: int, data: Variant) -> void:
|
||||
if to_input_port == 6:
|
||||
send(0, false)
|
||||
send(1, 1.0)
|
||||
|
|
|
@ -23,7 +23,7 @@ func _init():
|
|||
|
||||
|
||||
|
||||
func _receive(to_input_port, _data: Variant, _extra_data: Array = []):
|
||||
func _receive(to_input_port, _data: Variant):
|
||||
|
||||
if to_input_port != 2:
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ func _init():
|
|||
|
||||
|
||||
|
||||
func _receive(to_input_port, _data: Variant, _extra_data: Array = []):
|
||||
func _receive(to_input_port, _data: Variant):
|
||||
|
||||
if to_input_port != 1:
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ func _init():
|
|||
|
||||
|
||||
|
||||
func _receive(to_input_port, _data: Variant, _extra_data: Array = []):
|
||||
func _receive(to_input_port, _data: Variant):
|
||||
|
||||
if to_input_port != 1:
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ func _init():
|
|||
|
||||
|
||||
|
||||
func _receive(to_input_port, _data: Variant, _extra_data: Array = []):
|
||||
func _receive(to_input_port, _data: Variant):
|
||||
|
||||
if to_input_port != 1:
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ func _init():
|
|||
|
||||
|
||||
|
||||
func _receive(to_input_port, _data: Variant, _extra_data: Array = []):
|
||||
func _receive(to_input_port, _data: Variant):
|
||||
|
||||
if to_input_port != 2:
|
||||
|
||||
|
|
|
@ -13,5 +13,5 @@ func _init() -> void:
|
|||
|
||||
|
||||
|
||||
func _receive(to_input_port: int, data: Variant, extra_data: Array = []) -> void:
|
||||
func _receive(to_input_port: int, data: Variant) -> void:
|
||||
pass
|
||||
|
|
Loading…
Reference in a new issue