Added the Axes3d helper class to visualize a Frame’s axes using 3d objects rather than line segments.
Added TRANSLATIONAL3 hinge type consisting of a single LINEAR3 subhinge. See docs
A Sim class has been added to Karana.KUtils.Sim. This provides a simple way to start up a simulation in one line, and also provides convenience methods for common tasks like creating graphics or starting the GUI. For details, see the Sim section of the user guide.
An FSM class has been added in Karana.KUtils. This provides a simple way to create FSMs for running more complex scenarios. For details, see the FSM section.
The setSubTree method was added to ModelManager. This makes it easier to do things like constraint embedding, as this can be set up after the ModelManager is set up, and no longer has to strictly be done beforehand. See ModelManager.setSubTree for details.
Added the PythonReentryMonitor. This class allows one to easily detect locations where Python is included in the simulation loop; these are spots where switching callbacks to C++ can greatly improve performance. See the PythonReentryManager recipe for more details.
Added the executeAndPopReverse method to CallbackRegistry. This executes callbacks in reverse and deletes them as it goes. This is the preferred method to call for cleanup-related registries, rather than calling executeReverse followed by clear. See CallbackRegistry::executeAndPopReverse for more details.