Skip to content
Snippets Groups Projects
Commit 65e1212b authored by Alexander Rose's avatar Alexander Rose
Browse files

wip, focusZoom action

parent 47136c8b
No related branches found
No related tags found
No related merge requests found
......@@ -14,17 +14,20 @@ export interface Bindings {
rotate: Bindings.Trigger
rotateZ: Bindings.Trigger
pan: Bindings.Trigger
focus: Bindings.Trigger
zoom: Bindings.Trigger
focus: Bindings.Trigger
focusZoom: Bindings.Trigger
},
scroll: {
focus: Bindings.Trigger
zoom: Bindings.Trigger
focus: Bindings.Trigger
focusZoom: Bindings.Trigger
}
}
export namespace Bindings {
export type Trigger = { buttons: ButtonsType, modifiers?: ModifiersKeys }
export const EmptyTrigger = { buttons: ButtonsType.Flag.None }
export function match(trigger: Trigger, buttons: ButtonsType, modifiers: ModifiersKeys) {
const { buttons: b, modifiers: m } = trigger
......@@ -37,12 +40,14 @@ export namespace Bindings {
rotate: { buttons: B.Flag.Primary, modifiers: M.create() },
rotateZ: { buttons: B.Flag.Primary, modifiers: M.create({ shift: true }) },
pan: { buttons: B.Flag.Secondary, modifiers: M.create() },
zoom: EmptyTrigger,
focus: { buttons: B.Flag.Forth, modifiers: M.create() },
zoom: { buttons: B.Flag.Auxilary, modifiers: M.create() },
focusZoom: { buttons: B.Flag.Auxilary, modifiers: M.create() },
},
scroll: {
focus: { buttons: B.Flag.Auxilary, modifiers: M.create({ shift: true }) },
zoom: { buttons: B.Flag.Auxilary, modifiers: M.create() },
focus: { buttons: B.Flag.Auxilary, modifiers: M.create({ shift: true }) },
focusZoom: EmptyTrigger,
}
}
}
\ No newline at end of file
......@@ -292,6 +292,7 @@ namespace TrackballControls {
const dragPan = Bindings.match(p.bindings.drag.pan, buttons, modifiers)
const dragZoom = Bindings.match(p.bindings.drag.zoom, buttons, modifiers)
const dragFocus = Bindings.match(p.bindings.drag.focus, buttons, modifiers)
const dragFocusZoom = Bindings.match(p.bindings.drag.focusZoom, buttons, modifiers)
getMouseOnCircle(pageX, pageY)
getMouseOnScreen(pageX, pageY)
......@@ -305,7 +306,7 @@ namespace TrackballControls {
Vec2.copy(_zRotCurr, mouseOnCircleVec2)
Vec2.copy(_zRotPrev, _zRotCurr)
}
if (dragZoom) {
if (dragZoom || dragFocusZoom) {
Vec2.copy(_zoomStart, mouseOnScreenVec2)
Vec2.copy(_zoomEnd, _zoomStart)
}
......@@ -321,8 +322,12 @@ namespace TrackballControls {
if (dragRotate) Vec2.copy(_rotCurr, mouseOnCircleVec2)
if (dragRotateZ) Vec2.copy(_zRotCurr, mouseOnCircleVec2)
if (dragZoom) Vec2.copy(_zoomEnd, mouseOnScreenVec2)
if (dragZoom || dragFocusZoom) Vec2.copy(_zoomEnd, mouseOnScreenVec2)
if (dragFocus) Vec2.copy(_focusEnd, mouseOnScreenVec2)
if (dragFocusZoom) {
const dist = Vec3.distance(camera.state.position, camera.state.target);
camera.setState({ radius: dist / 5 })
}
if (dragPan) Vec2.copy(_panEnd, mouseOnScreenVec2)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment