InteractionGroup

nape.dynamics.InteractionGroup (final class)

InteractionGroups are another way of filtering interactions.

InteractionGroups form tree structures which are checked along side InteractionFilters when deciding if two Shapes should interact.

InteractionGroups are assigned to any Interactor (not just Shapes), and two Shapes will interact only if the most recent common ancestor in the InteractionGroup tree permits it.

For the purposes of the search, if any Interactor has no InteractionGroup assigned, we search up the Compound tree first.

_Group1
/   |
/  Group2      Group3
/    |    \       |                 Group1
Body1   /      Cmp1   |                 /   \           Group3
/    \  /      /    \  |      ==>    Shp1    Group2        |
Shp1   Shp2   Body2     Cmp2                    /    \      Shp4
|         |                  Shp2    Shp3
Shp3     Body3
|
Shp4

If we look at which InteractionGroup is used for which Shape following this rule, then the left graph can be transformed into an InteractionGroup tree on the right and we get that the MRCA (Most recent common ancestors) are such that:

MRCA(Shp1, Shp3) == Group1;
MRCA(Shp2, Shp3) == Group2;
MRCA(Shp4,   # ) == null;

If we were to set up the groups such that Group1.ignore = false and Group2.ignore = true; then shapes 1 and 3 would not be permitted to interact, whilst shapes 2 and 3 would be permitted.
As the MRCA for shape 4 with any other is null, then the value of Group3's ignore field is irrelevant, but the existance of Group3 is not as it serves to otherwise prevent Shape 4 from being permitted to interact with shapes 2 and 3.

InteractionGroup's can be fairly expressive, but they are strictly less powerful than InteractionFilters. InteractionGroup's have their place however as there is no limit to the number of Groups you can use.

Instance Members

@private


Parent group in InteractionGroup tree. @default null


nape
ignore: Bool

Ignore property, set to true so that objects will not interact. @default false


nape
interactors: nape.phys.InteractorList

Set of active interactors using this group.

Active interactors meaning those that are part of a Space.

This list is immutable.


Immutable set of children of Interaction groups.

You cannot assign or remove children in this manner, you must do it via setting the childs parent group to this/null.

This list is immutable.


nape
toString(): String

@private

Returns
String

nape
new(?ignore: Bool = false): Void

Construct a new InteractionGroup.

Name Type Default Description
ignore Bool false Whether interactors should be ignored. (default false)

Private Members

Metadata

Name Parameters
:final -