When using the engine, one of the most important features for the user is to be able of saving the scene in the computer. By doing this the user can save all his work to continue later and share it with other people.
Once the user adds a new mesh to the scene we store it in our own file format. By doing this we acomplish great performance when loading scenes, for example when loading a level.
One of our goals is to be as user-friendly as possible. The engine follows a GameObject hierarchy system, so if you change some of the parent propierties the child will change acording to it.
User can play, pause and tick and even modify the speed of the time in game. To mange all of the time propierties we have a time manager to set the time in all levels of the engine .
We have developed a resource manager to improve the performance, especially the memory performance, in the engine. No matter how many times a mesh is in the scene, it will only be loaded once in memory.
All the GameObjects propierties are stored and can be modified from the components in the Inspector Window.
The following components are available: Transform, Geometry, Texture, Camera, Billboard and the Particle System.
We have used the ImGui library for our Engine UI.
We have been able to do all the menus, hierarchy window, buttons and texts. It has helped us with all the Engine UI options
We use an adaptable Octree to speed up the drawing process and mouse picking, quickly discarding irrelevant GameObjects when we apply the camera culling.