Actually, if the objects are spawned at runtime, it’s better to have all of the Capture and RestoreState in the object spawner… the Spawner should maintain a list of the objects that it has instantiated, and when CaptureState is called,it should save all of the information needed to respawn that item in RestoreState. If the item already has a SaveableEntity component attached, this will confuse the saving system, if for some reason (like it was picked up) it’s no longer in the scene…
In short:
If it’s placed in the scene heirarchy by the developer, i.e. it’s in the Scene file, it should have a SaveableEntity with an ID. If it’s spawned into the game after runtime, then the responsible object should have a SaveableEntity with an ID, and should return a list containing the information needed to respawn and correctly restore each entity it has spawned.