mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-14 19:29:36 +01:00
Metadata + cancollide stuff (#4247)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user