Fixed caching of new WorldData locations #2586
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Before the change, the logic for whether to cache the result of
WorldDataReplacement.GetDFRegionAdditionalLocationData
was as follows:AddLocationToRegion
pretty much always returns true. Therefore, if we have any loose files,success
is assigned true in the first loop, and the second loop will dosuccess = true & true
, andsuccess
will stay true.If we do not have any loose files,
success
stays false, and the second loop will dosuccess = false & true
, makingsuccess
false.This means setups where a region has new locations in packed mods but not locations in loose files always fail to cache the result, resulting in poor performance and log spam. This process is called each time a map pixel is loaded.
How to repro:
betony restored.dfmod
in a release build (editor builds never cache results, so that doesn't change)locationnew-*-19.json
(new betony locations)With this change, I changed the logic to
We still only cache if no errors occur in the process, but at least we don't need to go through loose files to start as true.