using Robust.Shared.IoC; using Robust.Shared.Utility; namespace Robust.Shared.GameObjects { /// /// Raised directed on an entity when the map is initialized. /// public sealed class MapInitEvent : EntityEventArgs { } public static class MapInitExt { private static readonly MapInitEvent MapInit = new MapInitEvent(); public static void RunMapInit(this EntityUid entity, IEntityManager? entMan = null) { // Temporary until a bit more ECS IoCManager.Resolve(ref entMan); var meta = entMan.GetComponent(entity); if (meta.EntityLifeStage == EntityLifeStage.MapInitialized) return; // Already map initialized, do nothing. DebugTools.Assert(meta.EntityLifeStage == EntityLifeStage.Initialized, $"Expected entity {entMan.ToPrettyString(entity)} to be initialized, was {meta.EntityLifeStage}"); meta.EntityLifeStage = EntityLifeStage.MapInitialized; entMan.EventBus.RaiseLocalEvent(entity, MapInit, false); } } }