Right now we allow modification of most but not all model state. Initially we considered this necessary to ensure not to break the simulation but our view on this has changed. We consider flexibility more important, this is still a research tool.
Expose each models state for read/write operations.
Models and Simulation may impose constraint checks on write operations such as ensuring there is no negative velocity set or the position is set to be outside the walkable area.
Ensure modifications that 'break' the simulation only result in runtime errors and never crash the application.