Rewrite map rendering system with progressive materialization#78
Open
Senzaiken wants to merge 1 commit into
Open
Rewrite map rendering system with progressive materialization#78Senzaiken wants to merge 1 commit into
Senzaiken wants to merge 1 commit into
Conversation
… caching, and memory-aware safeguards
aa56ec3 to
730c1f5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Rewrites the map rendering pipeline so large maps stay smooth, and adds memory-aware safeguards so the editor degrades gracefully (instead of thrashing/OOMing) on machines that can't hold a whole map in RAM. No behavior change on machines with enough memory.
Draw batching (
MapRenderer)DrawCachedVertices) backed by a shared quad index buffer.Progressive block materialization (
MapManager)PreloadMapOnConnect) spirals outward when enabled.Region render caching (low zoom)
Selection buffer
Misc
LandObject.AverageZis computed once instead of per call.RadarMappooled-buffer leak, aStaticsManagerbounds off-by-one, and ghost-tile cleanup on undo/redo/tool-end.On connect, the map size is compared against available RAM (
GC.GetGCMemoryInfo) to pick behavior. All three tiers are no-ops when the map comfortably fits:On a low-RAM machine the managed heap stays bounded and zoom-out clamps, instead of climbing toward an out-of-memory crash.