extends GPUParticles3D var _reparent_timer: Timer # Called when the node enters the scene tree for the first time. func _ready() -> void: # Create and start timer _reparent_timer = Timer.new() _reparent_timer.wait_time = 1.0 _reparent_timer.timeout.connect(_try_reparent_to_camera) add_child(_reparent_timer) _reparent_timer.start() # Try initial reparent _try_reparent_to_camera() func _try_reparent_to_camera() -> void: var camera = get_viewport().get_camera_3d() if camera and get_parent() != camera: # Reparent to camera get_parent().remove_child(self) camera.add_child(self)