I've worked incredibly hard on TEE over the past 30 or so days. Rather than get into too much detail, here's some brief explanations and pictures:
Click & Drag Selections
I completed the ability to both click 3D objects to select them and drag the mouse to select more than one object. Lots of work was needed to give this an immediate and responsive feel with no slowdown. This was achieved by caching the results of intensive operations such as calculating object and chunk bounding box data and re-calculating when changed instead of re-calculating every frame.
Debug Visualizations
There are various debug displays built into the engine. Everything from coordinates to chunk borders to shadowmap displays
Texture Streaming
Not only did I implement textures (and Graphics Materials), but I did so using multithreading. This means that textures can load while new parts of the scene (level) load with no frame drops. Instead of dealing with an entire texture at once, it instead loads in chunks. Not only that, but a system is in place to allow for multiple texture qualities, giving gamers the ability to adjust their texture quality. Textures will also load a lower quality version before loading the higher quality ones to minimize the time that no texture is displayed.
Completion of Light Components
Light support (Spot, Directional, Omni) is now more polished and contains all sorts of properties and adjustable functionality.
Frustum Culling Optimization
A system is now in place that only renders visible chunks (which contain meshes). Soon, the engine will also have adjustments for renderable distance.
Resource Manager Improvements
Images, Textures, Sounds, Music and Meshes now get recognized within the game data and mod data directories and are registered as resources automatically by the engine upon startup. This saves time in not needing to also create a resource, select the file, etc. within the editor.
What's next?
Work will continue on completing the TEE 3D features as well as the editor itself. Currently I'm looking at:
Engine: Implementing mesh streaming, which will work similar to texture streaming in that extremely large models could be loaded during gameplay with no slowdown.
Engine: Implementing render distance, and also include an option to initialize and unload based on visibility and distance (which would be useful in large, open world games)
Editor: Add the mouse-based transformation tools (scale, rotate, position)
Engine & Editor: Particles, which I plan to implement via GPU shaders to keep the main thread clean and optimized.
Engine & Editor: Sound and music, which will also need to be streamed in (similar to textures and meshes)
We're not too far away from getting to the fun stuff like physics, scripting and multiplayer networking. The good news is that what I'm working on now is what I consider to be "the hard part", and I'm just about there. What it all boils down to is; I can't wait to begin making fun games with this toolset :)


