9573d379

# Box2D Group Indices

12/20/2017 c85c0b21142eddd43b7189190e9da07c

## What are Group Indices?

The group index flag can be used to override the category or mask of a fixture. As the name implies it can be used to group certain fixtures together to describe if they should or should not collide, a good example would be Friendly Fire, friendly players don't get hit by friendly bullets, vice versa.

A group index is an integer ranging from -32768 to 32767.

``````Fixture:setGroupIndex( index )
``````

## How they work

• if either fixture has a groupIndex of zero, use the category/mask rules as above
• if both groupIndex values are non-zero but different, use the category/mask rules as above
• if both groupIndex values are the same and positive, collide
• if both groupIndex values are the same and negative, don't collide

What we're really interested in are the last two points. \ I'll give an example, say we have two rectangles, `A` and `B`.

``````A.fixture:setGroupIndex(1)
B.fixture:setGroupIndex(1)
``````

They both have the same index, `1`, which is a positive number, therefore `A` and `B` will collide.

``````A.fixture:setGroupIndex(1)
B.fixture:setGroupIndex(-1)
``````

Although `A` and `B` have the same absolute value, `1`, they are not the same number, thus they fit into the point of non-zero but different.

``````A.fixture:setGroupIndex(-1)
B.fixture:setGroupIndex(-1)
``````

Finally, both fixtures have the same index and are negative, therefore there is no collision between the fixtures.