public PhysicsCollisionGroups(PhysicsLayersDescription layers) { _layers = layers; int layerCount = layers.GetLayerCount(); _collisionGroupsByLayer = new CollisionGroup[layerCount]; for (int i = 0; i < layerCount; i++) { _collisionGroupsByLayer[i] = new CollisionGroup(); } for (int i = 0; i < layerCount; i++) { CollisionGroup group = _collisionGroupsByLayer[i]; for (int g = i + 1; g < layerCount; g++) { bool collides = layers.GetDoLayersCollide(i, g); if (!collides) { CollisionRules.CollisionGroupRules.Add(new CollisionGroupPair(group, _collisionGroupsByLayer[g]), CollisionRule.NoBroadPhase); } } } }
public int GetLayerCount() => _layers.GetLayerCount();