StressTestMovementSystem.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.Numerics;
  2. using Content.Server.Movement.Components;
  3. namespace Content.Server.Movement;
  4. public sealed class StressTestMovementSystem : EntitySystem
  5. {
  6. [Dependency] private readonly SharedTransformSystem _transform = default!;
  7. public override void Initialize()
  8. {
  9. base.Initialize();
  10. SubscribeLocalEvent<StressTestMovementComponent, ComponentStartup>(OnStressStartup);
  11. }
  12. private void OnStressStartup(EntityUid uid, StressTestMovementComponent component, ComponentStartup args)
  13. {
  14. component.Origin = _transform.GetWorldPosition(uid);
  15. }
  16. public override void Update(float frameTime)
  17. {
  18. base.Update(frameTime);
  19. var query = EntityQueryEnumerator<StressTestMovementComponent, TransformComponent>();
  20. while (query.MoveNext(out var uid, out var stressTest, out var transform))
  21. {
  22. if (!transform.ParentUid.IsValid())
  23. continue;
  24. stressTest.Progress += frameTime;
  25. if (stressTest.Progress > 1)
  26. {
  27. stressTest.Progress -= 1;
  28. }
  29. var x = MathF.Sin(stressTest.Progress * MathHelper.TwoPi);
  30. var y = MathF.Cos(stressTest.Progress * MathHelper.TwoPi);
  31. _transform.SetWorldPosition((uid, transform), stressTest.Origin + new Vector2(x, y) * 5);
  32. }
  33. }
  34. }