Metadata + cancollide stuff (#4247)

This commit is contained in:
metalgearsloth
2023-08-08 12:03:27 +10:00
committed by GitHub
parent e67d0ad3d6
commit d4171351f4
2 changed files with 16 additions and 16 deletions

View File

@@ -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<MetaDataComponent> _metaQuery;
public override void Initialize()
{
_metaQuery = GetEntityQuery<MetaDataComponent>();
SubscribeLocalEvent<MetaDataComponent, ComponentHandleState>(OnMetaDataHandle);
SubscribeLocalEvent<MetaDataComponent, ComponentGetState>(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);
}
/// <summary>
@@ -105,7 +108,7 @@ public abstract class MetaDataSystem : EntitySystem
/// </summary>
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
/// </summary>
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;
}

View File

@@ -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