#nullable enable using System.Collections.Generic; using Robust.Shared.GameObjects; using Robust.Shared.Serialization.Manager.Attributes; namespace Content.Client.GameObjects.Components { /// /// Spawns a set of entities on the client only, and removes them when this component is removed. /// [RegisterComponent] public class ClientEntitySpawnerComponent : Component { public override string Name => "ClientEntitySpawner"; [DataField("prototypes")] private List _prototypes = new() { "HVDummyWire" }; private readonly List _entity = new(); public override void Initialize() { base.Initialize(); SpawnEntities(); } public override void OnRemove() { RemoveEntities(); base.OnRemove(); } private void SpawnEntities() { foreach (var proto in _prototypes) { var entity = Owner.EntityManager.SpawnEntity(proto, Owner.Transform.Coordinates); _entity.Add(entity); } } private void RemoveEntities() { foreach (var entity in _entity) { Owner.EntityManager.DeleteEntity(entity); } } } }