Basically what we are trying to finish tommorow is basically a Texture, Resource, Entity, and Mesh manager. The idea behind it is simple: Imagine you have 200 fighters on the screen, all in the same color, and size and you want the game to be fast. A easy way to do it ofcourse is to use pointers. Now what if you wanted 200 meshes with 25 different textures?
We decided to basically focus on the following approach:
The engine starts and loads up the resource manager
A scene gets loaded up in the engine which sends a message to the resource manager indicating it needs 25 vypers with Mesh 1 and texture 2. First the Resource manager will check if these specific things are loaded into the memory. If not, then it will send a message to the kernel, which will send a message to the renderer indicating that he has to load the models and textures. These memory addreses are then send back to the Resource manager who puts them in the respective linked lists.
An entity is made of basically a Pointer address to a texture, and mesh. The entity manager keeps track of all the different entities on the screen so its easy to delete one model.
Hopefully when this is done the engine will be more modular and robust. Another feature we are trying to implement is a abstract renderer bit. Meaning that we have a renderer.cpp which basically is a thin skin around whatever 3D Api you want to use, our goal is to have support for OPENGL and Direct3D, Directinput is currently working fine, it has some glitches but it has finally been able to get stomped into the code and running. Now its just review and bugfixing. Our heightmap is making progress aswell, so things so far are going great. Hopefully an updated source code can be posted soon :)