New update!
I have switched from CPython3 to IronPython to make C# interop easier. Thanks to that switch, the edit boxes (traditional HMT/Eschaton-type controls) are seamlessly integrated with Python scripting -- whenever scripts make changes, the GUI updates to reflect this.
Here is an overview of Quickbeam's (planned) architecture. So far, many of the pieces are in place, with the exception of add-ons.
Binary Access
At the very bottom is the layer that makes reading maps from memory feel exactly the same as reading from disk. Most users need not think about this layer; they can just take it for granted.
Plugins
One step up is the plugins layer. Whereas user-contributed plugins have been popular for older programs like HMT and Eschaton, Quickbeam's plugins will be moderated by me. This is because script compatibility depends on everyone having the same plugins, and we've pretty much mapped Halo out anyways. I can update plugins after the fact if they do need to change, and you can always substitute your own if you really want to.
Scripting
In the middle is the celebrated (by me, anyways) scripting layer! This should hopefully be intuitive to most modders. Scripting is done via Python, and I intend to publish a few tutorials and examples. Besides being cool, the scripting layer will make it easier for me to develop new features. Additionally, it will open the door for...
Add-ons
This feature is less fleshed-out as the rest, but I want users to be able to create and publish their own special-purpose buttons and controls. This could be as simple as a button for automating some tedious task using scripts, or something more complex. The design of this feature is hazy at the moment, and will not be present in the initial releases of Quickbeam
Classic Editor Interface
Finally, at the very top is the HMT/Eschaton-like editing controls we all know and love. Except these ones won't be glitchy or laggy (I hope).
Bookmarks