-
Notifications
You must be signed in to change notification settings - Fork 178
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Created vehicle tuning GUI using new .addonpart mod type #3096
Created vehicle tuning GUI using new .addonpart mod type #3096
Commits on Dec 16, 2023
-
Renamed
GenericDocReader
toGenericDocContext
Just find&replace, no code changes. This is prepwork for making the GenericDocument editable. Also 'Reader' commonly refers to the text file parser, so this should be clearer.
Configuration menu - View commit details
-
Copy full SHA for f68ed0b - Browse repository at this point
Copy the full SHA f68ed0bView commit details -
Codechange: Clarified
SE_ANGELSCRIPT_MANIPULATIONS
a bit.MANIP_ enum fields got renamed to ASMANIP_ to match C++ with AngelScript. Doxygen docs were added. Manip type 'UNLOADED' got renamed to 'UNLOADING' to signify it's delivered to all scripts, even the one to be unloaded.
Configuration menu - View commit details
-
Copy full SHA for 2ec264e - Browse repository at this point
Copy the full SHA 2ec264eView commit details -
✨
GenericDocument
is now editable.For a demo, type `loadscript example_GenericDoc_editor.as` to the ingame console. Then follow instructions on the menu bar.
Configuration menu - View commit details
-
Copy full SHA for eebe42a - Browse repository at this point
Copy the full SHA eebe42aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4002b54 - Browse repository at this point
Copy the full SHA 4002b54View commit details -
Configuration menu - View commit details
-
Copy full SHA for b79a514 - Browse repository at this point
Copy the full SHA b79a514View commit details -
🎆 ModCache entries are now
RefCountingObject<>
I've wanted to do this for a long time. In all prior versions, you must be in menu to update modcache, and it's synchronous (loading dialog). The single (stupid!) reason for this is that CacheEntry-ies are kept in a plan std::vector<CacheEntry> and actors have raw pointers to them (updating std::vector breaks raw pointers). If a cache entry was a RefCountingObject<>, we could simply flag them 'deleted' and insert new ones on-the-go, even in simulation. RepoUI could be used anytime. Minimum dev work, fantastic implications.
Configuration menu - View commit details
-
Copy full SHA for badee1b - Browse repository at this point
Copy the full SHA badee1bView commit details -
✉️ Added
MSG_EDI_CREATE_PROJECT_REQUESTED
`MSG_EDI_CREATE_PROJECT_REQUESTED` creates subdirectory in 'My Games\Rigs of Rods\projects', pre-populates it with files and adds modcache entry. New AngelScript API: global object `cache` of type CacheSystemClass, enum LoaderType for filtering when searching, class `CacheEntryClass`. See updated 'example_GenericDoc_editor.as' which uses both the new modcache API and the recently added GenericDocument editing API.
Configuration menu - View commit details
-
Copy full SHA for a30ace3 - Browse repository at this point
Copy the full SHA a30ace3View commit details -
* Second thought: CacheSystemClass global object is now `modcache` * ModCache regen now picks up the 'projects' directory * example_GenericDoc_editor.as now fixes up the project categoryID to 8990
Configuration menu - View commit details
-
Copy full SHA for d49ecfd - Browse repository at this point
Copy the full SHA d49ecfdView commit details -
Configuration menu - View commit details
-
Copy full SHA for cf79a7e - Browse repository at this point
Copy the full SHA cf79a7eView commit details -
👼Script: Added mod cache requests, events and queries.
New script API: * New ✉️ MSG_EDI_LOAD_BUNDLE_REQUESTED * New ✉️ MSG_EDI_UNLOAD_BUNDLE_REQUESTED * added script event `SE_GENERIC_MODCACHE_ACTIVITY` * added enum `modCacheActivityType` with fields _ADDED, _DELETED, _LOADED, _RELOADED, _UNLOADED * added function `modcache.getEntryByNumber(int)` * added function `modcache.query()` which takes a dictionary resembling `RoR::CacheQuery` and returns a dictionary with results. Query dictionary params:� - "search_expr" - searchstring, recognizes all advanced modes from MainSelectorUI like "author" - "filter_guid" - filter by exact match on GUID, used for skins/missions(WIP)/addonparts(WIP) - "filter_category_id" - filter by category. Special category Projects is 8990. Result dictionary params: - "count" (int64) - "entries" (array<CacheEntry@>) - "scores" (array<uint>) Codechanges: * GameScript::GetValueFromDict() was moved to ScriptUtils.h as `GetValueFromScriptDict()` * fixed bug in ScriptEngine methods unloadScript(), getScriptUnit(), scriptUnitExists() - when called with SCRIPTUNITID_INVALID, this value would get inserted as key to `m_script_units`.
Configuration menu - View commit details
-
Copy full SHA for 3c7926a - Browse repository at this point
Copy the full SHA 3c7926aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1046572 - Browse repository at this point
Copy the full SHA 1046572View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7e424bd - Browse repository at this point
Copy the full SHA 7e424bdView commit details -
Configuration menu - View commit details
-
Copy full SHA for da0311c - Browse repository at this point
Copy the full SHA da0311cView commit details -
Fixed headers causing "use of undefined
Actor
" all around. 🔧Headers should make do with forward decls and shouldn't `#include Actor.h` at all. This means no code (function body or even autogenerated ctor/dtor) which manipulates ActorPtr should be in header.
Configuration menu - View commit details
-
Copy full SHA for 12d62c7 - Browse repository at this point
Copy the full SHA 12d62c7View commit details -
STATUS: ALPHA! Glitchy, only adding a part works, the remove-button is dummy. This adds a new mod type "addonpart" (file pattern *.addonpart) which works as a partial truck file - when selected, it adds additional elements to it. Currently supported features are: managedmaterials, props, flexbodies. The point is to automate what users had to do manually before: https://docs.rigsofrods.org/tools-tutorials/addons/ The addon parts receive all usual treatment from modcache: they can have preview images, name + description are always displayed, they can be searched for, the MainSelectorUI can be opened in mode 'LT_AddonPart' to show only addon parts. In addition, the search can be filtered by a vehicle GUID, much like with SkinZips. This is an example addonpart (port of https://forum.rigsofrods.org/resources/heavy-bumper-for-the-chevy-k3500.461/): ``` addonpart_name "Heavy Bumper for the Chevy K3500 (Prop, Black)" addonpart_description "For use with GMT400 88-98 Chevy Truck Pack" ;addonpart_guid <guid> ~ multiple GUIDs can be specified addonpart_guid 057b21c8-cb54-496d-88ce-4855a8d6d43d ; * 1990 Chevy 454ss, * 1990 Chevy k3500 * 1990 Chevy K3500HD addonpart_guid 6a53ad83-255d-4d5e-bf14-ca0714e5228d ; * 1990 Chevy k2500 Blazer, -SAS, -Suburban managedmaterials CHeavyBumper mesh_standard HeavyBumper.dds HeavyBumper_s.dds props 39, 62, 34, 0.50, 0.32, -0.5, 0, 180, 180, CHeavyBumper.mesh ``` There's a new menu in TopMenubarUI: "Tuning". It lists already installed addonparts and contains [add parts] button which opens MainSelectorUI in 'LT_AddonPart' mode, with GUID filtering for the current vehicle. To remember what addonparts user selected, an additional mod type was added: "tuneup" (file pattern *.tuneup) - this works like ".skin for addonparts" and has intentionally similar syntax. There are 2 power tools: * "use_addonpart <filename>" to install an addonpart on the vehicle (multiple can be used!) * "remove_prop <meshname>" to strip an existing prop from the vehicle. Note: An option to replace prop was intentionally not implemented because that would be a duplicate feature with addonparts. It's up to user to remove props if and only if they don't want them together with new parts. When user uses addonpart with a vehicle for the first time, the game creates a .tuneup file for it in {Documents\My Games\Rigs of Rods\projects\}. When spawning the vehicle next time, the .tuneup is loaded automatically. In the future the menu will be able to save custom tuneups. Here's an example: ``` Tuned 1990 Chevy 454ss { use_addonpart = CHeavyBumperBlackProp.addonpart preview = description = author_name = ohlidalp author_id = -1 category_id = 8100 guid = 057b21c8-cb54-496d-88ce-4855a8d6d43d } ``` Under the hood, applying the addonparts to the vehicle works entirely in system memory, no truck files are modified or written. * "use_addonpart" works by literally introducing a fake 'section/end_section' to the truck file parsed in memory - see `class RigDef::File::Module` and function `ActorSpawner::ConfigureAddonParts()` for details. * "remove_prop" works as last-minute check in `ActorSpawner::ProcessProp()`, skipping props which are blacklisted.
Configuration menu - View commit details
-
Copy full SHA for 4f0ad8d - Browse repository at this point
Copy the full SHA 4f0ad8dView commit details -
✉️
MSG_EDI_MODIFY_PROJECT_REQUESTED
and UI.This EDI message now hosts all tuneup edits. See enum `ModifyProjectRequestType` in CacheSystem.h. The ActorModifyRequest types INSTALL/REMOVE_ADDONPART_AND_RELOAD were replaced by ModifyProjectRequest types TUNEUP_USE_ADDONPART_SET/RESET. The TopMenubar/Tuning UI now has list of props with checkboxes to toggle them. The toggle immediatelly modifies the tuneup and respawns the actor. All tuneup edit types are handled by `CacheSystem::ModifyProject()`. The code was moved from `GameContext::ModifyActor()`;
Configuration menu - View commit details
-
Copy full SHA for f246d07 - Browse repository at this point
Copy the full SHA f246d07View commit details -
Configuration menu - View commit details
-
Copy full SHA for e5e53eb - Browse repository at this point
Copy the full SHA e5e53ebView commit details -
Configuration menu - View commit details
-
Copy full SHA for e4d4718 - Browse repository at this point
Copy the full SHA e4d4718View commit details -
Configuration menu - View commit details
-
Copy full SHA for dc9fb83 - Browse repository at this point
Copy the full SHA dc9fb83View commit details -
Configuration menu - View commit details
-
Copy full SHA for cc57ae9 - Browse repository at this point
Copy the full SHA cc57ae9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 77cf801 - Browse repository at this point
Copy the full SHA 77cf801View commit details -
Configuration menu - View commit details
-
Copy full SHA for e1f619b - Browse repository at this point
Copy the full SHA e1f619bView commit details -
Configuration menu - View commit details
-
Copy full SHA for bf91e78 - Browse repository at this point
Copy the full SHA bf91e78View commit details -
Tuning: added 'unwanted' to addons and 'protected' to tuneups.
The .addonpart file can now specify "unwanted" props or flexbodies, to simulate swapping of parts. Under the hood, this works by adding the mesh names to "remove" lists, same as if user disabled them from top menu. Example addonpart: ``` ; Add the stock bumpers to 'tuneup.removed_flexbodies' unless user added it to 'tuneup.protected_flexbodies' first. addonpart_unwanted_flexbody "K3500_FBump.mesh" addonpart_unwanted_flexbody "454ss_FBump.mesh"�```� The .tuneup file now contains lists of "protected" props and flexbodies which cannot be removed by the addonpart and remain "removed" or not as the user wishes. This lets user force default meshes to be kept or addonpart meshes to not be added (may be useful if the addonpart specifies multiple meshes). Example of protected entry in .tuneup file: ``` protected_flexbody = 454ss_FBump.mesh protected_flexbody = K3500_FBump.mesh ```
Configuration menu - View commit details
-
Copy full SHA for d22b653 - Browse repository at this point
Copy the full SHA d22b653View commit details -
🎮 Added node & wheel tweaks to .addonpart system.
There are 2 new directives in the addonpart format: * `addonpart_tweak_node <nodenum> <posX> <posY> <posZ>` * `addonpart_tweak_wheel <wheel ID> <rim mesh> <tire radius> <rim radius>`
Configuration menu - View commit details
-
Copy full SHA for eb78eb6 - Browse repository at this point
Copy the full SHA eb78eb6View commit details -
Tuning: rim mesh addonparts now work OK.
Changed addonpart syntax: 'addonpart_tweak_wheel <wheel ID> <media1> <media2> <side flag> <tire radius> <rim radius>' media1 = required ('wheels[2]': face material, 'meshwheels[2]/flexbodywheels': rim mesh) media2 = optional ('wheels[2]': band material, 'meshwheels[2]/flexbodywheels': tire material) Known glitch: when you enable and then disable the addonpart with custom meshwheel2 rims, they still show up but in bright magenta (managedmaterials error indicator color). Code changes: * Added `WheelID_t` to ForwardDeclarations.h, using everywhere in ActorSpawner.cpp * AddonPartFileFormat.cpp - parse new format * TuneupFileFormat.cpp - separate media 1/2 funcs unified; added `getTweakedWheelMediaRG()`
Configuration menu - View commit details
-
Copy full SHA for 30674d1 - Browse repository at this point
Copy the full SHA 30674d1View commit details -
Configuration menu - View commit details
-
Copy full SHA for ce39e5d - Browse repository at this point
Copy the full SHA ce39e5dView commit details -
Tuning: Added prop/flexbody tweaks, UI now displays IDs.
Feature changes: * .tuneup file format: To make things consistent, I changed the removed/protected system of props and flexbodies to use IDs (depending on order of definition in truckfile) rather than mesh names, as those can be ambiguous (used more than once) and wheels cannot use this approach at all. This is a backwards-incompatible change to the .tuneup format. * Because some special props (dashboard, beacon) can have extra resource (dirwheel mesh / beaconflare mat), I used the same "Media 1&2" system like in wheels. * I fixed the bug from previous commit where the prop/flexbody checkbox would have no effect (the vehicle would reload but the checkbox would revert) until you checked the "protected" mini-checkbox first. Now the big checkbox also automatically checks the small checkbox, to stop evaluating addonparts for the element (which would undo user's selection). * Actor spawning: I changed how game treats props/flexbodies disabled via tuneup/addonpart: instead of leaving them out, they're now kept as placehoders without media loaded. This simplifies Tuning UI and traversal. * Flexbodywheels: Instead of generating whole meshwheel (with tire submesh made transparent by "track/trans"), only a separate rim mesh is loaded. This should improve FPS and also declutter the code. Code changes: * GameContext.cpp - fixed debug assert when using `ChainMessage()` without doing `PushMessage()` first. * ForwardDeclarations.h - added `WheelID_t` and `FlexbodyID_t` for clarity. Consistent with node ID system (and other element system in dev branches). * GfxData.h - struct Prop - added ID and media 1+2, also codedoc about tuneup/addonpart modifications. * GUI_TopMenubar: Added IDs to the prop/flexbody listings. Updated the prop/flexbody checkboxes to also set "protected" state. * GUI_FlexbodyDebug: fixed crash on meshes disabled via tuneup/addonpart. * ActorSpawner: All `XXXWheelVisuals()` builder functions updted to handle tweaked params. I no longer pass the "def" objects around, just the individual params. * ActorSpawner.cpp: added tweak support. Shortened node lookup code by using `GetNodeIndexOrThrow()`. Added placeholders for props/flexbodies removed by tuneup. `CreateFlexBodyWheelVisuals()` no longer calls `BuildMeshWheelVisuals()` but creates the rim entity itself and simply omits the "track/trans"-ized tire submesh. * FlexBody: updated to accept tweaked parameters and to be able to exist as placeholder without geometry loaded. * FlexFactory: updated to accept tweaked parameters * Tuneup file format: added structs TuneupPropTweak and TuneupFlexbodyTweak. "protected" and "removed" arrays now use IDs (int) instead of mesh names (string). Added lots of new `getTweakedXXX()` helpers * AddonPartFileFormat: fixed `ResetUnwantedAndTweakedElements()` not respecting the "protected" state. "protected" and "removed" arrays now use IDs (int) instead of mesh names (string).
Configuration menu - View commit details
-
Copy full SHA for 8adb666 - Browse repository at this point
Copy the full SHA 8adb666View commit details -
Tuning: fixups of prop/flexbody tweaks.
Code changes: * TuneupFileFormat: just renamed `Xrot` to `Xrotation` * CacheSystem.cpp: Fixed protected elements not being reset with Reset btn. * AddonPartFileFormat: Fixed `addonpart_tweak_prop/_flexbody` not being parsed at all. * FlexBody, FlexFactory: added 'orig mesh name' field to flexbody, for UIs. * ActorSpawner: Pass ID and orig mesh name to placeholder-flexbody. * GfxActor: fixed crash when rendering actor with a flexbody removed via tuneup/addonpart. The problem was `FinishFlexbodyTasks()` processing placeholder flexbodies. Now using `isVisible()`.
Configuration menu - View commit details
-
Copy full SHA for 44a783b - Browse repository at this point
Copy the full SHA 44a783bView commit details -
Tuning: added ability to flip rim meshes via UI
Codechanges: * enum `WheelSide` moved from RigDef_File.h (namespace RigDef) to GfxData.h (namespace RoR) * GfxActor.cpp - SetWheelsVisible() - removed redundant code, rim entity visibility is already handed in FlexMeshWheel::setVisible() * GfxData.h - added wheel ID, side and redundant mesh name to struct WheelGfx * GUI_TopMenubar.cpp - fixed prop/flexbody counts, added wheels code. * ActorSpawner: Unified all wheel-visual setup func names to Create*, always passing wheel side as WheelSide. In `CreateFlexBodyWheelVisuals()`, reverted code to use CreateMeshWheelVisuals() again as the setup was incomplete and the rim wouldn't be updated at all. * CacheSystem: added FORCED_WHEEL_SET/RESET actions to ModifyProjectRequest. * TuneupFileFormat: fixed `getTweakedWheelSide()` not querying the UI overrides.
Configuration menu - View commit details
-
Copy full SHA for 4aa5fa7 - Browse repository at this point
Copy the full SHA 4aa5fa7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2e44acf - Browse repository at this point
Copy the full SHA 2e44acfView commit details -
* GUIUtils.cpp - fixed ImButtonHoldToConfirm() not reacting to first press in game session. * GUI_TopMenubar.cpp - fixed crash when tuning is disabled * FlexBody.cpp - fixed crash hazzard when flexbody is removed via UI or AddonPar - reported by Mike on Discord. * AddonPartFileFormat.cpp - reset tweak data every time - fixes Reload button (under addonparts section) having no effect. * CacheSystem - properly unload all cached documents (skin/truckfile/addonpart) when reloading cache entry. * TuneupFileFormat.h - codedoc * TuneupFileFormat.cpp - fixed 'wheel_forced_side' not saved to/loaded from .tuneup file.
Configuration menu - View commit details
-
Copy full SHA for 288d8f2 - Browse repository at this point
Copy the full SHA 288d8f2View commit details -
Tuning: improved UI overrides, separated from tuneups/unwants.
All the UI overrides are now separate from any addonpart changes (tweaks or 'unwanted_*'). The 'protected' checkbox on the right just blocks addonpart changes, but isn't necessary for the UI overrides anymore. When you make an UI override, the respective widget will be outlined orange and a 'reset' button will be drawn. Internally, the UI overrides are called "force_*something*". CAUTION: Top menubar Tuning menu is only corrected for flexbodies, not props yet! Codechanges: * TuneupFileFormat.h: replaced shared 'remove_props/flexbodies' by dual 'unwanted_*' and 'force_remove_*'. Added helper funcs. * TuneupFileFormat.cpp: Updated parsing + exporting code. * CacheSystem.h: `enum ModifyProjectRequestType`: REMOVE fields renamed to FORCEREMOVE. `struct ModifyProjectRequest`: removed hacky field `mpr_subject_set_protected`. Added func `LoadSupplementaryDocuments()` * CacheSystem.cpp: updated and cleaned up `ModifyProject()` as the `mpr_subject_set_protected` hack isn't needed anymore. * AddonPartFileFormat.cpp: updated to set/reset `unwanted_` fields - cleaner. * GUI_TopMenubar.cpp - updated UI to signify overrided elements.
Configuration menu - View commit details
-
Copy full SHA for 7cd9ce8 - Browse repository at this point
Copy the full SHA 7cd9ce8View commit details -
Tuneup: fixed known bugs of new UI overrides.
codechanges: * GUI_TopMenubar.h: new function `DrawTuningForceRemoveControls()` - helper for both props and flexbodies. * GUI_TopMenubar.cpp - use `DrawTuningForceRemoveControls()` for both props and flexbodies. * ActorSpawner.cpp - renamed func. * TuneupFileFormat.h - nicer doxy groups, renamed `isFooRemoved()` to `isFooAnyhowRemoved()` because it now looks at both 'unwanted_' and 'force_removed' * TuneupFileFormat.cpp - isFooAnyhowRemoved()` funcs updated to look at both 'unwanted_' and 'force_removed'
Configuration menu - View commit details
-
Copy full SHA for 7ab07b7 - Browse repository at this point
Copy the full SHA 7ab07b7View commit details -
Tuning: Fixed broken flexbodywheels
I give up on understanding why the offset and rotation works differently now...
Configuration menu - View commit details
-
Copy full SHA for 887c8d5 - Browse repository at this point
Copy the full SHA 887c8d5View commit details
Commits on Dec 17, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 56927a5 - Browse repository at this point
Copy the full SHA 56927a5View commit details
Commits on Dec 31, 2023
-
Tuning: Fixed crash during manual cache regen.
Reported by CuriousMike: "load map, spawn any vehicle, go back to main menu, click settings -> general -> update cache". Fixed by introducing a rule "we just always load subdirs as 'writable', even during modcache update."
Configuration menu - View commit details
-
Copy full SHA for 5870b93 - Browse repository at this point
Copy the full SHA 5870b93View commit details -
GenericDocument: fixed last token not being flushed
an older bug that Mike reported and I didn't note down: "if the last character in .addonpart file isn't a whitespace (space, tab or linebreak), the last token is skipped. For example, if last line is `addonpart_tweak_wheel 3 "myfacemat" "" n 0.2`, the custom facemat applies but the radius '0.2' doesn't."
Configuration menu - View commit details
-
Copy full SHA for 42b9a85 - Browse repository at this point
Copy the full SHA 42b9a85View commit details -
Tuning: fixed tire radius not applying if rim radius not set
I fixed the 'addonpart_tweak_wheel tire radius won't apply if rim radius value is missing' bug
Configuration menu - View commit details
-
Copy full SHA for b4e6299 - Browse repository at this point
Copy the full SHA b4e6299View commit details
Commits on Jan 9, 2024
-
Tuning: fixed mesh RG of props/flexbodies in .addonpart
Problem: if addonpart defines new prop or flexbody, the meshes are still searched in the mod's resource group. This is because the new elements are added as extra 'section' (Module) to the RigDef::Document so they're treated as any other. Solution: add a `_mesh_rg_override` string field to RigDef::Prop/Flexbody (in RigDef_File.h) and make ActorSpawner respect it.
Configuration menu - View commit details
-
Copy full SHA for 6e0bc5f - Browse repository at this point
Copy the full SHA 6e0bc5fView commit details -
Tuning: fixed
forset
not being processed.`Parser::ProcessForsetLine()` puts the node ranges to `node_list_to_import`. Normally `SequentialImporter::ResolveFlexbodyForset()` handles the resolution but that only works when parsing the actual truckfile, not when programmatically injecting further elements.
Configuration menu - View commit details
-
Copy full SHA for a9addb3 - Browse repository at this point
Copy the full SHA a9addb3View commit details
Commits on Jan 11, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 4b51b17 - Browse repository at this point
Copy the full SHA 4b51b17View commit details -
Configuration menu - View commit details
-
Copy full SHA for 80973b8 - Browse repository at this point
Copy the full SHA 80973b8View commit details
Commits on Jan 22, 2024
-
Tuneup: added savegame support, dropped autoloading.
This required an internal overhaul as the 'working tuneup' is no longer a CacheEntry (common to all instances of the given mod), but an individual TuneupDef instance (specific to each spawned actor). SIGNIFFICANT CODE CHANGES: * Actor.h - Replaced `CacheEntryPtr m_used_tuneup_entry;` with `TuneupDefPtr m_working_tuneup_def;` * TuneupFileFormat: added `isFooTweaked()` helpers (where Foo is Prop/Wheel etc...) used by all specific `getTweaked*()` helpers. * Savegame.cpp - Added a "tuneup_document" field to actor entries, carrying the entire .tuneup file content. * CacheSystem: only user-saved tuneups are now placed to modcache, the working tuneups are just in memory.
Configuration menu - View commit details
-
Copy full SHA for cf9ff5b - Browse repository at this point
Copy the full SHA cf9ff5bView commit details
Commits on Jan 24, 2024
-
Tuning: fixed savegames not loading correctly
Problem1 = .tuneup with empty name-line breaks parsing. Fixed in Actor.cpp Problem2 = the addonpart bundles didn't get always loaded. Fixed in ActorSpawner.cpp
Configuration menu - View commit details
-
Copy full SHA for 8e94942 - Browse repository at this point
Copy the full SHA 8e94942View commit details
Commits on Jan 29, 2024
-
Configuration menu - View commit details
-
Copy full SHA for c57ece0 - Browse repository at this point
Copy the full SHA c57ece0View commit details
Commits on Feb 3, 2024
-
Tuning: Fixed glitches of
ImButtonHoldToConfirm()
Added tracking of active button ID - that way multiple buttons on same window don't interfere by resetting it's timer.
Configuration menu - View commit details
-
Copy full SHA for aa030de - Browse repository at this point
Copy the full SHA aa030deView commit details -
Configuration menu - View commit details
-
Copy full SHA for aa790b0 - Browse repository at this point
Copy the full SHA aa790b0View commit details
Commits on Feb 4, 2024
-
Tuning: Kill switch
app_tuning_enabled
moved to GameSettings UI.When disabled, the Tuning menu in TopMenubar UI doesn't appear at all and any attempt to use a tuneup (via scripting or in savegame) will be ignored.
Configuration menu - View commit details
-
Copy full SHA for 5e95e38 - Browse repository at this point
Copy the full SHA 5e95e38View commit details -
Configuration menu - View commit details
-
Copy full SHA for 515e8f6 - Browse repository at this point
Copy the full SHA 515e8f6View commit details -
Configuration menu - View commit details
-
Copy full SHA for ec31a58 - Browse repository at this point
Copy the full SHA ec31a58View commit details -
Tuning: fixed props loading from wrong ZIP
Caused by a copypaste derp.
Configuration menu - View commit details
-
Copy full SHA for a4e9e67 - Browse repository at this point
Copy the full SHA a4e9e67View commit details -
Configuration menu - View commit details
-
Copy full SHA for c929660 - Browse repository at this point
Copy the full SHA c929660View commit details -
Tuning: fixed crash when saving tuneup before it's created.
Problem: Initially the TuneupDef object was always present, but in recent commits it's just created when actually applying some tuning. The saving logic was not updated, though, so saving early caused crash. Fix: The UI was updated to only show the [SaveAs...] button when the TuneupDef already exists. UI improvement: the [Reset] button now removes the TuneupDef object instead of just resetting it, so the UI returns to initial state, clearly indicating there are no changes to be saved anymore.
Configuration menu - View commit details
-
Copy full SHA for 166477c - Browse repository at this point
Copy the full SHA 166477cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 002c05c - Browse repository at this point
Copy the full SHA 002c05cView commit details