Hey, thanks for the input!
I'll definitely keep that in mind though. Z-level pruning will more than likely be in the next release, depending on how exactly geometry ends up getting generated. Should be pretty easy to do though. I didn't put any time into stuff that allows for cleaner visualizing of underground things in this release, since, to be honest, there's not much to see down there right now.
The focus for all of the releases so far have been for mostly above-ground stuff. Now that we're cleaning things up and actually fleshing out the application, instead of piling more features on our hacked-together demo of a release, the underground stuff should be much more lively.
So, progress update. Still getting slaughtered by school work, and have been scrambling to find time to get work done for my part-time job. In what little down-time I've had though, I managed to finish the threading stuff (the core engine is now pretty much completely thread-safe) and minimize the hardcoded GUI as much as possible.
Here's what the title screen GUI script looks like:
local system = CEGUI.System:getSingleton()
local wmgr = CEGUI.WindowManager:getSingleton()
local cursor = CEGUI.MouseCursor:getSingleton()
local imgman = CEGUI.ImagesetManager:getSingleton()
imgman:create("TitleScreen.imageset");
local root = wmgr:loadWindowLayout("titleScreen.layout")
system:setGUISheet(root)
cursor:hide()
function statusBoxUpdated(e)
local statusbox = CEGUI.WindowManager:getSingleton():getWindow("Root/StatusBox")
local str = statusbox:getText().."\n"
local status = tolua.cast(Overseer:getSingleton():getCurrentState(),"TitleScreenState"):getStatus()
if status~="" then statusbox:setText(str .. status) end
end
The only line of code that actually involves the GUI at all in the title screen C++ file is this:
overseer->getGUIManager()->executeScript("titleScreen.lua");
And that hard-coded string of "titleScreen.lua" will likely be abstracted to a config file by the time the first release rolls around. All of the GUI on the screen is defined in the titleScreen.layout XML file, which also tells the status box it creates to call the statusBoxUpdated lua function every time it is updated (once per frame). The title screen state itself has a (thread-safe) status queue that it pops a message off of each time getStatus() is called, or returns an empty string if there isn't a status to be displayed.
I don't see anything with the GUI changing much (if at all) before the first release, so this is pretty much exactly how the GUI for the main visualizer itself is going to be implemented, though it'll likely be a bit more involved.
Anyways, it should be extremely customizable.
Now that I've got the threading working completely and the GUI stuff pretty much done, I'm going to pass over the geometry generator for now (I might temporarily hack in the old one) and get the item support working. The config files (which model to use for what by default, etc.) will probably come with this. I'll probably have a few screenshots of this stuff working soonish (within the next week or so), but don't expect anything too fancy yet.
EDIT: By the way, I forgot to mention something. The lua scripts won't be confined to the GUI, though in most cases the GUI will be their entry point. All of the scene management stuff that I code in the main visualizer will be public and accessible from lua, and I plan on making all of DFHack accessible from lua as well. This means that it'll be possible to script in completely new functionality through the lua scripts.
This way, nobody has to get their hands dirty with scripting, since all of the core functionality will be utilized in the default GUI scripts. However, for those people who
do like to hack around with stuff, it'll be a lot easier than trying to get the C++ stuff and all of its dependencies to build.