SiO2 version 1.7.0
Adds the blackboard-related classes and fixes some issues with other code. Also the build has been upgraded to work with gradle 7.4.2 and publish to maven central.
Change log:
- Fixed a bug in MovementState where disabled states would be auto-enabled if the default camera initialization ran.
- Added a more general WorkerPool class to encapsulate the job management of JobState. Modified JobState to delegate to it.
- Added a Blackboard class and auto-registered it with the GameSystemsManager.
- Added a BlackboardState class for convenient access to a blackboard object in client-side code.
- Renamed the JobState.getQueuedCountReference() and getActiveCountReference() to getQueuedCount() and getActiveCount() respectively. The old one was a typo and since this is a newish class, hopefully it doesn't affect too many folks to fix it now.
- Breaking change to the CommandEntry interface where runCommand() now has a boolean return value. Returning true allows the command to keep the console open.
- Fixed DecaySystem to call the "fail on error" version of getSystem() when looking up the entity system.
- Updated SimTime to have a setCurrentTime() method that allows resetting the simulation to a particular time, either because the game is being reloaded or because it's being continued after a pause, etc..
- Refactored SimTime's internals to make time tracking easier and more flexible.
- Updated GameLoop to call setCurrentTime() on its safe sim time instead of update(), ie: the time returned by GameLoop.getStepTime()
This avoids a base time discrepancy but leaves a breaking change that tpf will always be 0. (tpf was generally nonsense before.) - Updated GameLoop to allow waiting for start() to complete. If waiting then if there is an error during startup then it will be wrapped and rethrown from the start(true) method.
- Added SimEvent.simFailed and modified GameSystemsManager to publish this event if either initialize() or start() fails.
- Fixed a bug in MovementState where the provided walk speed wasn't being adopted unless the run state changed.
- Migrated the build to gradle 7.4.2
- Moved distribution to maven central.