This is an old revision of the document!
Table of Contents
The Wizards Engine
Provides helpers and tools for creating and hosting gameplay code
LinkeableEditor
Concept of the editor engine features: the editor has internal representations of every concept. You provide 'mappers' that map a single instance, to a single internal representation object + conversion methods to convert to and from the engine representation
MenuDisplayer Displaying a simple menu
WorldSelector Selecting ANY Object in 3D by raycasting, by the use of selectableproviders
Hotloading
Hotloading is made possible by the ModelObject system.
Definition of the current system:
Simulator: responsible for updating the state of ModelObjects. It ensures that inconsistencies in the data are corrected/updated.
ModelObject: contains publicly readable and writeable data.
ModelObjectPart: a modelobject can contain several parts which are also readable/writeable data. Chances to the parts also invalidate the parent modelobject.
Depending on which parts a model object has, a simulator can act to make these parts work together. This means there are 3 types of simulators we can identify for this scenario. Simulators that ensure consistency for between objects for the same part, simulators that cause consistency for different parts of the same object, and simulators that cause consistency for different parts and different objects, the last one beeing the most complex.
Components
Physical provides physical properties to a modelobject. Provides position,boundingbox, objectmatrix
Rendering
CameraInfo contains methods to change the camera, get info about the camera, and generate a center screen ray!
Detailed information
Next parts describe in more detail how the engine performs its tasks
Operations
Startup
- Start engine
- Execute plugin
- Execute engine initializer
- Run test
- Run initialScene
- Run engine
Clean
- Clean all data (except TestingData)
- Reload gameplay dll
- Run test
- Run initialScene
Reset
- Clean all data
- Reload gameplay dll
- (There is no test selected now)
Reload
- Deserialize all
- Reload gameplay dll
- Reserialize all
- Run test
- (Initial scene is not setup again)
Writing tests
A test for running in the engine should receive the class attribute EngineTest. An engine instance should be optained with the EngineFactory.
Initial scene setup is provided through a service (TestSceneBuilder), currently using the internal DI.