diff options
Diffstat (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Entities/BitArrayExtensions.cs')
-rw-r--r-- | Plugins/MonoGame.Extended/source/MonoGame.Extended.Entities/BitArrayExtensions.cs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Entities/BitArrayExtensions.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Entities/BitArrayExtensions.cs new file mode 100644 index 0000000..2ca0737 --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Entities/BitArrayExtensions.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections; + +namespace MonoGame.Extended.Entities +{ + public static class BitArrayExtensions + { + public static bool IsEmpty(this BitArray bitArray) + { + for (var i = 0; i < bitArray.Length; i++) + { + if (bitArray[i]) + return false; + } + + return true; + } + + public static bool ContainsAll(this BitArray bitArray, BitArray other) + { + var otherBitsLength = other.Length; + var bitsLength = bitArray.Length; + + for (var i = bitsLength; i < otherBitsLength; i++) + { + if (other[i]) + return false; + } + + var s = Math.Min(bitsLength, otherBitsLength); + + for (var i = 0; s > i; i++) + { + if ((bitArray[i] & other[i]) != other[i]) + return false; + } + + return true; + } + + public static bool Intersects(this BitArray bitArray, BitArray other) + { + var s = Math.Min(bitArray.Length, other.Length); + + for (var i = 0; s > i; i++) + { + if (bitArray[i] & other[i]) + return true; + } + + return false; + } + } +}
\ No newline at end of file |