This looks really cool! You should think about implementing scripting system, possibly using LUA. You could create object classes and assign them to 3D objects or 2D sprites. Each class could have an OnCreate(), OnActivate(), OnUpdate(), and OnDestroy(). OnCreate() would be called once when an object of that class is created. OnActivate() would be called when the user selects an object, by pressing a key in front of it, clicking, etc. OnUpdate() would be called once each game loop, and OnDestroy() would be called once when the object is destroyed. This way it would be very easy to create interactive objects like doors, pick-ups, etc.
Sorry, I'm kind of rambling on now.
But I've been thinking of doing something like this for awhile now, so I thought I'd give you some ideas.
EDIT:
Stupid me! It appears that you already have this kind of system! Very cool!
i like orange