Obviously the code structure is not the most ideal imaginable, but I was hard pressed for time when I wrote it. The majority of my time was occupied by other aspects of my dissertation, and unfortunately I was unable to spend adequate time on the code.
If I were to write it today, it would be completely different. As you can see in my GPE documentation, I no longer use the friend keyword quite so liberally (In fact, haven't used it once in GPE). The naming convention I have used is a bit wonky as well. In addition the scoping for all the variables, methods, etc. really needs to be reorganized. I might get around to doing a refactoring on this code, but I wouldn't hold my breath. I wrote it over three years ago, and wrote it in quite a hurry when I did. If you compare this stuff with my GPE code, its like night and day.
Well, hopefully somebody learning to work with OGRE or to program in C++, might find it useful to look over. I certainly documented it sufficiently!