Actually, the scene itself should act as a container and retain the scene node. If you spawn for example a bunch of static scenery that you don't need to touch ever again, why be forced to keep a reference around and track that when the scene in reality is pretty much a container? When the scene is destroyed, it relinquishes all it references, and you don't need to track it.

There should also be ways to add and remove objects from a scene, for example, what if you have an object that is rather expensive to create so it's easier to just keep around and add it to the scene again when it's needed. An enemy for example, you shoot it dead, remove it from the scene and later put it back in when a new enemy needs to spawn. If your code requires a strong reference, then it should have it, no reason to force arbitrary limitations onto things.

There used to be a really dirty hack in Rayne that removed nodes that hit a retain count of 0 from the world, so over releasing a scene node was okay. I don't think that will make it back though.


Shitlord by trade and passion. Graphics programmer at Laminar Research.
I write blog posts at feresignum.com