ChunkSize is still 32 so doesn't cut down on heaps of decals atm though we avoid passing many decals to drawing with the coordinates bounds check now.
38 lines
1.6 KiB
C#
38 lines
1.6 KiB
C#
using System.Numerics;
|
|
using Robust.Shared.Serialization;
|
|
|
|
namespace Content.Shared.Decals
|
|
{
|
|
[Serializable, NetSerializable]
|
|
[DataDefinition]
|
|
public sealed partial class Decal
|
|
{
|
|
// if these are made not-readonly, then decal grid state handling needs to be updated to clone decals.
|
|
[DataField("coordinates")] public Vector2 Coordinates = Vector2.Zero;
|
|
[DataField("id")] public string Id = string.Empty;
|
|
[DataField("color")] public Color? Color;
|
|
[DataField("angle")] public Angle Angle = Angle.Zero;
|
|
[DataField("zIndex")] public int ZIndex;
|
|
[DataField("cleanable")] public bool Cleanable;
|
|
|
|
public Decal() {}
|
|
|
|
public Decal(Vector2 coordinates, string id, Color? color, Angle angle, int zIndex, bool cleanable)
|
|
{
|
|
Coordinates = coordinates;
|
|
Id = id;
|
|
Color = color;
|
|
Angle = angle;
|
|
ZIndex = zIndex;
|
|
Cleanable = cleanable;
|
|
}
|
|
|
|
public Decal WithCoordinates(Vector2 coordinates) => new(coordinates, Id, Color, Angle, ZIndex, Cleanable);
|
|
public Decal WithId(string id) => new(Coordinates, id, Color, Angle, ZIndex, Cleanable);
|
|
public Decal WithColor(Color? color) => new(Coordinates, Id, color, Angle, ZIndex, Cleanable);
|
|
public Decal WithRotation(Angle angle) => new(Coordinates, Id, Color, angle, ZIndex, Cleanable);
|
|
public Decal WithZIndex(int zIndex) => new(Coordinates, Id, Color, Angle, zIndex, Cleanable);
|
|
public Decal WithCleanable(bool cleanable) => new(Coordinates, Id, Color, Angle, ZIndex, cleanable);
|
|
}
|
|
}
|