namespace QSB.Utility { // Stolen from here : https://stackoverflow.com/questions/3261451/using-a-bitmask-in-c-sharp public static class FlagsHelper { public static bool IsSet(T flags, T flag) where T : struct { var flagsValue = (int)(object)flags; var flagValue = (int)(object)flag; return (flagsValue & flagValue) != 0; } public static void Set(ref T flags, T flag) where T : struct { var flagsValue = (int)(object)flags; var flagValue = (int)(object)flag; flags = (T)(object)(flagsValue | flagValue); } public static void Unset(ref T flags, T flag) where T : struct { var flagsValue = (int)(object)flags; var flagValue = (int)(object)flag; flags = (T)(object)(flagsValue & ~flagValue); } } }