diff --git a/pkg/uix/canvas_editable.go b/pkg/uix/canvas_editable.go index 51370b9..85dc527 100644 --- a/pkg/uix/canvas_editable.go +++ b/pkg/uix/canvas_editable.go @@ -300,6 +300,8 @@ func (w *Canvas) loopEditable(ev *event.State) error { // See if any of the actors are below the mouse cursor. var WP = w.WorldIndexAt(cursor) + // log.Debug("ActorTool, cursor=%s WP=%s zoom=%d P=%s", cursor, WP, w.Zoom, ui.AbsolutePosition(w)) + var deleteActors = []*level.Actor{} for _, actor := range w.actors { box := render.Rect{ diff --git a/pkg/uix/canvas_present.go b/pkg/uix/canvas_present.go index 57f4681..82b1b99 100644 --- a/pkg/uix/canvas_present.go +++ b/pkg/uix/canvas_present.go @@ -44,6 +44,10 @@ func (w *Canvas) Present(e render.Engine, p render.Point) { // TODO: seems unstable as shit on Zoom In?? Viewport.W = w.ZoomDivide(Viewport.W) Viewport.H = w.ZoomDivide(Viewport.W) + if w.Zoom > 0 { + Viewport.X = w.ZoomDivide(w.chunks.Size) + Viewport.Y = w.ZoomDivide(w.chunks.Size) + } } // Disappearing chunks issue: @@ -70,10 +74,9 @@ func (w *Canvas) Present(e render.Engine, p render.Point) { // Grow the viewport's X and Y offsets back the other // way, so chunks sliding off the screen don't unload early. // This kinda thing makes no difference at all? - // var orig = render.NewPoint(Viewport.X, Viewport.Y) - // Viewport.X -= 256 //w.ZoomMultiply(w.chunks.Size) - // Viewport.Y -= 256 //w.ZoomMultiply(w.chunks.Size) - // log.Info("Viewport: %s was: %s", Viewport, orig) + // var orig = Viewport + // Viewport.X = w.ZoomDivide(w.chunks.Size) + // Viewport.Y = w.ZoomDivide(w.chunks.Size) } // Get the chunks in the viewport and cache their textures. diff --git a/pkg/uix/canvas_scrolling.go b/pkg/uix/canvas_scrolling.go index ee388c8..ae59611 100644 --- a/pkg/uix/canvas_scrolling.go +++ b/pkg/uix/canvas_scrolling.go @@ -87,14 +87,17 @@ func (w *Canvas) loopConstrainScroll() error { mw = int(w.wallpaper.maxWidth) mh = int(w.wallpaper.maxHeight) Viewport = w.Viewport() + vw = w.ZoomDivide(Viewport.W) + vh = w.ZoomDivide(Viewport.H) ) - if Viewport.W > mw { - delta := Viewport.W - mw + + if vw > mw { + delta := vw - mw w.Scroll.X += delta capped = true } - if Viewport.H > mh { - delta := Viewport.H - mh + if vh > mh { + delta := vh - mh w.Scroll.Y += delta capped = true }