momentum-mod / lumper Goto Github PK
View Code? Open in Web Editor NEWBSP lump editor and review tool
License: MIT License
BSP lump editor and review tool
License: MIT License
Only looked at this briefly but I think it's possible (on Windows at least) (AvaloniaUI/Avalonia#2635). We want users, especially moderators reviewing maps, to be able to open BSP files very quickly to check contents - if someone's reviewing a dozen maps in one sitting we should make it very streamlined.
Best way I can think of is having dragging a BSP file anywhere onto the UI immediately open that BSP. If another BSP file (by file path) is already open, spawn a new instance of Lumper and open in there. Should be lightweight enough to handle that, though maybe worth checking someone doesn't accidentally drag 100 files onto it and spawn a 100 instances at once.
Add a page that can loads two BSP files and generates some kind of Git-like diff between them. Some lumps probably change weirdly (idk if VRAD is even deterministic), but changes lumps we manage would be super useful.
Suggested by OzxyBox as a useful tool for future Chaos compiler improvements (ask in red for more details)
By the looks of things, core UI for Lumper will general IO stuff for BSP loading and saving in top menu, then many different windows for different views, e.g. entity editor, texture viewer etc.
Adding this will be key to getting additional views added besides just entity editor, so high priority for anyone interested in UI related parts of Lumper.
We can discuss layout in Discord if needed, personally I'd be happy with easier a top or side nav for switching between each view.
Currently there's no real indication what file you have open. We should probably show this in the UI itself somewhere but let's get through more UI design work first.
However, we should definitely modify the window title to like bhop_arcane.bsp - Lumper
. I assume this is very easy, a good first issue!
We most likely will not be using MVVM structure as the app is really simple, so the code can be in the view's codebehind files.
No mockups yet on what it'll look like, but ideally we have steps on the leftmost column, and a main view of the current "step".
This is going to require DX11 (async) cubemap generation in the game code, but once in place, maps will no longer need cubemaps packed into them, as the game will automatically generate them for the player on first time boot.
BSP Convert maps contain a custom game lump for storing primitive vertex texture info data. When attempting to export this to json, I get the following exception: System.ArgumentException: 'The value '1886221417' is not a valid value for the enum 'GameLumpType'.'
I uploaded a few maps that you can use to reproduce the issue here: https://teamstorage.momentum-mod.org/s/yjpg9kCNdC4N9tc
It'd be nice to have the ability to view, add and remove files packed into the BSP. Right now this can only be done using the bspzip
command line tool. I was considering writing a Qt tool in-engine to do this, however lumper seems like a better fit for such a thing (plus it's open source!)
We actually have a C++ tool shipping with the game that does this: "bspfix.exe"
So ideally all we need to do is invoke it on the bsp here.
Currently we have several general error-handling TODOs sitting around in the code, especially for BSP file loading. This can easily end up stagnating, we should work on it ASAP. MainViewModel.IO's has saving but not loading. This was actually making debugging harder for XB earlier, seemed like an internal Lumper thing but really just file path stuff. This should be caught at displayed in a message box.
Also, BspFile's Load(string path)
has a nasty looking "// TODO: loads of error handling" at the top, @BIRD311 what are plans for this?
Loading a file freezes the windows until it finishes.
BSP loading needs to be called asynchronously. Probably using async
and await
in BspFile.Load() or wherever the BspFileReader is called from.
A progress bar would also be nice.
Invoking bspzip.exe -repack
on the final BSP is the last step needed for the "production" map.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.