Updated the arguments for creating a ProxyScenePart, WebScenePart, or CoalScenePart. The arguments have been reordered so that the Scene container for the part comes before the geometry.
Broke out ModelManager class from StatePropagator, and the latter is now derived from the former. doc
Added documentation area organized by beginner, intermediate, expert level users link
Added program skeletons documentation section link
Tightened up class/method names to comply with conventions.
The StatePropagatorDS.toStatePropagator has been refactored to take a SubTree instance reather than a MulitibodyDS. This allows the method to work with direct SubTrees, and makes it simpler to use. Any values previously looked up using the MultibodyDS now use the refactored IdMixin global lookup instead. See the StatePropagatorDS.toStatePropagator for moer deTAILS.
The before_hop argument in the TimedEvent constructor has been renamed to pre_hop to match other locations in the code base. In addition, dumpString methods have been refactored to use pre-hop and post-hop rather than before hop and after hop. See TimedEvent for more details.
DashApp was refactored so that the data plotting functions can be defined in C++. In addition, the Dash server and associated websocket are now handled ina completely different Python process so they don’t get bottlenecked by the GIL. See the DataPlotter recipe for more details.
Renamed KLOG_LEVEL to KARANA_LOG_LEVEL. See the logging section for details.
Renamed current/stale to healthy/not healthy and finalized/initialized to ready. See LockingBase for details.
New Features
Added findShareDir, which is used to find the path where the /share/Karana directory was installed. This checks platform specific standard locations as well as the KARANA_SHARE_DIRenvironment variable, if set.
Added WebUI.HttpWsServer. This is an application-agnostic HTTP and websocket server with APIs in both C++ and Python. This is a common baseline for various web frontends in kdFlex.
Added a node force visualization helper. This draws an arrow from the Node to continually visualize the external force at the node as the simulation evolves.
Added the StatePropagator::euilibrateSciPy() method
UniformGravity and PointMassGravity have been refactored into one, simpler Gravity KModel. This KModel takes a GravityInterface, which can be used to switch what type of gravity is being computed. In addition, this GravityInterface can be passed to other KModels or Prefabs as needed to retrieve the current gravity value. See the 2-link pendlum example for an example.
Enhancements
Added WebScene.server, which can be called to get a handle to the web server being used by a WebScene instance.