public BitMask(BitMask mask) { _bytes = new uint[mask._bytes.Length]; for (var i = 0; i < mask._bytes.Length; i++) { _bytes[i] = mask._bytes[i]; } }
public BitMask Or(BitMask mask) { Debug.Assert(_bytes.Length == mask._bytes.Length, "BitMasks must be the same size"); for (var i = 0; i < mask._bytes.Length; i++) { _bytes[i] = _bytes[i] | mask._bytes[i]; } return(this); }
public override bool Equals(object obj) { // If parameter is null return false. if (null == obj) { return(false); } // If parameter cannot be cast to BitMask return false. BitMask m = obj as BitMask; if (null == (object)m) { return(false); } return(_isEqual(this, m)); }
private static bool _isEqual(BitMask m1, BitMask m2) { // BitMasks need to be the same size if (m1._bytes.Length != m2._bytes.Length) { return(false); } // Compare all elements in each BitMask's _byte array for (int i = 0; i < m1._bytes.Length; i++) { if (m1._bytes[i] != m2._bytes[i]) { return(false); } } return(true); }
protected bool CanUpdate(HActor hActor) { var comparisonMask = new BitMask(hActor.mask).And(_mask); return(comparisonMask == _mask); }