Decal.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System.Numerics;
  2. using Robust.Shared.Serialization;
  3. namespace Content.Shared.Decals
  4. {
  5. [Serializable, NetSerializable]
  6. [DataDefinition]
  7. public sealed partial class Decal
  8. {
  9. // if these are made not-readonly, then decal grid state handling needs to be updated to clone decals.
  10. [DataField("coordinates")] public Vector2 Coordinates = Vector2.Zero;
  11. [DataField("id")] public string Id = string.Empty;
  12. [DataField("color")] public Color? Color;
  13. [DataField("angle")] public Angle Angle = Angle.Zero;
  14. [DataField("zIndex")] public int ZIndex;
  15. [DataField("cleanable")] public bool Cleanable;
  16. public Decal() {}
  17. public Decal(Vector2 coordinates, string id, Color? color, Angle angle, int zIndex, bool cleanable)
  18. {
  19. Coordinates = coordinates;
  20. Id = id;
  21. Color = color;
  22. Angle = angle;
  23. ZIndex = zIndex;
  24. Cleanable = cleanable;
  25. }
  26. public Decal WithCoordinates(Vector2 coordinates) => new(coordinates, Id, Color, Angle, ZIndex, Cleanable);
  27. public Decal WithId(string id) => new(Coordinates, id, Color, Angle, ZIndex, Cleanable);
  28. public Decal WithColor(Color? color) => new(Coordinates, Id, color, Angle, ZIndex, Cleanable);
  29. public Decal WithRotation(Angle angle) => new(Coordinates, Id, Color, angle, ZIndex, Cleanable);
  30. public Decal WithZIndex(int zIndex) => new(Coordinates, Id, Color, Angle, zIndex, Cleanable);
  31. public Decal WithCleanable(bool cleanable) => new(Coordinates, Id, Color, Angle, ZIndex, cleanable);
  32. }
  33. }