public static GetHue ( this color ) : float | ||
color | this | |
Результат | float |
public static float GetHue(this Color color)
{
if ((color.r == color.g) && (color.g == color.b)) return 0f;
float num = color.r;
float num2 = color.g;
float num3 = color.b;
float num7 = 0f;
float num4 = num;
float num5 = num;
if (num2 > num4) num4 = num2;
if (num3 > num4) num4 = num3;
if (num2 < num5) num5 = num2;
if (num3 < num5) num5 = num3;
float num6 = num4 - num5;
if (num == num4) num7 = (num2 - num3) / num6;
else if (num2 == num4) num7 = 2f + ((num3 - num) / num6);
else if (num3 == num4) num7 = 4f + ((num - num2) / num6);
num7 *= 60f;
if (num7 < 0f) num7 += 360f;
return num7;
}
private static void AllowColorChange(ILContext il) { ILCursor cursor = new ILCursor(il); while (cursor.TryGotoNext(MoveType.After, instr => instr.MatchCall <Color>("get_White"))) { cursor.Emit(OpCodes.Pop); cursor.Emit(OpCodes.Ldarg_0); // this cursor.EmitDelegate <Func <Component, Color> >((Component self) => { if (self.Entity.Get <DecalRainbowifier>() != null) { return(ColorHelper.GetHue(self.Scene, self.Entity.Position)); } else { return(Color.White); } }); return; } }