What is the best way to "restore" non-savable state when restoring the state?

I’ve moved all my game data in the “Spatials”, so I can effectively save and restore the state.

The one issue I have left, is that for the controls to be able to do anything, they need access to the (game specific) app-state. And since the app-state itself does not get saved, it is also not restored.

Atm, I have a horrible hack, where I set the app-state in a private static mutable field of the control base class, shared by all my controls, and fetch the app-state from there on first call to controlUpdate(float). There has got to be a better way to do this? (And preferably, one that does not involve me having to somehow iterate over all Spatials in the graph after load, looking for initializable controls…)

Why don’t you just save the needed data and recreate the physics space. Iterating over the scene graph is not unusual, thats why theres the SceneGraphVisitor interface so you can easily do that.