Sweet.......
Okay, so heres the gist of things
I create a pool of objects, this is my Scene_Objects vector...
EVERYTHING in the sceneobjects vector will have 4 main methods, getphysicsdata, getrenderdata, getsounddata, and update....
I can then, for each method, create a pool of each piece of data, a pool for physics data, a pool for render data, a pool for sounddata.... Update is just a function that is affected by my AI engine.. which in turn updates lots of other things...
Every time I add an object to my Scene_Objects pool, my methods pull from the object and use ID's to create resources for everything on my screen...
If I delete from the Scene_Objects vector, I de-allocate resource based on the object ID, and finally, delete the object completely out of the vector....
My DrawScene function will finally, now have the resources it needs in memory, as well as a pointer pointing to them given by the GetRenderData method,
We set each pointer recieve from each model (no matter what the model pointer points to or is called) to a generic pointer, that is always changing, and points to anything that is sent to the render function via getrenderdata(). We loop this function for how many objects are in our scene_objects vector while the program is running
The physics engine will work the same way, as well as sound and such...
This is how my engine will work... 4tw