Architecture
Last updated
Last updated
The core of the engine is coded in C++, which also determines the native C++ API. JavaScript binding is also available , which gives You the opportunity to real-time “live code” your scenes through a JavaScript console, while You are inside the 3D scene.
The core of the engine is very sleek, so it can run on any device (desktop, notebook, tablet, mobile phone, even Raspberry Pi). It consists of core modules (shared libraries) which provide base functionality like managing scene, network-synchronization, configuration-, event-, log- and plugin-handling.
This core module takes care of the initialization process in ApertusVR. It starts all core modules like Scene, SystemConfig, EventManager, etc. ApertusVR can be started from any program calling System's Start() method.
This module loads ApeSystem.json, which contains configuration settings for the core modules. For more details, please check the Configuration Ecosystem page.
This is the database where 3D scene elements (nodes and entities) are live. It implements the base APE types ie. Node, Light, Camera, etc. It also responsible for network synchronization between participants.
EventManager is handling Events in ApertusVR. An event can be a creation of a geometry or a change in the position of a node. Plugins are able to subscribe for these events.
An Ape::Event holds information only about: - SubjectName (the unique name of the node, entity, etc.) - Type of the event (NODE_CREATE, CAMERA_FRUSTUMOFFSET, etc.) - Group of the event (node, geometry, light, camera, etc.)
Logging is a very basic functionality for any kind of application. It provides logging levels like info, debug, trace, warning and error.
Apertus' plugins are handled by this module. It creates a new thread for each plugin and takes care of their life-cycle.
Plugins are extending the functionality of the Core, according to your needs/choice. Plugins do not know anything about any other plugin, they only use Apertus interfaces.