2023-03-26 11:19:03 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
|
|
|
|
|
namespace DCFApixels.DragonECS
|
|
|
|
|
{
|
|
|
|
|
[AttributeUsage(AttributeTargets.Struct | AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
|
|
|
|
|
public sealed class DebugColorAttribute : Attribute
|
|
|
|
|
{
|
|
|
|
|
private ColorRecord color;
|
|
|
|
|
public byte r => color.r;
|
|
|
|
|
public byte g => color.g;
|
|
|
|
|
public byte b => color.b;
|
|
|
|
|
|
2023-03-27 20:31:45 +08:00
|
|
|
|
public float rn => color.r / 255f;
|
|
|
|
|
public float gn => color.g / 255f;
|
|
|
|
|
public float bn => color.b / 255f;
|
|
|
|
|
|
2023-03-26 11:19:03 +08:00
|
|
|
|
public DebugColorAttribute(byte r, byte g, byte b)
|
|
|
|
|
{
|
|
|
|
|
color = new ColorRecord(r, g, b);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public DebugColorAttribute(DebugColor color)
|
|
|
|
|
{
|
|
|
|
|
this.color = new ColorRecord((int)color);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[StructLayout(LayoutKind.Explicit, Pack = 1, Size = 4)]
|
|
|
|
|
private readonly struct ColorRecord
|
|
|
|
|
{
|
|
|
|
|
[FieldOffset(0)]
|
|
|
|
|
public readonly int full;
|
|
|
|
|
[FieldOffset(3)]
|
|
|
|
|
public readonly byte r;
|
|
|
|
|
[FieldOffset(2)]
|
|
|
|
|
public readonly byte g;
|
|
|
|
|
[FieldOffset(1)]
|
|
|
|
|
public readonly byte b;
|
|
|
|
|
|
|
|
|
|
public ColorRecord(byte r, byte g, byte b) : this()
|
|
|
|
|
{
|
|
|
|
|
this.r = r;
|
|
|
|
|
this.g = g;
|
|
|
|
|
this.b = b;
|
|
|
|
|
}
|
|
|
|
|
public ColorRecord(int full) : this()
|
|
|
|
|
{
|
|
|
|
|
this.full = full;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum DebugColor
|
|
|
|
|
{
|
|
|
|
|
/// <summary> Red. RGB is (255, 0, 0)</summary>
|
2023-03-27 20:31:45 +08:00
|
|
|
|
Red = (255 << 24) + (000 << 16) + (000 << 8),
|
2023-03-26 11:19:03 +08:00
|
|
|
|
/// <summary> Green. RGB is (0, 255, 0)</summary>
|
2023-03-27 20:31:45 +08:00
|
|
|
|
Green = (000 << 24) + (255 << 16) + (000 << 8),
|
2023-03-26 11:19:03 +08:00
|
|
|
|
/// <summary> Blue. RGB is (0, 0, 255)</summary>
|
2023-03-27 20:31:45 +08:00
|
|
|
|
Blue = (000 << 24) + (000 << 16) + (255 << 8),
|
2023-03-26 11:19:03 +08:00
|
|
|
|
|
|
|
|
|
/// <summary> Yellow. RGB is (255, 255, 0)</summary>
|
2023-03-27 20:31:45 +08:00
|
|
|
|
Yellow = (255 << 24) + (255 << 16) + (000 << 8),
|
2023-03-26 11:19:03 +08:00
|
|
|
|
/// <summary> Cyan. RGB is (0, 255, 255)</summary>
|
2023-03-27 20:31:45 +08:00
|
|
|
|
Cyan = (000 << 24) + (255 << 16) + (255 << 8),
|
2023-03-26 11:19:03 +08:00
|
|
|
|
/// <summary> Magenta. RGB is (255, 0, 255)</summary>
|
2023-03-27 20:31:45 +08:00
|
|
|
|
Magenta = (255 << 24) + (000 << 16) + (000 << 8),
|
2023-03-26 11:19:03 +08:00
|
|
|
|
|
|
|
|
|
/// <summary> Yellow. RGB is (255, 127, 0)</summary>
|
|
|
|
|
Orange = (255 << 24) + (127 << 16) + (000 << 8),
|
|
|
|
|
|
|
|
|
|
/// <summary> Grey/Gray. RGB is (127, 127, 127)</summary>
|
2023-03-27 20:31:45 +08:00
|
|
|
|
Gray = (127 << 24) + (127 << 16) + (127 << 8),
|
2023-03-26 11:19:03 +08:00
|
|
|
|
/// <summary> Grey/Gray. RGB is (127, 127, 127)</summary>
|
|
|
|
|
Grey = Gray,
|
|
|
|
|
/// <summary> White. RGB is (255, 255, 255)</summary>
|
|
|
|
|
White = -1,
|
|
|
|
|
/// <summary> Black. RGB is (0, 0, 0)</summary>
|
|
|
|
|
Black = 0,
|
|
|
|
|
}
|
|
|
|
|
}
|