@tool class_name PickupItem extends Node3D signal item_picked_up(node_path:NodePath) @onready var world_item_node = %WorldItemNode @export var item:ItemResource: get: return item set(value): if value != item: item = value if world_item_node == null: return for child in world_item_node.get_children(): child.get_parent().remove_child(child) child.queue_free() world_item_node.add_child(item.scene.instantiate()) func _ready(): if item == null: push_error ("Error: invalid PickupItem at %s" % str(global_position)) return var item_scene = item.scene.instantiate() world_item_node.add_child(item_scene) func _on_area_3d_body_entered(body): if body.has_method("on_item_picked_up"): body.on_item_picked_up(item) item_picked_up.emit(get_path()) queue_free()