fix: drag speed on pan
This commit is contained in:
+15
-1
@@ -82,6 +82,10 @@ func (e *client) renderRasterImage(viewportW, viewportH int, p world.RenderParam
|
||||
return image.NewRGBA(image.Rect(0, 0, 0, 0))
|
||||
}
|
||||
|
||||
// Keep the incoming zoom snapshot so we can safely sync corrected zoom back
|
||||
// to base params only when no newer zoom was written concurrently.
|
||||
inputZoom := p.CameraZoom
|
||||
|
||||
// Record current raster pixel size (used for event coordinate conversion).
|
||||
e.metaMu.Lock()
|
||||
e.lastRasterPxW = viewportW
|
||||
@@ -95,7 +99,17 @@ func (e *client) renderRasterImage(viewportW, viewportH int, p world.RenderParam
|
||||
p.MarginYPx = viewportH / 4
|
||||
|
||||
// Correct zoom for viewport/world constraints, and clamp camera for no-wrap.
|
||||
p.CameraZoom = e.world.CorrectCameraZoom(p.CameraZoom, viewportW, viewportH)
|
||||
correctedZoom := e.world.CorrectCameraZoom(inputZoom, viewportW, viewportH)
|
||||
p.CameraZoom = correctedZoom
|
||||
|
||||
// Sync corrected zoom to the canonical UI-facing params snapshot.
|
||||
// Guard prevents stale render snapshots from overwriting a newer zoom value
|
||||
// that may have been set by another UI event.
|
||||
e.mu.Lock()
|
||||
if e.wp.CameraZoom == inputZoom {
|
||||
e.wp.CameraZoom = correctedZoom
|
||||
}
|
||||
e.mu.Unlock()
|
||||
|
||||
// Ensure indexing is up-to-date when viewport size or zoom changes.
|
||||
zoomFp, err := p.CameraZoomFp()
|
||||
|
||||
Reference in New Issue
Block a user