using System; using JetBrains.Annotations; using Robust.Shared.Utility; using YamlDotNet.RepresentationModel; namespace Robust.Shared.Graphics; /// /// Flags for loading of textures. /// [PublicAPI] public struct TextureLoadParameters : IEquatable { /// /// The default sampling parameters for the texture. /// public TextureSampleParameters SampleParameters { get; set; } /// /// If true, the image data will be treated as sRGB. /// public bool Srgb { get; set; } /// /// If false, this texture should not be preloaded on game startup. /// public bool Preload { get; set; } public static TextureLoadParameters FromYaml(YamlMappingNode yaml) { var loadParams = Default; if (yaml.TryGetNode("sample", out YamlMappingNode? sampleNode)) { loadParams.SampleParameters = TextureSampleParameters.FromYaml(sampleNode); } if (yaml.TryGetNode("srgb", out var srgb)) { loadParams.Srgb = srgb.AsBool(); } if (yaml.TryGetNode("preload", out var preload)) { loadParams.Preload = preload.AsBool(); } return loadParams; } public static readonly TextureLoadParameters Default = new() { SampleParameters = TextureSampleParameters.Default, Srgb = true, Preload = true }; public bool Equals(TextureLoadParameters other) { return SampleParameters.Equals(other.SampleParameters) && Srgb == other.Srgb && Preload == other.Preload; } public override bool Equals(object? obj) { return obj is TextureLoadParameters other && Equals(other); } public override int GetHashCode() { return HashCode.Combine(SampleParameters, Srgb); } public static bool operator ==(TextureLoadParameters left, TextureLoadParameters right) { return left.Equals(right); } public static bool operator !=(TextureLoadParameters left, TextureLoadParameters right) { return !left.Equals(right); } }