From d4171351f4111fa8a84f129747c48a0c05b997d5 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 8 Aug 2023 12:03:27 +1000 Subject: [PATCH] Metadata + cancollide stuff (#4247) --- .../GameObjects/Systems/MetaDataSystem.cs | 29 ++++++++++--------- .../Physics/Systems/FixtureSystem.cs | 3 -- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Robust.Shared/GameObjects/Systems/MetaDataSystem.cs b/Robust.Shared/GameObjects/Systems/MetaDataSystem.cs index b2dc3cb18..33157edb4 100644 --- a/Robust.Shared/GameObjects/Systems/MetaDataSystem.cs +++ b/Robust.Shared/GameObjects/Systems/MetaDataSystem.cs @@ -12,10 +12,13 @@ public abstract class MetaDataSystem : EntitySystem [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IPrototypeManager _proto = default!; - private EntityPausedEvent _pausedEvent = new(); + private EntityPausedEvent _pausedEvent; + + private EntityQuery _metaQuery; public override void Initialize() { + _metaQuery = GetEntityQuery(); SubscribeLocalEvent(OnMetaDataHandle); SubscribeLocalEvent(OnMetaDataGetState); } @@ -41,25 +44,25 @@ public abstract class MetaDataSystem : EntitySystem public void SetEntityName(EntityUid uid, string value, MetaDataComponent? metadata = null) { - if (!Resolve(uid, ref metadata) || value.Equals(metadata.EntityName)) + if (!_metaQuery.Resolve(uid, ref metadata) || value.Equals(metadata.EntityName)) return; metadata._entityName = value; - Dirty(metadata); + Dirty(uid, metadata); } public void SetEntityDescription(EntityUid uid, string value, MetaDataComponent? metadata = null) { - if (!Resolve(uid, ref metadata) || value.Equals(metadata.EntityDescription)) + if (!_metaQuery.Resolve(uid, ref metadata) || value.Equals(metadata.EntityDescription)) return; metadata._entityDescription = value; - Dirty(metadata); + Dirty(uid, metadata); } internal void SetEntityPrototype(EntityUid uid, EntityPrototype? value, MetaDataComponent? metadata = null) { - if (!Resolve(uid, ref metadata) || value?.Equals(metadata._entityPrototype) == true) + if (!_metaQuery.Resolve(uid, ref metadata) || value?.Equals(metadata._entityPrototype) == true) return; // The ID string should never change after an entity has been created. @@ -71,7 +74,7 @@ public abstract class MetaDataSystem : EntitySystem public bool EntityPaused(EntityUid uid, MetaDataComponent? metadata = null) { - if (!Resolve(uid, ref metadata)) + if (!_metaQuery.Resolve(uid, ref metadata)) return true; return metadata.EntityPaused; @@ -79,7 +82,7 @@ public abstract class MetaDataSystem : EntitySystem public void SetEntityPaused(EntityUid uid, bool value, MetaDataComponent? metadata = null) { - if (!Resolve(uid, ref metadata)) return; + if (!_metaQuery.Resolve(uid, ref metadata)) return; if (metadata.EntityPaused == value) return; @@ -97,7 +100,7 @@ public abstract class MetaDataSystem : EntitySystem RaiseLocalEvent(uid, ref ev); } - Dirty(metadata); + Dirty(uid, metadata); } /// @@ -105,7 +108,7 @@ public abstract class MetaDataSystem : EntitySystem /// public TimeSpan GetPauseTime(EntityUid uid, MetaDataComponent? metadata = null) { - if (!Resolve(uid, ref metadata)) + if (!_metaQuery.Resolve(uid, ref metadata)) return TimeSpan.Zero; return (_timing.CurTime - metadata.PauseTime) ?? TimeSpan.Zero; @@ -122,7 +125,7 @@ public abstract class MetaDataSystem : EntitySystem public void AddFlag(EntityUid uid, MetaDataFlags flags, MetaDataComponent? component = null) { - if (!Resolve(uid, ref component)) return; + if (!_metaQuery.Resolve(uid, ref component)) return; component.Flags |= flags; } @@ -133,7 +136,7 @@ public abstract class MetaDataSystem : EntitySystem /// public void RemoveFlag(EntityUid uid, MetaDataFlags flags, MetaDataComponent? component = null) { - if (!Resolve(uid, ref component)) + if (!_metaQuery.Resolve(uid, ref component)) return; var toRemove = component.Flags & flags; @@ -141,7 +144,7 @@ public abstract class MetaDataSystem : EntitySystem return; var ev = new MetaFlagRemoveAttemptEvent(toRemove); - EntityManager.EventBus.RaiseLocalEvent(uid, ref ev, true); + RaiseLocalEvent(uid, ref ev, true); component.Flags &= ~ev.ToRemove; } diff --git a/Robust.Shared/Physics/Systems/FixtureSystem.cs b/Robust.Shared/Physics/Systems/FixtureSystem.cs index 5da3a1492..faba7d3c4 100644 --- a/Robust.Shared/Physics/Systems/FixtureSystem.cs +++ b/Robust.Shared/Physics/Systems/FixtureSystem.cs @@ -45,9 +45,6 @@ namespace Robust.Shared.Physics.Systems // Can't just get physicscomp on shutdown as it may be touched completely independently. _physics.DestroyContacts(body); - - // TODO im 99% sure _broadphaseSystem.RemoveBody(body, component) gets triggered by this as well, so is this even needed? - _physics.SetCanCollide(uid, false, false, manager: component, body: body); } #region Public