// TODO: Please don't copy-paste this I beg
// make a generic particle emitter system / actual particles instead.
- var query = EntityQueryEnumerator<ActiveJetpackComponent>();
+ var query = EntityQueryEnumerator<ActiveJetpackComponent, TransformComponent>();
- while (query.MoveNext(out var uid, out var comp))
+ while (query.MoveNext(out var uid, out var comp, out var xform))
{
- if (_timing.CurTime < comp.TargetTime)
- continue;
+ if (_transform.InRange(xform.Coordinates, comp.LastCoordinates, comp.MaxDistance))
+ {
+ if (_timing.CurTime < comp.TargetTime)
+ continue;
+ }
+ comp.LastCoordinates = _transform.GetMoverCoordinates(xform.Coordinates);
comp.TargetTime = _timing.CurTime + TimeSpan.FromSeconds(comp.EffectCooldown);
CreateParticles(uid);
using Robust.Shared.GameStates;
+using Robust.Shared.Map;
namespace Content.Shared.Movement.Components;
public sealed partial class ActiveJetpackComponent : Component
{
public float EffectCooldown = 0.3f;
+
+ public float MaxDistance = 0.7f;
+
+ public EntityCoordinates LastCoordinates;
+
public TimeSpan TargetTime = TimeSpan.Zero;
}