Brendy boy, thanks, I think I'll be fine as long as I can manipulate the matrix. I'll try and see if I can figure out GDK's code for rendering.
Hawkblood,
I actually forgot about the exclude object commands, so that should be useful to me. As for making a list, it probably won't work how I want it to, as the whole point of the optimisation is to not even have to visit certain nodes, but if I figure out I'll post and let everyone know.
As for the matrix part, I perhaps didn't explain it clearly. The idea is basically the same as limbs on objects, except with any other kind of entity. If one object is attached to another (as a child object), and the parent moves or rotates, the child's relative position to the parent should stay the same. Not only that but it should rotate accordingly too. It's possible to position it using trig, but it's a lot of calculations and quite slow, and not exactly easy to figure out either. Rotation, in GDK, is terrible. I've never figured out how to solve this problem using GDK's rotation commands.
But by using a single 4x4 matrix, you can encode the object's position, scale and size. And to position/rotate/scale it relative to it's parent, you simply multiply it by it's parent's matrix. This is just an internal optimisation of course - my classes will give access to position, angle and scale vectors just like GDK does.
Anyway, thanks for the help!
"everyone forgets a semi-colon sometimes." - Phaelax