43 lines
1.0 KiB
GDScript3
43 lines
1.0 KiB
GDScript3
|
|
@tool
|
||
|
|
extends RemoteTransform2D
|
||
|
|
class_name SingleComponentRemotor
|
||
|
|
|
||
|
|
@export var observed_remote_path: NodePath:
|
||
|
|
set(value):
|
||
|
|
remote_path = value
|
||
|
|
_update_remotor_name()
|
||
|
|
get:
|
||
|
|
return remote_path
|
||
|
|
|
||
|
|
var _observed_node: Node = null
|
||
|
|
|
||
|
|
func _ready():
|
||
|
|
_update_remotor_name()
|
||
|
|
|
||
|
|
func _update_remotor_name():
|
||
|
|
if not Engine.is_editor_hint():
|
||
|
|
return
|
||
|
|
|
||
|
|
# 清理旧连接
|
||
|
|
if is_instance_valid(_observed_node):
|
||
|
|
_observed_node.disconnect("renamed", Callable(self, "_on_observed_node_renamed"))
|
||
|
|
|
||
|
|
if remote_path.is_empty():
|
||
|
|
name = "Remotor[NONE]"
|
||
|
|
_observed_node = null
|
||
|
|
return
|
||
|
|
|
||
|
|
var remote_node := get_node_or_null(remote_path)
|
||
|
|
if remote_node:
|
||
|
|
name = "Remotor[%s]" % remote_node.name
|
||
|
|
_observed_node = remote_node
|
||
|
|
if not _observed_node.is_connected("renamed", Callable(self, "_on_observed_node_renamed")):
|
||
|
|
_observed_node.connect("renamed", Callable(self, "_on_observed_node_renamed"))
|
||
|
|
else:
|
||
|
|
name = "Remotor[INVALID]"
|
||
|
|
_observed_node = null
|
||
|
|
|
||
|
|
func _on_observed_node_renamed():
|
||
|
|
if _observed_node:
|
||
|
|
name = "Remotor[%s]" % _observed_node.name
|