73f6b26f4db94feaa052a5fdaec532dc2363fd3c
Five caches under the density path were keyed on ChunkCoord (or an XY box) alone. After RebuildStrates or an editor live edit, StrateManager rebuilds the layout and bumps PassagesVersion, but a pooled worker whose cache is still warm for the chunk it is asked to regenerate skips the refetch and generates with the OLD params. RegenerateAllChunks reloads the same tile coords, often on the same workers, so this is likely rather than exotic. Symptom: "I tweaked the strate asset, regenerated, and one patch kept the old shape." Fixed: - CP_* in GetDensityAt (the archetype params + biome context) - OC_* in GetSurfaceHeightAt (the height oracle) - BM_* in GetBiomeMaterialAt (per-vertex palette) - TC_BiomeCache in ClassifyTile (survives across calls) - GSurfColCache boxes (see below) Two things beyond what the audit listed: 1. GSurfColCache. Its key is (XY box, StrateKey, Seed) where StrateKey is round(StrateBottomWorldZ). A live edit that changes terrain params WITHOUT moving the strate — noise frequency, mountain strength, a biome — leaves that key identical and serves stale columns down the whole vertical stack. This is the most visible form of the bug, so LayoutVersion joins the box key. 2. FChunkBiomeCache validity is a world-XY box, which says nothing about the FBiomeContext its cells were classified against. Refetching the context without invalidating the grid would leave the fix half-done, so the four caches call the new FChunkBiomeCache::Invalidate() on a version change. No behavioural change at a static layout: the version only moves on Initialize. UNVERIFIED: not compiled, not run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
Languages
C++
97.6%
C
2.3%
C#
0.1%