Files
wwdpublic/Content.Shared/Footprint/FootPrintsComponent.cs
VMSolidus 8d59c57099 Footprints Performance Updates (#1439)
# Description

This is a port of https://github.com/Fansana/floofstation1/pull/445
Except I despise that this wasn't upstreamed so much that I didn't even
cherrypick it.

# Changelog

🆑
- add: Footprints are now cleaned in a small radius around the mouse
cursor when mopping them.

(cherry picked from commit 11678af96950f6af75f7effef40fc92a7af33350)
2025-01-14 01:31:23 +03:00

78 lines
2.0 KiB
C#

using System.Numerics;
using Content.Shared.Chemistry.Components;
using Content.Shared.FixedPoint;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
namespace Content.Shared.FootPrint;
[RegisterComponent]
public sealed partial class FootPrintsComponent : Component
{
[DataField]
public ResPath RsiPath = new("/Textures/Effects/footprints.rsi");
[DataField]
public string
LeftBarePrint = "footprint-left-bare-human",
RightBarePrint = "footprint-right-bare-human",
ShoesPrint = "footprint-shoes",
SuitPrint = "footprint-suit";
[DataField]
public string[] DraggingPrint =
[
"dragging-1",
"dragging-2",
"dragging-3",
"dragging-4",
"dragging-5",
];
[DataField]
public EntProtoId<FootPrintComponent> StepProtoId = "Footstep";
/// <summary>
/// The size scaling factor for footprint steps. Must be positive.
/// </summary>
[DataField]
public float StepSize = 0.7f;
/// <summary>
/// The size scaling factor for drag marks. Must be positive.
/// </summary>
[DataField]
public float DragSize = 0.5f;
/// <summary>
/// Horizontal offset of the created footprints relative to the center.
/// </summary>
[DataField]
public Vector2 OffsetPrint = new(0.1f, 0f);
/// <summary>
/// Tracks which foot should make the next print. True for right foot, false for left.
/// </summary>
public bool RightStep = true;
/// <summary>
/// The position of the last footprint in world coordinates.
/// </summary>
public Vector2 LastStepPos = Vector2.Zero;
[DataField]
public HashSet<string> DNAs = new();
/// <summary>
/// Reagent volume used for footprints.
/// </summary>
[DataField]
public Solution ContainedSolution = new(3) { CanReact = true, MaxVolume = 5f, };
/// <summary>
/// Amount of reagents used per footprint.
/// </summary>
[DataField]
public FixedPoint2 FootprintVolume = 1f;
}