So quite a bit of progress on the console development front.
As always while coding a big project like this, no matter what the actual task at hand is, I always clean up and refactor tons of of little semi or completely unrelated things along the way. So lots of little parts of the engine have been cleaned up, is the sort of central theme of what I’m trying to say I guess…
The engine now has a fully functional scene graph as well as a fully functional state manager / input handling system.
With all that in the bag, Rob and I working on integrated libPng and LibZ for use as your texture loader, and moved on to getting texture rendering working inside our engine (much more difficult then you’d have thought).
Moving forward we ported some file loading code for .lwo (LightWave Object) files. Let me tell you… not fun.
The code was ~20 years old. It was made when C compilers had almost no type checking apparently. So the first task was just getting it to compile in a modern C compiler. Then the porting could begin. To get it running on the console we had to use a custom File I/O class we have developed to assist with porting libraries. Bringing the old C code in C++ was even more fun.
Ever seen a function call like this?
lwListFree( (void*)texture, reinterpret_cast
I don’t know about you, but I’d never seen this arcane syntax before, but this what I had to come up with to get it to compile.
See, most modern code can be ported simply by dropping in our special header file. But some older code is more difficult. So we developed this class them emulated most of the C style file I/O. While we still have to go through and modify many many lines of code, our class is structured to work exactly like the old C style functions, so the structure and flow of the code need not change.
We have been developing good strategies and a good code base for porting libraries. So far we ahve ported libPNG, libZ (required by libPNG), lwobject (LightWave Object code), and partially ODE (Open Dynamics Engine).
While we did in fact get the lwobject code compiling and running, we still dont have the renderer coded to read and render the data from memory yet. Thats the next task. But with all the heavy lifting done by lwobject, it should be a sinch.
The real next task will be getting ODE running, verifying that it works, and plugging it together with everything else.
So starting to get close to some pretty exciting stuff!