godot-plateformer/addons/reedcomponent/SingleComponentRemotor.gd

43 lines
1.0 KiB
GDScript3
Raw Normal View History

2025-12-29 11:54:31 +08:00
@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