Annwvyn Experimental 0.2.4 Now compatible with SteamVR? o.O
Pre-releaseAfter changing the API to use an abstract "OgreVRRender" object as the renderer, The path for compatibility with other VR system was open.
This rerelease comes with 2 major improvement :
- Resource management through RAII and smart pointers instead of relying on naked pointers and manual memory release. This permit to greatly simplify the code
- Compatibility with OpenVR (SteamVR) through an "OgreOpenVRRender" class.
AnnEngine will use the correct renderer object if "-rift" or "-vive" is provided as a command line argument. This is completely transparent for the library user.
And now, a change sumary:
- Added script to fetch runtime DLLs
- App manually keep track of frame index
- Comfort adjustment (reduced vertical rotation speed)
- OpenGL texture copy in AnnConsole optimized
- Corrected subsystem update number
- Removed some useless test code
- Correctly detect the presence of an XBox controller instead of assuming it's the 1st controller on the system
- Use of smart pointers
- subsystems are shared_ptr
- game objects, lights, and triggers are shared_ptr
- Physics initialization simplified, and keeps shared_ptrs
- Event listeners uses shared_ptr
- Level Manager can return shared_ptrs to previously loaded objects
- Cached save data object are shared_ptrs
- Fixed bug were Resource manager was accepting a reserved resource group name
- Added Vive rendering
- Changed the reference point of the player from it's head (center of eye plane) to it's feet (ground point in the center of the feet).
- Added launcher script that boot the engine in Rift or Vive mode in a click
- Example code has a physics test level with black baground and no gravity, to be able to check the relationship between the physics engine and the head tracking
- The engine close when it receive a quit event from SteamVR
"0.3" will be the support for "hand controllers" and a proper way to specify "untilisation context" (seated, standing, room scale, virtual cocktpit".
Also, there's some problems in the physics implementation. Sometimes the time doesn't update in the physics. This is a known problem for a while, but I'm unable to track it down.
There's multiple things I'm not happy with the way the physics is handled, I don't know if BtOgre is to blame. I will probably ditch it completely and write my own physics object initialization code.