1
0

MobMoverComponent.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using Robust.Shared.GameStates;
  2. using Robust.Shared.Map;
  3. namespace Content.Shared.Movement.Components
  4. {
  5. /// <summary>
  6. /// Has additional movement data such as footsteps and weightless grab range for an entity.
  7. /// </summary>
  8. [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
  9. public sealed partial class MobMoverComponent : Component
  10. {
  11. private float _stepSoundDistance;
  12. [DataField] public float GrabRange = 1.0f;
  13. [DataField] public float PushStrength = 600f;
  14. [DataField, AutoNetworkedField]
  15. public float StepSoundMoveDistanceRunning = 2;
  16. [DataField, AutoNetworkedField]
  17. public float StepSoundMoveDistanceWalking = 1.5f;
  18. [DataField, AutoNetworkedField]
  19. public float FootstepVariation;
  20. [ViewVariables(VVAccess.ReadWrite)]
  21. public EntityCoordinates LastPosition { get; set; }
  22. /// <summary>
  23. /// Used to keep track of how far we have moved before playing a step sound
  24. /// </summary>
  25. [ViewVariables(VVAccess.ReadWrite)]
  26. public float StepSoundDistance
  27. {
  28. get => _stepSoundDistance;
  29. set
  30. {
  31. if (MathHelper.CloseToPercent(_stepSoundDistance, value)) return;
  32. _stepSoundDistance = value;
  33. }
  34. }
  35. [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  36. public float GrabRangeVV
  37. {
  38. get => GrabRange;
  39. set
  40. {
  41. if (MathHelper.CloseToPercent(GrabRange, value)) return;
  42. GrabRange = value;
  43. Dirty();
  44. }
  45. }
  46. [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
  47. public float PushStrengthVV
  48. {
  49. get => PushStrength;
  50. set
  51. {
  52. if (MathHelper.CloseToPercent(PushStrength, value)) return;
  53. PushStrength = value;
  54. Dirty();
  55. }
  56. }
  57. }
  58. }