adding mouse operations
This commit is contained in:
parent
a1bbfa3020
commit
4c817d7c20
|
@ -33,6 +33,32 @@ func (w *Window) MousePosition() pixel.Vec {
|
||||||
return w.currInp.mouse
|
return w.currInp.mouse
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MousePreviousPosition returns the previous mouse position in the Window's Bounds.
|
||||||
|
func (w *Window) MousePreviousPosition() pixel.Vec {
|
||||||
|
return w.prevInp.mouse
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMousePosition positions the mouse cursor anywhere within the Window's Bounds.
|
||||||
|
func (w *Window) SetMousePosition(v pixel.Vec) {
|
||||||
|
mainthread.Call(func() {
|
||||||
|
if (v.X >= 0 && v.X <= w.bounds.W()) &&
|
||||||
|
(v.Y >= 0 && v.Y <= w.bounds.H()) {
|
||||||
|
w.window.SetCursorPos(
|
||||||
|
v.X+w.bounds.Min.X,
|
||||||
|
(w.bounds.H()-v.Y)+w.bounds.Min.Y,
|
||||||
|
)
|
||||||
|
w.prevInp.mouse = v
|
||||||
|
w.currInp.mouse = v
|
||||||
|
w.tempInp.mouse = v
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// MouseEntered returns true if the mouse position is within the Window's Bounds.
|
||||||
|
func (w *Window) MouseEntered() bool {
|
||||||
|
return w.cursorEntered
|
||||||
|
}
|
||||||
|
|
||||||
// MouseScroll returns the mouse scroll amount (in both axes) since the last call to Window.Update.
|
// MouseScroll returns the mouse scroll amount (in both axes) since the last call to Window.Update.
|
||||||
func (w *Window) MouseScroll() pixel.Vec {
|
func (w *Window) MouseScroll() pixel.Vec {
|
||||||
return w.currInp.scroll
|
return w.currInp.scroll
|
||||||
|
@ -354,6 +380,10 @@ func (w *Window) initInput() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
w.window.SetCursorEnterCallback(func(_ *glfw.Window, entered bool) {
|
||||||
|
w.cursorEntered = entered
|
||||||
|
})
|
||||||
|
|
||||||
w.window.SetCursorPosCallback(func(_ *glfw.Window, x, y float64) {
|
w.window.SetCursorPosCallback(func(_ *glfw.Window, x, y float64) {
|
||||||
w.tempInp.mouse = pixel.V(
|
w.tempInp.mouse = pixel.V(
|
||||||
x+w.bounds.Min.X,
|
x+w.bounds.Min.X,
|
||||||
|
|
|
@ -59,6 +59,7 @@ type Window struct {
|
||||||
canvas *Canvas
|
canvas *Canvas
|
||||||
vsync bool
|
vsync bool
|
||||||
cursorVisible bool
|
cursorVisible bool
|
||||||
|
cursorEntered bool
|
||||||
|
|
||||||
// need to save these to correctly restore a fullscreen window
|
// need to save these to correctly restore a fullscreen window
|
||||||
restore struct {
|
restore struct {
|
||||||
|
|
Loading…
Reference in New Issue