using Content.Shared.Atmos; using Content.Shared.Camera; using Content.Shared.Hands.Components; using Content.Shared.Movement.Systems; namespace Content.Shared.Hands.EntitySystems; public abstract partial class SharedHandsSystem { private void InitializeRelay() { SubscribeLocalEvent(RelayEvent); SubscribeLocalEvent(RelayEvent); SubscribeLocalEvent(RelayEvent); // By-ref events. SubscribeLocalEvent(RefRelayEvent); } private void RelayEvent(Entity entity, ref T args) where T : EntityEventArgs { CoreRelayEvent(entity, ref args); } private void RefRelayEvent(Entity entity, ref T args) { var ev = CoreRelayEvent(entity, ref args); args = ev.Args; } private HeldRelayedEvent CoreRelayEvent(Entity entity, ref T args) { var ev = new HeldRelayedEvent(args); foreach (var held in EnumerateHeld(entity, entity.Comp)) { RaiseLocalEvent(held, ref ev); } return ev; } }