using Godot; public partial class PickupMarker : Area2D { public string PickupId { get; set; } = ""; public string ItemId { get; set; } = ""; public override void _Ready() { BodyEntered += OnBodyEntered; } private void OnBodyEntered(Node2D body) { if (body is not CharacterBody2D) return; // Defer to avoid freeing during signal processing edge cases EmitSignal(SignalName.PickedUp, PickupId, ItemId); } [Signal] public delegate void PickedUpEventHandler(string pickupId, string itemId); }