@Ybalrid Ybalrid released this Dec 24, 2017 · 141 commits to master since this release

Assets 2

This release is mostly about making the code nicer to work with, the library nicer to use, the documentation nicer to navigate and is fixing low level problems, making the engine more flexible. Everything works on Visual Studio 2017, and on the latest version of GCC and Clang on Linux. There's untested OpenVR (HTC-Vive) support on the Linux side. I'm going to get around to try it out in the near future, so... Expect updates on that, I guess.

Comming next

The developement of the engine will focus on a few things

  • Make sure the engine will work as expected on the new Oculus Core Platform
  • Totally separate the rendering code from the engine itself and load them as plugins. This will make releases for VR platform nicer
  • Revise some of the low level component. I haven't decided yet, but I'm probably going to remove OIS and GLFW form the dependencies and replace what they do with SDL2
  • The code is mostly composed of "components" but everything is disorganized and flat. This wasn't a problem when working only on Visual Studo as the project used "filters" to sort everything, but now the build system is generated via CMake, this makes it harder to work with
  • Finally make the engine easier to install on Linux. (I'm a bit waiting on getting Ogre 2.1 "officially released" so that distribution other than Arch will have packages for it...)


  • Removed some useless #include statement and cleaned
  • Removed bad exit() based error handling
  • RAII proofed the OculusInterface code
  • Did some refactoring on the Oculus renderer
  • Rationalized the name of the "renderer" classes and their string identifier to plugini-ze them in the future
  • Eliminated more usage of new[]/delete[]
  • Removed duplicated text rendering code to textures
  • Properly linking to direct-sound on windows
  • Removed fake STL classes for Doxygen
  • Added the tag files from CppReference to Doxygen so that the documentation will point to the standard library wiki
  • Typedefed all the shared_ptr to ClassPtr
  • The DLL macro is now AnnDllExport
  • Permit to change the name of the log file
  • Permit the client app to choose the name of the default renderer to use
  • Lights are now named
  • Object storage is now fully handled by the GameObjectManager and not by levels for the name<->pointer associations
  • AnnColor is now a type on the scripting interface too
  • Triggers can be referenced by name now
  • Collision masks are now named, not just a bitmask calculated by a macro
  • Added more tests
  • Completed the API documentation
  • Fixed filesystem manager for Linux
  • Moved physics shape creation to the physics engine
  • Joystick buffer handle the capture call on joystick objects
  • use vectors of "bytes" (char) in joystick code and not vector for performance concerns
  • Fixed the converting constructor of AnnVector3 that wasn't taking a const btVector3 ref
  • Improved collision events : now has collision point coordinates and normal vector
  • Fix miss usage of erase-remove idiom in multiple places
  • Add missing animation interface on GameObjects to the scripting api
  • Improved debug console : now has console history and movable cursor for editing entered text
  • Use std;;rotate instead of a bad and buggy implementation to "scroll" the content of the debug console
  • Fixed multiple performance warning from CppCheck
  • Added a missing copy constructor on Ogre::Euler class
  • Added missing documentation comments on Ogre::Euler
  • Add some templated methods for easily "create-register" custom object to the LevelManager, the EventManager
  • Audio engine explicitly check if the loaded implementation of OpenAL is openal-soft
  • The installer will install the VS 2017 C++ runtime now
  • Updated the Oculus code to use the new begin/end frame functions instead of "submit"
  • The Oculus implementation is sending the "focus aware" flag to the Oculus compositor
  • Added a simple interface to set the mesh of the hand models without having to deal with Ogre directly
  • Added a way to load user defined subsystems from a plugin
  • Stopped ogre dumping shader output to disk
  • Made the engine startup procedure (AnnEngine constructor + selection of renderer) more sane
  • Fixed bug when physics object where left "sleeping" even when their position/orientation was changed
  • Change to using hidden directory in the user home on Linux for save files
  • Add support script to get libraries for Ogre plugins
  • Removed the "Ogre" prefix on the renderer identification strings
  • Did minor cleaning on the CMakeLists.txt files