Ejemplo n.º 1
0
 public BitMask(BitMask mask)
 {
     _bytes = new uint[mask._bytes.Length];
     for (var i = 0; i < mask._bytes.Length; i++)
     {
         _bytes[i] = mask._bytes[i];
     }
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        protected bool CanUpdate(HActor hActor)
        {
            var comparisonMask = new BitMask(hActor.mask).And(_mask);

            return(comparisonMask == _mask);
        }