using System; using System.Collections.Generic; using System.Linq; using System.Text; 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 { int flagsValue = (int)(object)flags; int flagValue = (int)(object)flag; return (flagsValue & flagValue) != 0; } public static void Set(ref T flags, T flag) where T : struct { int flagsValue = (int)(object)flags; int flagValue = (int)(object)flag; flags = (T)(object)(flagsValue | flagValue); } public static void Unset(ref T flags, T flag) where T : struct { int flagsValue = (int)(object)flags; int flagValue = (int)(object)flag; flags = (T)(object)(flagsValue & (~flagValue)); } } }