I guess the way it is working right now is actually correct, according to the Lua way. In Lua, if you assign a table to a new variable, it will still contain the same subtables. So a table copy feature would be needed to sort this out.
I think internally some of the sub-tables are sharing the same STL map. No idea why brushes don't also exhibit this behavior.
I can either change the way the map is stored in the table, which could cause other problems possibly, or implement a table copy mechanism.
Let me think about this...
Sorry, but I have to trim things that are holding me back from finishing the vegetation system, particles, and decals. It's hard for me to justify spending more time on Quake files. I sent a PM, feel free to discuss with me.
I don't know. I wrote this code a couple years ago and haven't used it much.
The plugins system is technically impressive, but I wonder if we might be better off just integrating things like the FreeImage load/save routines into the engine itself.
0.9.5 on Steam
Zip packages are now case-insensitive.
>4 GB zip files now supported.
AES zip encryption now supported, I think.
CreatePackage, Package::AddFile, and Package::Flush commands are removed (zip files are read-only).
Other bug fixes abound.
I replaced ziplib with libzip in the next build.
Packages are now read-only.
Package file names are now case-insensitive.
>4 gb files should be supported.
AES encryption should be supported, although I have not tried it yet.
I am honestly reluctant to put effort into helping someone rewrite major parts of the engine, when it's just going to lead to more and more custom features requested that only split the user experience.
I recommend using .gltf instead of .glb.
There is a glTF extension for LOD support but I have found having separate files is easiest.
Yes, I wish 3D modeling programs would just export glTF files with DDS. The easiest way to convert these is with this tool.
glTF embedded materials can have a name applied to them. Perhaps we should make the loader so it looks for a file by that name and loads that, if it exists.
I think you will end up running into a lot of limitations if you are going through the plugins system.
I found a pre-generated project for libzip here:
https://github.com/kiyolee/libzip-win-build
Apparently, this also supports the newer zip encryption system.
I need to trim some things down in order to focus and make progress.
The Quake plugin will be removed from the distribution and will no longer be supported, but the source code is available here:
https://github.com/UltraEngine/PluginSDK/tree/master/Plugins/Quake Loader
0.9.5
Implemented specular / gloss shader family
IMPORTANT: You must delete your C:\ProgramData\Ultra Engine\settings.json file, or at least open the file up and remove the currently opened folder setting. You must update any project's shaders before opening it, because the material structure in the shaders has added members and is no longer the same size. If you don't do this, you will get no rendering and your graphics driver may crash.