CMake supports test automation and optional uploading of test results to a dash board. CTest tests are added using the CTest add_test() macro. Enabling testing results in a RUN_TESTS project (in Visual Studio) being generated (or a tests target on Linux). The clip below shows this in action in the engine project. CTest generates a summary of the status, timing and result of each test. The next step is to use Jenkins to automate the checking-out, building and testing of the code when a commit is pushed to the git repo.
The engine and editor supports CSG courtesy of the CSG plugin. This short clip demonstrates using the “Union” operation to union together all static meshes in a scene from which a navigation mesh is then generated. The CSG plugin is actually 2 plugins, one that plugs into the editor adding the Union, Intersection and Difference tools and its engine counterpart plugin that plugs into the engine adding the implementation of the CSG functions.
A short clip demonstrating the engine’s support for terrain generated procedurally at runtime from coherent noise. The terrain is generated as a n x n tile grid with each tile being a user configurable number of world units in extent. The terrain is near infinite with the tiles being generated (and discarded) in parallel at runtime utilising all available machine cores as the viewpoint moves through the terrain / noise.
A short clip demonstrating engine support for obstacle avoidance.
A short clip that demonstrates scripting support. The engine can be scripted (via LUA) to dynamically create, modify and destroy scenes and scene elements in response to user events (i.e. key presses, active camera entering proximity sensors etc).
A short clip of the project running on Linux.
Short clip demonstrating billboard support. Terrain can be decorated with layers of foliage. Foliage can be texture mapped billboards. Again scene managed for faster rendering.
Pathfinding support added. Imported scenes can be converted into navigation meshes. Crowds of agents can then be added with an agent’s appearance based on an external scene.
Terrain can also be converted to a rigid body height map for collision detection support.
Height map support. Height map data can be loaded and walked on using a terrain camera. Both height map support and the terrain camera being provided by the Terrain plugin.