I made great progress on my thesis, so I spent some time with my engine too... My original plan for the third iteration of my engine was to have a plugin system for the engine components. There was quite a few different motivations, ranging from easy updates for applications to supporting multiple types of the same component - such as a DX9 or DX11 renderer.
I had shelved my plans for Hieroglyph 3 for a while since I didn't have time for a total rewrite of my engine, but I recently found a new reason to want the plugin system. When preparing to release a small demo program that uses DX9, I realized that I had dependencies in my engine for both DX11 and PhysX that weren't even used in the demo! That means that it would rule out anyone with XP from running the demo, as well as anyone that didn't have PhysX installed either. That simply won't do.
So, I took my beginning system from the Hieroglyph 3 project and imported it into my Hieroglyph 2 project. The general concept is that there will be a core static .lib file for the heart of the engine, and each 'IEngineComponent' will be implemented as a DLL. These DLLs will be loaded dynamically to keep from having explicit links to unwanted libraries (like DX11 and PhysX).
All together, I have quite a few engine components that will ultimately be ported to a separate DLL project and removed from the basic engine. From physics manager systems (PhysX is already there, and I want to support Havok and Bullet too) to audio engines (I have Direct Sound in there, and want to support XAudio2 and maybe FMOD) there is plenty to port.
Of course, the original reason that I didn't switch to HG3 was a lack of time, and that still holds true. I'll be gradually porting the pieces out of the library and into the dlls, starting with the perpetrators mentioned above. Now that I have a relatively robust event/messaging system implemented, it should ease the transition with using events instead of direct method calls. I have wanted this in the engine for a long time, so it is nice to have it start moving forward... More on this one to come as I make some progress.