The AnnUserSpaceSubSystem is the intended base class for an engine SubSystem defined by the user.
This class is your interface to create your own subsystem. It's not abstract, so you could instantiate it by itself, but it would do absolutely nothing!
The needUpdate method will allays be called by the engine, so you can put some housekeeping code (test change of state, get current timestamp…) to determinate if you want your update() to be called or not.
You need to provide a unique string “subsystem name” to the constructor. You can't have 2 subsystems living in the engine with the same name.
These can be defined directly in your code, or loaded as plugin Plugin