Releases: OpenLoco/ObjectEditor
Object Editor 4.1.1
What's Changed
Bug fixes
- Set "object type" properties back to editable as it was inadvertently preventing the user changing dependent object types for other objects. A better solution will need to be found to disallow changing the object type of the object you're editing. By @LeftofZen in 5c02c5c
- Fix regression in Region save code that caused it to generate corrupt objects.
Full Changelog: 4.1.0...4.1.1
Object Editor 4.1.0
Editor
Features
- Add
Close AllandClose Othersright-click options to the UI tab control, by @LeftofZen in #161 - Add a confirmation box when
- deleting a file
- overwriting a vanilla file, by @LeftofZen in f3fc48a
- Move hex viewer to a dedicated window for performance reasons, by @LeftofZen in080fedbd85dcc8c067ec816109a3f6ee5ebc070e
- Set minimum size for hex viewer so you can see the whole table, by @LeftofZen in f356792
- Add extra spacing in the image table view so the scrollbar can be seen, by @LeftofZen in 4b0ddf2
Bug Fixes
- Fix image offsets not being applied when loading from json file, by @LeftofZen in 8fb8943
- Fix sound objects not saving correctly with imported sounds, by @LeftofZen in e1dbcd8
- Fix compatible cargo categories crashing the UI and not saving correctly. Also added better UI for them. By @LeftofZen in 080fedb
Object Service
- Add routes for authors, tags, licences, object packs and sc5 packs by @LeftofZen in #162
/v1/authors/listv1/tags/list/v1/licences/list/v1/objectpacks/listand/v1/objectpacks/getpack/v1/sc5filepacks/listand/v1/sc5filepacks/getpack
Full Changelog: 4.0.1...4.1.0
Object Editor 4.0.1
What's Changed
- When importing images into the editor, there is a conversion from RGBA to indexed palette colour. In the code I have specified
(0, 0, 0, 0)as "transparent" and to be mapped to palette index 0, but technically anything with an Alpha component of 0 is transparent, for example(10, 124, 253, 0)is still transparent. Previously the editor only recognised the(0, 0, 0, 0)case but with this change, all pixels with Alpha=0 are marked as transparent, preventing issues where functionally transparent pixels were not converted into the correct transparent palette index, resulting in noise like this:
.
By @LeftofZen in c88411a
Full Changelog: 4.0.0...4.0.1
Object Editor 4.0.0
What's Changed
As per semantic versioning rules, a breaking change requires a new major release, and so here we are with the big 4.0.0! There are a couple of big features in this version:
Updated object service
I've been putting off some updates to the object service for a while, and here they are. The end user won't really notice anything, but there are few new things:
- New routes
/v1/objects/getobjectimageswill return a zip file of decoded images for the object you asked for. Handy for websites so they don't have to write a client-side image decoding library!/v1/scenarios/list- the start of the scenario service. For now it just lists the vanilla scenarios I placed in the folder, but in the future this will be fleshed out into a usable way to download scenarios and scenario packs.
- API versioning - an experiment to see if adding versions helps to reduce downtime to service consumers, which are going to be websites built off the service. If I change the service, I don't want to immediately break all the websites, so adding in versions is a way for downstream consumers to update at their leisure. Maybe this is overkill for a hobby project, but it feels like the right thing to work towards.
- Preliminary support for all locomotion files and for object packs and scenario packs. Whilst not exposed to the client, the backend side (database schema, server code, etc) are all in place to allow grouping of objects and scenarios into packs that the user can create and distribute. The only limiting thing here is actually the editor - I haven't added code to let users create these packs! I also haven't let users edit any of the existing metadata (eg author, tags, license, etc) but this is nearing completion and will be available soon!
DAT encoding
Prior to this, the editor would only save dat/g1 files in uncompressed format. This wasn't really an issue, but it does bloat the file size if the object contains a lot of easily-compressible graphics data. With this release, I've implemented the methods to encode the G1/graphics table, as well as all the DAT encoding methods (RunLengthSingle, RunLengthMulti and Rotate). This means you can now save objects in the exact same format as they originally came in!
This feature itself isn't that big, but as part of this work I added a lot of unit tests and fixed all the existing unit tests for loading and saving objects, and there were a lot of bugs, so many such that I'm surprised openloco even loaded some of the objects the editor made. One example is the 2nd last image in G1.dat just failing to save at all. But having fixed all these, I'm now much more confident in the correctness of the editor, and all that remains in this department is to add proper testing to the UI-to-DAT conversion code.
- Support for all encoding methods, by @LeftofZen in #152
Tabbed document view
Previously the editor only let you view one object at a time. Viewing a new object closed the old view. No more! Now you can view as many objects at once as you like view the tabbed browser.
- Add tabbed viewmodel to browse multiple files by @LeftofZen in #154
Indexing optimisation
One big feature I want to add is the ability to properly search all fields of all objects. However this requires all those fields being loaded in memory, in a database, or similar; just anything other than encoded in DAT format, which is unsearchable. However to decode all of those objects takes a long time currently, and whilst there is plenty of optimisation to go still, I've done another round and you should now see indexing of all 31k custom objects take around 10 seconds (at least on my 5 year old computer!), which is considerably faster than the previous version. These speed increases work towards making it feasible to decode the entire object, for all objects, in a reasonable time.
There were also some bugfixes here to prevent obnoxious re-indexing when starting up the editor if you had faulty/bad objects in your objData folder. Previously a single bad object would trigger a re-index of everything, which just wasn't necessary.
- Index optimisation, by @LeftofZen in 1caa38d
Misc
- Added a very basic Tutorial viewmodel that simply loads the file and groups the data by my best guess at the 'command' the tutorial wants to perform, by @LeftofZen in #153
- Fixed a bug that meant savegames loaded but scenarios did not load. Now, you can load both!
- Update the codebase to .NET 9, by @LeftofZen in #158
- Backend work to allow proper searching for objects by arbitrary properties (eg DesignedYear, Author, etc)
- Updated some of the dat object type icons, by @LeftofZen in 5b5ca6e
- Multiple bug fixes to loading/displaying scenarios, by @LeftofZen in 99fb2b5, d6bbdf3, 0636126. You should now be able to view all scenarios, even if just partially, and they shouldn't crash the editor either.
Full Changelog: 3.10.1...4.0.0
Object Editor 3.10.1
What's Changed
Bug Fixes
- Fix crash when parsing version number when starting up the editor, by @LeftofZen in aa0f465
Full Changelog: 3.10.0...3.10.1
Object Editor 3.10.0
What's Changed
Features
- Display tile element map by @LeftofZen in #151
- Allow individual image replacement, from #141, by @LeftofZen in 3ebe3e6
Bug Fixes
- Fix object index repeated reindexing by @LeftofZen in #148
- Fix changes from UI for Building and Airport not being copied back to the DAT object, by @LeftofZen in f3ff1b0
- Fix crash when clicking the "Delete" button twice in a row, from #147, by @LeftofZen in cac40e4
Full Changelog: 3.9.0...3.10
ObjectEditor 3.9.0
What's Changed
- Fixed a couple of issues with async tasks making the UI unusable/incorrect, by @LeftofZen in 793c456
- Added a
Deletebutton to local object views, allowing them to be deleted from disk. Note: there is no confirmation dialogue box for this! I'll add one in future, but you've been warned! Requested by Discord user EmperorDarthSidious. By @LeftofZen in 70e81c5 - Allow saving objects as
Vanilla. This technically shouldn't be allowed but it works around an annoying DAT requirement where dependent objects need checksums if linking to a custom object, which proliferates duplicate objects like the TRACKST.dat issue. You'll need to toggle this on in the settings first though. I'm sorry in advance @duncanspumpkin. By @LeftofZen in #142 - Fix multiple issues with vehicle sounds not saving correctly. This was only possible by Discord user BigSauce reporting these and debugging with me - thanks!
Viewmodels
As mentioned in https://github.com/OpenLoco/ObjectEditor/releases/tag/3.8.0, Viewmodels are how the UI interacts with the actual data for DAT objects. Long story short - I've implemented the last of the necessary ones! This means all object types should be able to have all fields edited! In this release the specific viewmodels added were:
- Track and TrainStation: 97860ca
- Region: 758a43e
- StreetLight, TrainSignal: 65e2798
- Climate: 1effec1
- Steam, Road, RoadStation: d722ffc
Full Changelog: 3.8.1...3..9.0
Future
I figured a "what's in the pipeline" section could be interesting to a few people, so here are the things that have all been worked on recently but are not yet complete - may or may not make it into the next release:
Better dependent object support:
- Copying lists of dependent objects between regions/scenarios/saves, and populating them from a folder of objects (#145, #146)
- Show better info for them in UI (#140)
- Better search/edit/find (#146
Object service
- Full scenario support (upload/download) (#111)
- Allow editing of data in the service (so people can start updating tags, adding metadata, etc)
- To facilitate this, adding 'user accounts' so people can 'register' as authors/editors. We don't want any old person to be able to edit this data
Misc
- Object encoding - currently the editor only saves objects in "no encoding" format, which makes them bigger in filesize and also not binary-equal with the original object, so it is very hard to write unit tests to check if the load/save works correctly. Adding in the encoding methods and g1 encoding will mean the editor can save objects as binary-equal to vanilla ones, making testing easier and file size smaller.
ObjectEditor 3.9.0 (beta2)
3.9.0-beta2 tag 3.9.0-beta2
ObjectEditor 3.9.0 (beta1)
Doing a quick release for BigSauce to test making bridges
Object Editor 3.8.1
What's Changed
Another release of shame. Lots of bug fixes in this one:
- Make the "Download" folder browser in the settings use a folder browser, not a file browser, by @LeftofZen in b604ff2
- Add ability to view/edit ProducedQuantity property on Building objects, by @LeftofZen in d07fa6c
- There exist a few annoying binding issues in Building and Airport objects, and these needed more manual adjustments to make them work as expected, by @LeftofZen in a261766
- Now that some objects have editable lists (even though the size may be fixed), a condition for the UI to work for this is the object type must have a default constructor. Some of these didn't exist, so I've added the missing ones for Building/Industry/Airport, which should prevent crashes here, by @LeftofZen in 1e8882e
Full Changelog: 3.8.0...3.8.1