public static int[] BuildRGBPalette(int Colour0, int Colour1, bool isDXT1)
{
int[] Colours = new int[4];
Colours[0] = Colour0;
Colours[1] = Colour1;
byte Colour0_R = 0;
byte Colour0_G = 0;
byte Colour0_B = 0;
byte Colour1_R = 0;
byte Colour1_G = 0;
byte Colour1_B = 0;
ReadDXTColour(Colour0, ref Colour0_R, ref Colour0_G, ref Colour0_B);
ReadDXTColour(Colour1, ref Colour1_R, ref Colour1_G, ref Colour1_B);
// Interpolate other 2 colours
if (Colour0 > Colour1)
{
var r1 = (byte)(TwoThirds * Colour0_R + OneThird * Colour1_R);
var g1 = (byte)(TwoThirds * Colour0_G + OneThird * Colour1_G);
var b1 = (byte)(TwoThirds * Colour0_B + OneThird * Colour1_B);
var r2 = (byte)(OneThird * Colour0_R + TwoThirds * Colour1_R);
var g2 = (byte)(OneThird * Colour0_G + TwoThirds * Colour1_G);
var b2 = (byte)(OneThird * Colour0_B + TwoThirds * Colour1_B);
Colours[2] = BuildDXTColour(r1, g1, b1);
Colours[3] = BuildDXTColour(r2, g2, b2);
}
else
{
// KFreon: Only for dxt1
var r = (byte)(0.5 * Colour0_R + 0.5 * Colour1_R);
var g = (byte)(0.5 * Colour0_G + 0.5 * Colour1_G);
var b = (byte)(0.5 * Colour0_B + 0.5 * Colour1_B);
Colours[2] = BuildDXTColour(r, g, b);
Colours[3] = 0;
}
return Colours;
}