I had a few questions....

How do resources get tied with ID's? When you register an object, and you generate an objectID, how do you know what resources to load for that newly registered object? Simple!
Did you just ask two questions and reply to yourself that they were simple answers and even answer them?

Quote Originally Posted by Shamino
I'm curious, what is um, matrix data? Don't say data pertaining to the matrix. A matrix is an array, what matrix are we talking about here?
A class to encapsulate a 4x4 array, with operations (rotation, transformation, normalization, etc) and/or coords for each object?

Okay, so all I want those simple little functions do is return something that gives me access to that specific bit of data, (or maybe one function that grabs em all, who knows)... With your system, what would I be grabbing? An ID to an object I've loaded into your data structures? Thats pretty much it right? Then your uber data management structures handle the rest.
I don't know if Bubba wants to revisit this topic again, but I'll go over what I got out of it. Mostly similar to what you said.

The __Container class holds a vector of the __Data class. The pool manager (ResourceCache) then keeps track of all the containers and therefor all the vectors. Then theres an object manager, which you create objects with, and it will retrieve the start/end index from the pool manager and sends that data to be assigned in the newly created object's ObjectInfo. You simply perform operations using the ID of the object (passing it around and such), and the render list (RenderList) has a vector (or static array) of the IDs to be rendered (before frustrum and whatever that removes whats not in view). The data for the objects would be accessed in the render list like so (depending on your setup): ObjectManager->Object(ObjectIDs[i])->ObjectInfo.dwTextureIDs and RenderData->Materials.WhateverYouNeed(ObjectManager->Object(ObjectIDs[i])->ObjectInfo.dwStartIndex, ObjectManager->Object(ObjectIDs[i])->ObjectInfo.dwEndIndex) or whatever your preference of retrieving. Bubba stated that get renderdata(); etc. in object isn't right, but technically its possibly, it would just be unwise because you would have to pass pointers to the containers to every object - which could lead to problems (even if you were using smart pointers). A pointer to the pool manager (ResourceCache) is passed on construction of the render list at every frame.

I think thats what I got out of it.. its been a few weeks since I've been on the subject (due to school). If you don't care what I think I understand, but personally I think its a good idea to rebound ideas in order to see different perspectives incase you missed something (which is half the reason I wrote this), and honestly its probably a very small jump to visualize your idea to my idea than to Bubba's which is a combination of expert knowledge (after his posts I read about 5 tutorials somewhat related to what he was talking about, and none of them came close to the detail required). Anyway.