Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 12345]
 Cterminus::AbstractCommandDefines the interface that every command has to implement
 Cterminus::ClientReadyCommandThe ClientReadyCommand signals to the server that the client has successfully created the World and is ready to start the game. It will subsequently unpause the local and remote game
 Cterminus::GameEndedCommandThe GameEndedCommand signals that the remote game detected a winning or losing condition. It will display a victory or defeat screen accordingly
 Cterminus::PauseCommandThe PauseCommand pauses or unpauses the local game due to the remote game being paused
 Cterminus::PrepareNewGameCommandThe PrepareNewGameCommand is sent to the client when a multiplayer session begins to synchronize the game timer, terrain seed and client player position (left or right track)
 Cterminus::ProjectileFiredCommandThe ProjectileFiredCommand indicates that a projectile has been fired and contains the position as well as the movement vector
 Cterminus::ProjectileHitCommandThe ProjectileHitCommand indicates that a projectile hit a wagon. It contains the wagonIndex as well as the damage dealt
 Cterminus::SyncCommandThe SyncCommand is used to keep shared game state synchronized
 Cterminus::AbstractGraphicsObjectRoot of a class hierarchy of objects that contain independen game logic and are visible in the game
 Cterminus::AbstractPhysicsObjectGraphical scene element with a physics-based aspect, meaning that it can move and collide with other AbstractPhysicsObjects
 Cterminus::DynamicPhysicsObjectA dynamic physics object is a physics object that is mostly passive. It will be affected by forces and its movement will be simulated by Bullet
 Cterminus::ProjectileSimulates and renders a projectile. It also handles collisions with Wagons, deals damage and spawns Explosions
 Cterminus::KinematicPhysicsObjectA kinematic physics object is a "scripted" physics object, meaning that it will set its own movement. It will be used in collision detection, but bullet will not simulate its movement
 Cterminus::AbstractWagonCommon interface for all wagon types and contains common functionality like position calculation &c
 Cterminus::EngineWagonWagon type, which primary action increases the trains velocity
 Cterminus::RepairWagonWagon type, which primary action increases the health of all still functional weagons by a fix percentage
 Cterminus::WeaponWagonWagon type, which primary action shoots projectiles in the faced direction
 Cterminus::ExplosionRenders an explosion effect
 Cterminus::SkyBoxRenders an environment map in the form of a cube map on a screen aligned quad in the background
 Cterminus::TerrainRenders the terrain using patches and a displacement texture. Patches that are too far from the current camera position are culled
 Cterminus::TrackTrack that a Train moves on. It is currently not rendered. The course is represented by a Polyline instance
 Cterminus::TrainWorks as a logical container for all wagons one train consists of
 Cterminus::AbstractPlayerBase class for interacting with a train and a camera
 Cterminus::AIPlayerImplements a simple artificial intelligence enemy player
 Cterminus::LocalPlayerLocal player that interacts with the World and their Train. It does not contain any logic; the sole purpose of this class is to distinguish different player types
 Cterminus::RemotePlayerPlayer whose actions get transmitted over network. It does not contain any logic; the sole purpose of this class is to distinguish different player types
 Cterminus::ActionSchedulerMaintains a list of actions, that should be executed later in a specific context
 Cterminus::BulletWorldA Wrapper class for a btDiscreteDynamicsWorld
 Cterminus::CameraManages view and projection matrices that define a view of a 3D scene
 Cterminus::CatmullRomSplineImplements a spline, that is determined by control points that lie on the spline
 Cterminus::EventHandlerReceives events (touch, key, mouse, gyroscope, etc.) and triggers actions, taking object states and context into account
 Cterminus::GeometryWraps the vertices data of one drawable object
 Cterminus::IndexTripleUsed as a temporary geometry data storage, while parsing .obj files in the resourcemanager class
 Cterminus::LevelGenerator for level data such as terrain geometry and track courses
 Cterminus::LevelConfigurationAll information necessary to configure a Level instance as well as some convenience methods to convert between model and texture space coordinates
 Cterminus::LightLight source with a packed, shader compatible memory layout
 Cterminus::LightManagerManages slots that can be filled with Light instances and is able to set those lights as a uniform array on a shader program
 Cterminus::MaterialWraps loading uniform data used as material coefficients
 Cterminus::MathUtilHelper functions for calculations such as interpolation and trigonometric functions
 Cterminus::PerlinNoiseImplements a two dimensional noise function using multiple selectable gradient vector grids (layers)
 Cterminus::PolylineImplements a sequence of line segments and is used to approximate a real spline
 Cterminus::ProgramThe program class implements the basic functionality used for binding programs to openGL
 Cterminus::IPProviderA small helper class to determine the local IP address
 Cterminus::NetworkEndpointCommon interface that NetworkServer and NetworkClient implement
 Cterminus::NetworkClientThe NetworkServer implements the NetworkEndpoint interface as the client role of a TCP connection
 Cterminus::NetworkServerThe NetworkServer implements the NetworkEndpoint interface as the server role of a TCP connection
 Cterminus::NetworkManagerThe NetworkManager implements the basic functionality for the multiplayer mode of this game
 Cterminus::SoundManagerBasic music and sound playing functionality. All needed sound effects are stored in the member variable m_sounds. Implemented as a singelton, accessibility for all classes is ensured
 Cterminus::WorldRunning game instance and contains all graphical (3D) elements of the scene
 Cterminus::GameMain entry point. It subclasses QQuickItem and handles all communication between QML and C++
 Cterminus::ResourceManagerLoads geometry, materials and shader progams during initialization and provides access to those resources
 Cterminus::TimerImplements a set of pauseable duration counters (subsequently called timers) and mechanisms to adjust them individually or globally
 Cterminus::VertexThe struct wraps the important vertex data attributes position, texture coordinate and normal vector