MW-Subsystems

There are three categories of mw*-subsystems:

MWRender
MWRender is managed by the MWWorld::World class and is not exposed to the rest of the mw*-subsystems.

MWClass
MWClass provides implementations for the MWWorld::Class base class. All access is done exclusively through the base class interface.

All other subsystems
MWDialogue, MWGui, MWInput, MWMechanics, MWScript, MWSound, MWWorld

Each of these subsystems has a facade-like top-level class that is the main access point for other subsystems (MWDialogue actually has two of these classes).

Each of these subsystems has access to any other of these subsystems through an instance of the MWWorld::Environment struct.

Please note that there is a issue queued up in the tracker for reducing the dependencies between mw*-subsystems. This will result in a significant architectural change (only minimal code changes though) that should improve compile time substantially.