Files
space-station-14/Content.Server/Movement/Systems/MobCollisionSystem.cs
T
Eveloop 22a547c7c8 Use dependency injection for EntityQuery<T>s in Content.Server (#43566)
* Replace usages of EntityQuery with dependency injected ones in Content.Server

* Remove unused EntityQuery dependencies

* Restore CheckPressureAndFire override method

* Revert EntityQuery refactor changes to DisposalTubeSystem.cs & DisposableSystem.cs

* Infer Transform/Metadata directly instead of passing (#43479)

* Resolve RA0049, RA0051 errors (#43479)

* Resolve RA0049, RA0051 errors (#43479)

* Apply suggestions from code review

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-05-17 15:59:37 +00:00

51 lines
1.5 KiB
C#

using System.Numerics;
using Content.Shared.CCVar;
using Content.Shared.Movement.Components;
using Content.Shared.Movement.Systems;
using Robust.Shared.Player;
namespace Content.Server.Movement.Systems;
public sealed partial class MobCollisionSystem : SharedMobCollisionSystem
{
[Dependency] private EntityQuery<ActorComponent> _actorQuery = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<MobCollisionComponent, MobCollisionMessage>(OnServerMobCollision);
}
private void OnServerMobCollision(Entity<MobCollisionComponent> ent, ref MobCollisionMessage args)
{
MoveMob((ent.Owner, ent.Comp, Transform(ent.Owner)), args.Direction, args.SpeedModifier);
}
public override void Update(float frameTime)
{
if (!CfgManager.GetCVar(CCVars.MovementMobPushing))
return;
var query = EntityQueryEnumerator<MobCollisionComponent>();
while (query.MoveNext(out var uid, out var comp))
{
if (_actorQuery.HasComp(uid) || !PhysicsQuery.TryComp(uid, out var physics))
continue;
HandleCollisions((uid, comp, physics), frameTime);
}
base.Update(frameTime);
}
protected override void RaiseCollisionEvent(EntityUid uid, Vector2 direction, float speedMod)
{
RaiseLocalEvent(uid, new MobCollisionMessage()
{
Direction = direction,
SpeedModifier = speedMod,
});
}
}