part of flutter_sprites; class _PhysicsCollisionGroups { _PhysicsCollisionGroups() { // Make sure there is a default entry in the groups getBitmaskForKeys(["Default"]); } Map<Object,int> keyLookup = <Object,int>{}; List<Object> getKeysForBitmask(int bitmask) { List<Object> keys = []; keyLookup.forEach((Object key, int value) { if (value & bitmask != 0) { keys.add(key); } }); return keys; } int getBitmaskForKeys(List<Object> keys) { if (keys == null) { return 0xffff; } int bitmask = 0; for (Object key in keys) { int value = keyLookup[key]; if (value == null) { assert(keyLookup.length < 16); value = 1 << keyLookup.length; keyLookup[key] = value; } bitmask |= value; } return bitmask; } }