32 lines
1.0 KiB
C#
32 lines
1.0 KiB
C#
using System.Numerics;
|
|
using FFXIVClientStructs.FFXIV.Client.Graphics;
|
|
using FFXIVClientStructs.FFXIV.Component.GUI;
|
|
|
|
namespace KamiToolKit.Timelines;
|
|
|
|
public class NodeTint {
|
|
|
|
public Vector3 AddColor;
|
|
|
|
public Vector3 MultiplyColor;
|
|
|
|
public static implicit operator AtkTimelineNodeTint(NodeTint tint) => new() {
|
|
MultiplyRGB = new ByteColor {
|
|
R = (byte)tint.MultiplyColor.X, G = (byte)tint.MultiplyColor.Y, B = (byte)tint.MultiplyColor.Z,
|
|
},
|
|
AddRGBBitfield = Convert(tint.AddColor),
|
|
};
|
|
|
|
public static implicit operator NodeTint(AtkTimelineNodeTint tint) => new() {
|
|
AddColor = new Vector3(tint.AddR, tint.AddG, tint.AddB), MultiplyColor = tint.MultiplyRGB.ToVector4().AsVector3(),
|
|
};
|
|
|
|
private static uint Convert(Vector3 color) {
|
|
var red = (short)(color.X + 255);
|
|
var green = (short)(color.Y + 255);
|
|
var blue = (short)(color.Z + 255);
|
|
|
|
return (uint)(red & 0x3FF | (green & 0xFFF) << 10 | (blue & 0x3FF) << 22);
|
|
}
|
|
}
|