Example #1
0
        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);
                    }
                }
            }
        }
Example #2
0
 public int GetLayerCount() => _layers.GetLayerCount();