Submodels group certain kinds of representations. For example, the Graphical submodel groups graphical elements, the Physical submodel manages physical elements.
Submodels provide means to query contained objects. Objects can be tagged on a per-submodel basis for easy identification and access.
Submodel elements can be linked using model links.
A container for graphical elements like scene nodes and entities.
A container for physical elements, like actors.
A ComplexModel consists of any number of submodels of any kind. It can also contain any number of model links.
Contained submodels can be tagged on a per-ComplexModel basis.
Model links link different kinds of submodel elements.
For example, a MovableModelLink links two objects derived from base::Movable, for example, a graphical movable element like a scene node (with an attached entity) and a physical element like a dynamic actor (with an attached physics ball). This way the position of the scene node can be updated from the ball whenever the model link's update() method is called.