@ue-too/board 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js +475 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/base.js +340 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/base.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/animation-and-lock.js +88 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/animation-and-lock.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/index.js +5 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.js +157 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.js +151 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.js +153 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/index.js +4 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/interface.js +2 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/interface.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/relay.js +38 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/relay.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/camera-rig.js +454 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/camera-rig.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/index.js +6 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/pan-handler.js +124 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/pan-handler.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/rotation-handler.js +71 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/rotation-handler.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/index.js +4 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/position-update-batcher.js +97 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/position-update-batcher.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/rotation-update-batcher.js +91 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/rotation-update-batcher.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.js +128 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/zoom-handler.js +76 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/zoom-handler.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/default-camera.js +258 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/default-camera.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/index.js +9 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/interface.js +2 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/interface.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/update-publisher.js +74 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/update-publisher.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/coordinate-conversion.js +150 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/coordinate-conversion.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/index.js +6 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/matrix.js +421 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/matrix.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/position.js +177 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/position.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/rotation.js +122 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/rotation.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/zoom.js +46 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/zoom.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.js +6 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/index.js +4 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/index.js +5 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-context.js +191 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-context.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-state-machine.js +342 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-state-machine.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-context.js +62 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-context.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-state-machine.js +173 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-state-machine.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/index.js +3 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.js +123 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.js +118 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/index.js +2 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/raw-input-publisher.js +99 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/raw-input-publisher.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/canvas-position-dimension.js +184 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/canvas-position-dimension.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/coorindate-conversion.js +10 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/coorindate-conversion.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing-utils.js +450 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing-utils.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing.js +192 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/handler-pipeline.js +27 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/handler-pipeline.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/index.js +9 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/observable.js +47 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/observable.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/ruler.js +21 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/ruler.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/zoomlevel-adjustment.js +102 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/zoomlevel-adjustment.js.map +1 -0
- package/dist/board.tsbuildinfo +1 -0
- package/dist/boardify/index.d.ts +192 -0
- package/dist/camera/base.d.ts +189 -0
- package/dist/camera/camera-mux/animation-and-lock/animation-and-lock.d.ts +50 -0
- package/dist/camera/camera-mux/animation-and-lock/index.d.ts +4 -0
- package/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.d.ts +137 -0
- package/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.d.ts +131 -0
- package/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.d.ts +143 -0
- package/dist/camera/camera-mux/index.d.ts +3 -0
- package/dist/camera/camera-mux/interface.d.ts +12 -0
- package/dist/camera/camera-mux/relay.d.ts +27 -0
- package/dist/camera/camera-rig/camera-rig.d.ts +207 -0
- package/dist/camera/camera-rig/index.d.ts +5 -0
- package/dist/camera/camera-rig/pan-handler.d.ts +113 -0
- package/dist/camera/camera-rig/rotation-handler.d.ts +78 -0
- package/dist/camera/camera-rig/update-batcher/index.d.ts +3 -0
- package/dist/camera/camera-rig/update-batcher/position-update-batcher.d.ts +58 -0
- package/dist/camera/camera-rig/update-batcher/rotation-update-batcher.d.ts +54 -0
- package/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.d.ts +60 -0
- package/dist/camera/camera-rig/zoom-handler.d.ts +77 -0
- package/dist/camera/default-camera.d.ts +170 -0
- package/dist/camera/index.d.ts +8 -0
- package/dist/camera/interface.d.ts +59 -0
- package/dist/camera/update-publisher.d.ts +172 -0
- package/dist/camera/utils/coordinate-conversion.d.ts +75 -0
- package/dist/camera/utils/index.d.ts +5 -0
- package/dist/camera/utils/matrix.d.ts +114 -0
- package/dist/camera/utils/position.d.ts +71 -0
- package/dist/camera/utils/rotation.d.ts +64 -0
- package/dist/camera/utils/zoom.d.ts +25 -0
- package/dist/index.d.ts +5 -0
- package/dist/input-interpretation/index.d.ts +3 -0
- package/dist/input-interpretation/input-state-machine/index.d.ts +4 -0
- package/dist/input-interpretation/input-state-machine/kmt-input-context.d.ts +130 -0
- package/dist/input-interpretation/input-state-machine/kmt-input-state-machine.d.ts +194 -0
- package/dist/input-interpretation/input-state-machine/touch-input-context.d.ts +44 -0
- package/dist/input-interpretation/input-state-machine/touch-input-state-machine.d.ts +64 -0
- package/dist/input-interpretation/raw-input-parser/index.d.ts +2 -0
- package/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.d.ts +87 -0
- package/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.d.ts +55 -0
- package/dist/input-interpretation/raw-input-publisher/index.d.ts +1 -0
- package/dist/input-interpretation/raw-input-publisher/raw-input-publisher.d.ts +130 -0
- package/dist/package.json +39 -0
- package/dist/utils/canvas-position-dimension.d.ts +18 -0
- package/dist/utils/coorindate-conversion.d.ts +5 -0
- package/dist/utils/drawing-utils.d.ts +55 -0
- package/dist/utils/drawing.d.ts +30 -0
- package/dist/utils/handler-pipeline.d.ts +30 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/observable.d.ts +9 -0
- package/dist/utils/ruler.d.ts +1 -0
- package/dist/utils/zoomlevel-adjustment.d.ts +28 -0
- package/jest.config.js +18 -0
- package/package.json +11 -10
- package/project.json +34 -0
- package/rollup.config.js +29 -0
- package/src/boardify/index.ts +562 -0
- package/src/camera/base.ts +387 -0
- package/src/camera/camera-mux/animation-and-lock/animation-and-lock.ts +114 -0
- package/src/camera/camera-mux/animation-and-lock/index.ts +4 -0
- package/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts +248 -0
- package/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts +237 -0
- package/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts +263 -0
- package/src/camera/camera-mux/index.ts +3 -0
- package/src/camera/camera-mux/interface.ts +13 -0
- package/src/camera/camera-mux/relay.ts +50 -0
- package/src/camera/camera-rig/camera-rig.ts +560 -0
- package/src/camera/camera-rig/index.ts +5 -0
- package/src/camera/camera-rig/pan-handler.ts +192 -0
- package/src/camera/camera-rig/rotation-handler.ts +124 -0
- package/src/camera/camera-rig/update-batcher/index.ts +3 -0
- package/src/camera/camera-rig/update-batcher/position-update-batcher.ts +133 -0
- package/src/camera/camera-rig/update-batcher/rotation-update-batcher.ts +123 -0
- package/src/camera/camera-rig/update-batcher/zoom-udpate-batcher.ts +157 -0
- package/src/camera/camera-rig/zoom-handler.ts +123 -0
- package/src/camera/default-camera.ts +297 -0
- package/src/camera/index.ts +8 -0
- package/src/camera/interface.ts +45 -0
- package/src/camera/update-publisher.ts +222 -0
- package/src/camera/utils/coordinate-conversion.ts +160 -0
- package/src/camera/utils/index.ts +5 -0
- package/src/camera/utils/matrix.ts +558 -0
- package/src/camera/utils/position.ts +196 -0
- package/src/camera/utils/rotation.ts +147 -0
- package/src/camera/utils/zoom.ts +55 -0
- package/src/index.ts +5 -0
- package/src/input-interpretation/index.ts +3 -0
- package/src/input-interpretation/input-state-machine/index.ts +4 -0
- package/src/input-interpretation/input-state-machine/kmt-input-context.ts +283 -0
- package/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts +491 -0
- package/src/input-interpretation/input-state-machine/touch-input-context.ts +106 -0
- package/src/input-interpretation/input-state-machine/touch-input-state-machine.ts +215 -0
- package/src/input-interpretation/raw-input-parser/index.ts +2 -0
- package/src/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.ts +207 -0
- package/src/input-interpretation/raw-input-parser/vanilla-touch-event-parser.ts +169 -0
- package/src/input-interpretation/raw-input-publisher/index.ts +1 -0
- package/src/input-interpretation/raw-input-publisher/raw-input-publisher.ts +227 -0
- package/src/utils/canvas-position-dimension.ts +215 -0
- package/src/utils/coorindate-conversion.ts +12 -0
- package/src/utils/drawing-utils.ts +439 -0
- package/src/utils/drawing.ts +266 -0
- package/src/utils/handler-pipeline.ts +41 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/observable.ts +63 -0
- package/src/utils/ruler.ts +18 -0
- package/src/utils/zoomlevel-adjustment.ts +108 -0
- package/test/board-camera/camera-rig.test.ts +78 -0
- package/test/board-camera/camera-utils.test.ts +263 -0
- package/test/board-camera/utils/coordinate-conversion.test.ts +26 -0
- package/test/board-camera/utils/matrix.test.ts +35 -0
- package/test/boardify/utils/canvas.test.ts +20 -0
- package/test/util/drawing.test.ts +83 -0
- package/test/util/handler-pipeline.test.ts +74 -0
- package/test/util/observable.test.ts +42 -0
- package/test/util/ruler.test.ts +41 -0
- package/tsconfig.json +23 -0
- package/tsconfig.spec.json +12 -0
- /package/{board.tsbuildinfo → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/board.tsbuildinfo} +0 -0
- /package/{boardify → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify}/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/base.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/animation-and-lock.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/pan-control-state-machine.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/rotation-control-state-machine.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/zoom-control-state-machine.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/interface.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/relay.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/camera-rig.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/pan-handler.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/rotation-handler.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/position-update-batcher.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/rotation-update-batcher.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/zoom-udpate-batcher.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/zoom-handler.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/default-camera.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/interface.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/update-publisher.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/coordinate-conversion.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/matrix.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/position.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/rotation.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/zoom.d.ts +0 -0
- /package/{index.d.ts → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.d.ts} +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/index.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/index.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/kmt-input-context.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/kmt-input-state-machine.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/touch-input-context.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/touch-input-state-machine.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-parser/index.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-parser/vanilla-kmt-event-parser.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-parser/vanilla-touch-event-parser.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-publisher/index.d.ts +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-publisher/raw-input-publisher.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/canvas-position-dimension.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/coorindate-conversion.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/drawing-utils.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/drawing.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/handler-pipeline.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/index.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/observable.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/ruler.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/zoomlevel-adjustment.d.ts +0 -0
- /package/{index.js → dist/index.js} +0 -0
- /package/{index.js.map → dist/index.js.map} +0 -0
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
import { PointCal } from "@ue-too/math";
|
|
2
|
+
import { createDefaultPanByHandler, createDefaultPanToHandler } from "./pan-handler";
|
|
3
|
+
import { createDefaultZoomToOnlyHandler, createDefaultZoomByOnlyHandler, } from "./zoom-handler";
|
|
4
|
+
import DefaultBoardCamera from "../default-camera";
|
|
5
|
+
import { createDefaultRotateToHandler, createDefaultRotateByHandler } from "./rotation-handler";
|
|
6
|
+
import { CameraPositionUpdateBatcher, CameraRotationUpdateBatcher, CameraZoomUpdateBatcher } from "./update-batcher";
|
|
7
|
+
import { convertDeltaInViewPortToWorldSpace } from "../utils";
|
|
8
|
+
/**
|
|
9
|
+
* @description The camera rig.
|
|
10
|
+
*
|
|
11
|
+
* This is a consolidated handler function for pan, zoom and rotation.
|
|
12
|
+
* Essentially, it is a controller that controls the camera, so you don't have to figure out some of the math that is involved in panning, zooming and rotating the camera.
|
|
13
|
+
*
|
|
14
|
+
* @category Camera
|
|
15
|
+
*/
|
|
16
|
+
export class CameraRigWithUpdateBatcher {
|
|
17
|
+
constructor(config, camera = new DefaultBoardCamera()) {
|
|
18
|
+
this._panBy = createDefaultPanByHandler();
|
|
19
|
+
this._panTo = createDefaultPanToHandler();
|
|
20
|
+
this._zoomTo = createDefaultZoomToOnlyHandler();
|
|
21
|
+
this._zoomBy = createDefaultZoomByOnlyHandler();
|
|
22
|
+
this._rotateBy = createDefaultRotateByHandler();
|
|
23
|
+
this._rotateTo = createDefaultRotateToHandler();
|
|
24
|
+
this._config = { ...config, restrictRotation: false, clampRotation: true };
|
|
25
|
+
this._camera = camera;
|
|
26
|
+
this._positionBatcher = new CameraPositionUpdateBatcher();
|
|
27
|
+
this._zoomBatcher = new CameraZoomUpdateBatcher();
|
|
28
|
+
this._rotationBatcher = new CameraRotationUpdateBatcher();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @description Zoom to a certain zoom level at a certain point. The point is in the viewport coordinate system.
|
|
32
|
+
*/
|
|
33
|
+
zoomToAt(targetZoom, at) {
|
|
34
|
+
this._zoomBatcher.queueZoomUpdateTo(targetZoom, at);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @description Zoom by a certain amount at a certain point. The point is in the viewport coordinate system.
|
|
38
|
+
*/
|
|
39
|
+
zoomByAt(delta, at) {
|
|
40
|
+
this._zoomBatcher.queueZoomUpdateBy(delta, at);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @description Zoom to a certain zoom level with respect to the center of the viewport.
|
|
44
|
+
*/
|
|
45
|
+
zoomTo(targetZoom) {
|
|
46
|
+
this._zoomBatcher.queueZoomUpdateTo(targetZoom);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @description Zoom by a certain amount with respect to the center of the viewport.
|
|
50
|
+
*/
|
|
51
|
+
zoomBy(delta) {
|
|
52
|
+
this._zoomBatcher.queueZoomUpdateBy(delta);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @description Zoom to a certain zoom level with respect to a point in the world coordinate system.
|
|
56
|
+
*/
|
|
57
|
+
zoomToAtWorld(targetZoom, at) {
|
|
58
|
+
this._zoomBatcher.queueZoomToAtWorld(targetZoom, at);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @description Zoom by a certain amount with respect to a point in the world coordinate system.
|
|
62
|
+
*/
|
|
63
|
+
zoomByAtWorld(delta, at) {
|
|
64
|
+
this._zoomBatcher.queueZoomByAtWorld(delta, at);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @description Pan to a certain point. (target is in the world coordinate system)
|
|
68
|
+
*/
|
|
69
|
+
_actualPanByWorld(delta) {
|
|
70
|
+
const transformedDelta = this._panBy(delta, this._camera, this._config);
|
|
71
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedDelta));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* @description Pan to a certain point. (target is in the world coordinate system)
|
|
75
|
+
*/
|
|
76
|
+
_actualPanToWorld(target) {
|
|
77
|
+
const transformedTarget = this._panTo(target, this._camera, this._config);
|
|
78
|
+
this._camera.setPosition(transformedTarget);
|
|
79
|
+
}
|
|
80
|
+
panByWorld(delta) {
|
|
81
|
+
this._positionBatcher.queuePositionUpdateBy(delta);
|
|
82
|
+
}
|
|
83
|
+
panByViewPort(delta) {
|
|
84
|
+
const diffInWorld = PointCal.multiplyVectorByScalar(PointCal.rotatePoint(delta, this._camera.rotation), 1 / this._camera.zoomLevel);
|
|
85
|
+
this._positionBatcher.queuePositionUpdateBy(diffInWorld);
|
|
86
|
+
}
|
|
87
|
+
panToWorld(target) {
|
|
88
|
+
this._positionBatcher.queuePositionUpdateTo(target);
|
|
89
|
+
}
|
|
90
|
+
panToViewPort(target) {
|
|
91
|
+
const targetInWorld = this._camera.convertFromViewPort2WorldSpace(target);
|
|
92
|
+
this._positionBatcher.queuePositionUpdateTo(targetInWorld);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @description Rotate by a certain amount.
|
|
96
|
+
*/
|
|
97
|
+
rotateBy(delta) {
|
|
98
|
+
this._rotationBatcher.queueRotationUpdateBy(delta);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* @description Rotate to a certain angle.
|
|
102
|
+
*/
|
|
103
|
+
rotateTo(target) {
|
|
104
|
+
this._rotationBatcher.queueRotationUpdateTo(target);
|
|
105
|
+
}
|
|
106
|
+
set limitEntireViewPort(limit) {
|
|
107
|
+
this._config.limitEntireViewPort = limit;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* @description Whether the entire view port is limited.
|
|
111
|
+
*/
|
|
112
|
+
get limitEntireViewPort() {
|
|
113
|
+
return this._config.limitEntireViewPort;
|
|
114
|
+
}
|
|
115
|
+
get camera() {
|
|
116
|
+
return this._camera;
|
|
117
|
+
}
|
|
118
|
+
get config() {
|
|
119
|
+
return this._config;
|
|
120
|
+
}
|
|
121
|
+
set config(config) {
|
|
122
|
+
this._config = { ...config };
|
|
123
|
+
}
|
|
124
|
+
updatePosition() {
|
|
125
|
+
const positionUpdate = this._positionBatcher.processQueuedUpdates();
|
|
126
|
+
if (positionUpdate == null) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
switch (positionUpdate.type) {
|
|
130
|
+
case 'destination':
|
|
131
|
+
this._actualPanToWorld(positionUpdate);
|
|
132
|
+
break;
|
|
133
|
+
case 'delta':
|
|
134
|
+
this._actualPanByWorld(positionUpdate);
|
|
135
|
+
break;
|
|
136
|
+
default:
|
|
137
|
+
throw new Error("Invalid position update type");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
updateZoom() {
|
|
141
|
+
const op = this._zoomBatcher.processQueuedUpdates();
|
|
142
|
+
if (op == null) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (op.anchorCoordinateSystem === 'world') {
|
|
146
|
+
switch (op.update.type) {
|
|
147
|
+
case 'destination':
|
|
148
|
+
if (op.update.anchor) {
|
|
149
|
+
this._zoomToAtWorld(op.update.destination, op.update.anchor);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const targetZoom = this._zoomTo(op.update.destination, this._camera, this._config);
|
|
153
|
+
this._camera.setZoomLevel(targetZoom);
|
|
154
|
+
}
|
|
155
|
+
break;
|
|
156
|
+
case 'delta':
|
|
157
|
+
if (op.update.anchor) {
|
|
158
|
+
this._zoomByAtWorld(op.update.delta, op.update.anchor);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const transformedDelta = this._zoomBy(op.update.delta, this._camera, this._config);
|
|
162
|
+
this._camera.setZoomLevel(this._camera.zoomLevel + transformedDelta);
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
switch (op.update.type) {
|
|
169
|
+
case 'destination':
|
|
170
|
+
if (op.update.anchor) {
|
|
171
|
+
this._zoomToAtViewPort(op.update.destination, op.update.anchor);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
const targetZoom = this._zoomTo(op.update.destination, this._camera, this._config);
|
|
175
|
+
this._camera.setZoomLevel(targetZoom);
|
|
176
|
+
}
|
|
177
|
+
break;
|
|
178
|
+
case 'delta':
|
|
179
|
+
if (op.update.anchor) {
|
|
180
|
+
this._zoomByAtViewPort(op.update.delta, op.update.anchor);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
const transformedDelta = this._zoomBy(op.update.delta, this._camera, this._config);
|
|
184
|
+
this._camera.setZoomLevel(this._camera.zoomLevel + transformedDelta);
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
updateRotation() {
|
|
191
|
+
const op = this._rotationBatcher.processQueuedUpdates();
|
|
192
|
+
if (op == null) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
switch (op.type) {
|
|
196
|
+
case 'destination':
|
|
197
|
+
const transformedTarget = this._rotateTo(op.destination, this._camera, this._config);
|
|
198
|
+
this._camera.setRotation(transformedTarget);
|
|
199
|
+
break;
|
|
200
|
+
case 'delta':
|
|
201
|
+
const transformedDelta = this._rotateBy(op.delta, this._camera, this._config);
|
|
202
|
+
this._camera.setRotation(this._camera.rotation + transformedDelta);
|
|
203
|
+
break;
|
|
204
|
+
default:
|
|
205
|
+
throw new Error("Invalid rotation update type");
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
update() {
|
|
209
|
+
this.updateZoom();
|
|
210
|
+
this.updatePosition();
|
|
211
|
+
this.updateRotation();
|
|
212
|
+
}
|
|
213
|
+
_zoomToAtViewPort(targetZoom, at) {
|
|
214
|
+
const originalAnchorInWorld = this._camera.convertFromViewPort2WorldSpace(at);
|
|
215
|
+
const transformedTarget = this._zoomTo(targetZoom, this._camera, this._config);
|
|
216
|
+
this._camera.setZoomLevel(transformedTarget);
|
|
217
|
+
const anchorInWorldAfterZoom = this._camera.convertFromViewPort2WorldSpace(at);
|
|
218
|
+
const cameraPositionDiff = PointCal.subVector(originalAnchorInWorld, anchorInWorldAfterZoom);
|
|
219
|
+
const transformedCameraPositionDiff = this._panBy(cameraPositionDiff, this._camera, this._config);
|
|
220
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedCameraPositionDiff));
|
|
221
|
+
}
|
|
222
|
+
_zoomToAtWorld(targetZoom, at) {
|
|
223
|
+
let originalAnchorInViewPort = this._camera.convertFromWorld2ViewPort(at);
|
|
224
|
+
const transformedTarget = this._zoomTo(targetZoom, this._camera, this._config);
|
|
225
|
+
this._camera.setZoomLevel(transformedTarget);
|
|
226
|
+
let anchorInViewPortAfterZoom = this._camera.convertFromWorld2ViewPort(at);
|
|
227
|
+
const cameraPositionDiff = PointCal.subVector(originalAnchorInViewPort, anchorInViewPortAfterZoom);
|
|
228
|
+
const transformedCameraPositionDiff = this._panBy(cameraPositionDiff, this._camera, this._config);
|
|
229
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedCameraPositionDiff));
|
|
230
|
+
}
|
|
231
|
+
_zoomByAtViewPort(delta, at) {
|
|
232
|
+
const originalAnchorInWorld = this._camera.convertFromViewPort2WorldSpace(at);
|
|
233
|
+
const transformedDelta = this._zoomBy(delta, this._camera, this._config);
|
|
234
|
+
this._camera.setZoomLevel(this._camera.zoomLevel + transformedDelta);
|
|
235
|
+
const anchorInWorldAfterZoom = this._camera.convertFromViewPort2WorldSpace(at);
|
|
236
|
+
const cameraPositionDiff = PointCal.subVector(originalAnchorInWorld, anchorInWorldAfterZoom);
|
|
237
|
+
const transformedCameraPositionDiff = this._panBy(cameraPositionDiff, this._camera, this._config);
|
|
238
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedCameraPositionDiff));
|
|
239
|
+
}
|
|
240
|
+
_zoomByAtWorld(delta, at) {
|
|
241
|
+
let anchorInViewPortBeforeZoom = this._camera.convertFromWorld2ViewPort(at);
|
|
242
|
+
const transformedDelta = this._zoomBy(delta, this._camera, this._config);
|
|
243
|
+
this._camera.setZoomLevel(this._camera.zoomLevel + transformedDelta);
|
|
244
|
+
let anchorInViewPortAfterZoom = this._camera.convertFromWorld2ViewPort(at);
|
|
245
|
+
const diffInViewPort = PointCal.subVector(anchorInViewPortBeforeZoom, anchorInViewPortAfterZoom);
|
|
246
|
+
const diffInWorld = convertDeltaInViewPortToWorldSpace(diffInViewPort, this._camera.zoomLevel, this._camera.rotation);
|
|
247
|
+
const transformedDiff = this._panBy(diffInWorld, this._camera, this._config);
|
|
248
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedDiff));
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* @description Configure the camera rig.
|
|
252
|
+
*/
|
|
253
|
+
configure(config) {
|
|
254
|
+
this._config = { ...this._config, ...config };
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* @description Cleanup the camera rig.
|
|
258
|
+
*/
|
|
259
|
+
cleanup() {
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* @description Setup the camera rig.
|
|
263
|
+
*/
|
|
264
|
+
setup() {
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* @description Create a default camera rig with update batcher.
|
|
269
|
+
*
|
|
270
|
+
* @category Camera
|
|
271
|
+
*/
|
|
272
|
+
export function createDefaultCameraRigWithUpdateBatcher(camera) {
|
|
273
|
+
return new CameraRigWithUpdateBatcher({
|
|
274
|
+
limitEntireViewPort: true,
|
|
275
|
+
restrictRelativeXTranslation: false,
|
|
276
|
+
restrictRelativeYTranslation: false,
|
|
277
|
+
restrictXTranslation: false,
|
|
278
|
+
restrictYTranslation: false,
|
|
279
|
+
restrictZoom: false,
|
|
280
|
+
clampTranslation: true,
|
|
281
|
+
clampZoom: true,
|
|
282
|
+
}, camera);
|
|
283
|
+
}
|
|
284
|
+
export class DefaultCameraRig {
|
|
285
|
+
constructor(config, camera = new DefaultBoardCamera()) {
|
|
286
|
+
this._panBy = createDefaultPanByHandler();
|
|
287
|
+
this._panTo = createDefaultPanToHandler();
|
|
288
|
+
this._zoomTo = createDefaultZoomToOnlyHandler();
|
|
289
|
+
this._zoomBy = createDefaultZoomByOnlyHandler();
|
|
290
|
+
this._rotateBy = createDefaultRotateByHandler();
|
|
291
|
+
this._rotateTo = createDefaultRotateToHandler();
|
|
292
|
+
this._config = { ...config, restrictRotation: false, clampRotation: true };
|
|
293
|
+
this._camera = camera;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* @description Zoom to a certain zoom level at a certain point. The point is in the viewport coordinate system.
|
|
297
|
+
*/
|
|
298
|
+
zoomToAt(targetZoom, at) {
|
|
299
|
+
let originalAnchorInWorld = this._camera.convertFromViewPort2WorldSpace(at);
|
|
300
|
+
const transformTarget = this._zoomTo(targetZoom, this._camera, this._config);
|
|
301
|
+
this._camera.setZoomLevel(transformTarget);
|
|
302
|
+
let anchorInWorldAfterZoom = this._camera.convertFromViewPort2WorldSpace(at);
|
|
303
|
+
const cameraPositionDiff = PointCal.subVector(originalAnchorInWorld, anchorInWorldAfterZoom);
|
|
304
|
+
const transformedCameraPositionDiff = this._panBy(cameraPositionDiff, this._camera, this._config);
|
|
305
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedCameraPositionDiff));
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* @description Zoom by a certain amount at a certain point. The point is in the viewport coordinate system.
|
|
309
|
+
*/
|
|
310
|
+
zoomByAt(delta, at) {
|
|
311
|
+
let originalAnchorInWorld = this._camera.convertFromViewPort2WorldSpace(at);
|
|
312
|
+
const transformedDelta = this._zoomBy(delta, this._camera, this._config);
|
|
313
|
+
this._camera.setZoomLevel(this._camera.zoomLevel + transformedDelta);
|
|
314
|
+
let anchorInWorldAfterZoom = this._camera.convertFromViewPort2WorldSpace(at);
|
|
315
|
+
const diff = PointCal.subVector(originalAnchorInWorld, anchorInWorldAfterZoom);
|
|
316
|
+
const transformedDiff = this._panBy(diff, this._camera, this._config);
|
|
317
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedDiff));
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* @description Zoom to a certain zoom level with respect to the center of the viewport.
|
|
321
|
+
*/
|
|
322
|
+
zoomTo(targetZoom) {
|
|
323
|
+
this._zoomTo(targetZoom, this._camera, this._config);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* @description Zoom by a certain amount with respect to the center of the viewport.
|
|
327
|
+
*/
|
|
328
|
+
zoomBy(delta) {
|
|
329
|
+
this._zoomBy(delta, this._camera, this._config);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* @description Zoom to a certain zoom level with respect to a point in the world coordinate system.
|
|
333
|
+
*/
|
|
334
|
+
zoomToAtWorld(targetZoom, at) {
|
|
335
|
+
let originalAnchorInViewPort = this._camera.convertFromWorld2ViewPort(at);
|
|
336
|
+
const transformedTarget = this._zoomTo(targetZoom, this._camera, this._config);
|
|
337
|
+
this._camera.setZoomLevel(transformedTarget);
|
|
338
|
+
let anchorInViewPortAfterZoom = this._camera.convertFromWorld2ViewPort(at);
|
|
339
|
+
const cameraPositionDiffInViewPort = PointCal.subVector(anchorInViewPortAfterZoom, originalAnchorInViewPort);
|
|
340
|
+
const cameraPositionDiffInWorld = convertDeltaInViewPortToWorldSpace(cameraPositionDiffInViewPort, this._camera.zoomLevel, this._camera.rotation);
|
|
341
|
+
const transformedCameraPositionDiff = this._panBy(cameraPositionDiffInWorld, this._camera, this._config);
|
|
342
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedCameraPositionDiff));
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* @description Zoom by a certain amount with respect to a point in the world coordinate system.
|
|
346
|
+
*/
|
|
347
|
+
zoomByAtWorld(delta, at) {
|
|
348
|
+
let anchorInViewPortBeforeZoom = this._camera.convertFromWorld2ViewPort(at);
|
|
349
|
+
const transformedDelta = this._zoomBy(delta, this._camera, this._config);
|
|
350
|
+
this._camera.setZoomLevel(this._camera.zoomLevel + transformedDelta);
|
|
351
|
+
let anchorInViewPortAfterZoom = this._camera.convertFromWorld2ViewPort(at);
|
|
352
|
+
const diffInViewPort = PointCal.subVector(anchorInViewPortAfterZoom, anchorInViewPortBeforeZoom);
|
|
353
|
+
const diffInWorld = convertDeltaInViewPortToWorldSpace(diffInViewPort, this._camera.zoomLevel, this._camera.rotation);
|
|
354
|
+
const transformedDiff = this._panBy(diffInWorld, this._camera, this._config);
|
|
355
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedDiff));
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* @description Pan By a certain amount. (delta is in the viewport coordinate system)
|
|
359
|
+
*/
|
|
360
|
+
panByViewPort(delta) {
|
|
361
|
+
const diffInWorld = PointCal.multiplyVectorByScalar(PointCal.rotatePoint(delta, this._camera.rotation), 1 / this._camera.zoomLevel);
|
|
362
|
+
const transformedDelta = this._panBy(diffInWorld, this._camera, this._config);
|
|
363
|
+
this._camera.setPosition(PointCal.addVector(this._camera.position, transformedDelta));
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* @description Pan to a certain point. (target is in the world coordinate system)
|
|
367
|
+
*/
|
|
368
|
+
panByWorld(delta) {
|
|
369
|
+
const diffInViewPort = this._camera.convertFromWorld2ViewPort(delta);
|
|
370
|
+
this.panByViewPort(diffInViewPort);
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* @description Pan to a certain point. (target is in the world coordinate system)
|
|
374
|
+
*/
|
|
375
|
+
panToWorld(target) {
|
|
376
|
+
const transformedTarget = this._panTo(target, this._camera, this._config);
|
|
377
|
+
this._camera.setPosition(transformedTarget);
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* @description Pan to a certain point. (target is in the viewport coordinate system)
|
|
381
|
+
*/
|
|
382
|
+
panToViewPort(target) {
|
|
383
|
+
const targetInWorld = this._camera.convertFromViewPort2WorldSpace(target);
|
|
384
|
+
this.panToWorld(targetInWorld);
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* @description Rotate by a certain amount.
|
|
388
|
+
*/
|
|
389
|
+
rotateBy(delta) {
|
|
390
|
+
const transformedDelta = this._rotateBy(delta, this._camera, this._config);
|
|
391
|
+
this._camera.setRotation(this._camera.rotation + transformedDelta);
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* @description Rotate to a certain angle.
|
|
395
|
+
*/
|
|
396
|
+
rotateTo(target) {
|
|
397
|
+
const transformedTarget = this._rotateTo(target, this._camera, this._config);
|
|
398
|
+
this._camera.setRotation(transformedTarget);
|
|
399
|
+
}
|
|
400
|
+
set limitEntireViewPort(limit) {
|
|
401
|
+
this._config.limitEntireViewPort = limit;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* @description Whether the entire view port is limited.
|
|
405
|
+
*/
|
|
406
|
+
get limitEntireViewPort() {
|
|
407
|
+
return this._config.limitEntireViewPort;
|
|
408
|
+
}
|
|
409
|
+
get camera() {
|
|
410
|
+
return this._camera;
|
|
411
|
+
}
|
|
412
|
+
get config() {
|
|
413
|
+
return this._config;
|
|
414
|
+
}
|
|
415
|
+
set config(config) {
|
|
416
|
+
this._config = { ...config };
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* @description Configure the camera rig.
|
|
420
|
+
*/
|
|
421
|
+
configure(config) {
|
|
422
|
+
this._config = { ...this._config, ...config };
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* @description Cleanup the camera rig.
|
|
426
|
+
*/
|
|
427
|
+
cleanup() {
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* @description Setup the camera rig.
|
|
431
|
+
*/
|
|
432
|
+
setup() {
|
|
433
|
+
}
|
|
434
|
+
update() {
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* @description Create a default camera rig.
|
|
439
|
+
*
|
|
440
|
+
* @category Camera
|
|
441
|
+
*/
|
|
442
|
+
export function createDefaultCameraRig(camera) {
|
|
443
|
+
return new DefaultCameraRig({
|
|
444
|
+
limitEntireViewPort: true,
|
|
445
|
+
restrictRelativeXTranslation: false,
|
|
446
|
+
restrictRelativeYTranslation: false,
|
|
447
|
+
restrictXTranslation: false,
|
|
448
|
+
restrictYTranslation: false,
|
|
449
|
+
restrictZoom: false,
|
|
450
|
+
clampTranslation: true,
|
|
451
|
+
clampZoom: true,
|
|
452
|
+
}, camera);
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=camera-rig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera-rig.js","sourceRoot":"","sources":["../../../src/camera/camera-rig/camera-rig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/camera/camera-rig/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { PointCal } from "@ue-too/math";
|
|
2
|
+
import { createHandlerChain } from "../../utils/handler-pipeline";
|
|
3
|
+
import { clampPoint, clampPointEntireViewPort } from "../utils/position";
|
|
4
|
+
/**
|
|
5
|
+
* @description Helper function that creates a default "pan to" handler.
|
|
6
|
+
* The default pan to handler will first restrict the pan to the view port, then clamp the pan to the boundaries, and then pan to the destination.
|
|
7
|
+
*
|
|
8
|
+
* @see {@link createHandlerChain} to create your own custom pan handler pipeline. (you can also use this function as a part of your own custom pan handler pipeline)
|
|
9
|
+
* @category Camera
|
|
10
|
+
*/
|
|
11
|
+
export function createDefaultPanToHandler() {
|
|
12
|
+
return createHandlerChain(restrictPanToHandler, clampToHandler);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @description Helper function that creates a default "pan by" handler.
|
|
16
|
+
* The resulting pan by handler takes in a delta that is in "stage/context/world" space.
|
|
17
|
+
* The default pan by handler will first restrict the pan by the view port, then clamp the pan by the boundaries, and then pan by the delta.
|
|
18
|
+
*
|
|
19
|
+
* @see {@link createHandlerChain} to create your own custom pan handler pipeline. (you can also use this function as a part of your own custom pan handler pipeline)
|
|
20
|
+
* @category Camera
|
|
21
|
+
*/
|
|
22
|
+
export function createDefaultPanByHandler() {
|
|
23
|
+
return createHandlerChain(restrictPanByHandler, clampByHandler);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @description Function that is part of the "pan to" handler pipeline. It restricts the "pan to" destination to within a single axis based on the config. (relative to the current camera position)
|
|
27
|
+
* You can use this function standalone to restrict the "pan to" destination to within a single axis based on the config.
|
|
28
|
+
* But it is recommended to use this kind of function as part of the pan handler pipeline. (to include this function in your own custom pan handler pipeline)
|
|
29
|
+
*
|
|
30
|
+
* @category Camera
|
|
31
|
+
*/
|
|
32
|
+
export function restrictPanToHandler(destination, camera, config) {
|
|
33
|
+
let delta = PointCal.subVector(destination, camera.position);
|
|
34
|
+
delta = convertDeltaToComplyWithRestriction(delta, camera, config);
|
|
35
|
+
if (delta.x === 0 && delta.y === 0) {
|
|
36
|
+
return destination;
|
|
37
|
+
}
|
|
38
|
+
const dest = PointCal.addVector(camera.position, delta);
|
|
39
|
+
return dest;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @description Function that is part of the "pan by" handler pipeline. It restricts the pan delta to within a single axis based on the config. (relative to the current camera position)
|
|
43
|
+
* You can use this function standalone to restrict the pan delta to within a single axis based on the config.
|
|
44
|
+
* But it is recommended to use this kind of function as part of the pan handler pipeline. (to include this function in your own custom pan handler pipeline)
|
|
45
|
+
*
|
|
46
|
+
* @category Camera
|
|
47
|
+
*/
|
|
48
|
+
export function restrictPanByHandler(delta, camera, config) {
|
|
49
|
+
delta = convertDeltaToComplyWithRestriction(delta, camera, config);
|
|
50
|
+
return delta;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @description Function that is part of the "pan to" handler pipeline. It clamps the pan destination within the boundaries of the view port.
|
|
54
|
+
* You can use this function standalone to clamp the pan destination within the boundaries of the view port.
|
|
55
|
+
* But it is recommended to use this kind of function as part of the pan handler pipeline. (to include this function in your own custom pan handler pipeline)
|
|
56
|
+
*
|
|
57
|
+
* @category Camera
|
|
58
|
+
*/
|
|
59
|
+
export function clampToHandler(destination, camera, config) {
|
|
60
|
+
if (!config.clampTranslation) {
|
|
61
|
+
return destination;
|
|
62
|
+
}
|
|
63
|
+
let actualDest = clampPoint(destination, camera.boundaries);
|
|
64
|
+
if (config.limitEntireViewPort) {
|
|
65
|
+
actualDest = clampPointEntireViewPort(destination, camera.viewPortWidth, camera.viewPortHeight, camera.boundaries, camera.zoomLevel, camera.rotation);
|
|
66
|
+
}
|
|
67
|
+
return actualDest;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @description Function that is part of the "pan by" handler pipeline. It clamps the pan delta within the boundaries of the view port.
|
|
71
|
+
* You can use this function standalone to clamp the pan delta within the boundaries of the view port.
|
|
72
|
+
* But it is recommended to use this kind of function as part of the pan handler pipeline. (to include this function in your own custom pan handler pipeline)
|
|
73
|
+
*
|
|
74
|
+
* @category Camera
|
|
75
|
+
*/
|
|
76
|
+
export function clampByHandler(delta, camera, config) {
|
|
77
|
+
if (!config.clampTranslation) {
|
|
78
|
+
return delta;
|
|
79
|
+
}
|
|
80
|
+
let actualDelta = PointCal.subVector(clampPoint(PointCal.addVector(camera.position, delta), camera.boundaries), camera.position);
|
|
81
|
+
if (config.limitEntireViewPort) {
|
|
82
|
+
actualDelta = PointCal.subVector(clampPointEntireViewPort(PointCal.addVector(camera.position, delta), camera.viewPortWidth, camera.viewPortHeight, camera.boundaries, camera.zoomLevel, camera.rotation), camera.position);
|
|
83
|
+
}
|
|
84
|
+
return actualDelta;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @description Helper function that converts the delta to comply with the restrictions of the config.
|
|
88
|
+
*
|
|
89
|
+
* @category Camera
|
|
90
|
+
*/
|
|
91
|
+
export function convertDeltaToComplyWithRestriction(delta, camera, config) {
|
|
92
|
+
if (config.restrictXTranslation && config.restrictYTranslation) {
|
|
93
|
+
return { x: 0, y: 0 };
|
|
94
|
+
}
|
|
95
|
+
if (config.restrictRelativeXTranslation && config.restrictRelativeYTranslation) {
|
|
96
|
+
return { x: 0, y: 0 };
|
|
97
|
+
}
|
|
98
|
+
if (config.restrictXTranslation) {
|
|
99
|
+
delta.x = 0;
|
|
100
|
+
}
|
|
101
|
+
if (config.restrictYTranslation) {
|
|
102
|
+
delta.y = 0;
|
|
103
|
+
}
|
|
104
|
+
if (config.restrictRelativeXTranslation) {
|
|
105
|
+
const upDirection = PointCal.rotatePoint({ x: 0, y: 1 }, camera.rotation);
|
|
106
|
+
const value = PointCal.dotProduct(upDirection, delta);
|
|
107
|
+
delta = PointCal.multiplyVectorByScalar(upDirection, value);
|
|
108
|
+
}
|
|
109
|
+
if (config.restrictRelativeYTranslation) {
|
|
110
|
+
const rightDirection = PointCal.rotatePoint({ x: 1, y: 0 }, camera.rotation);
|
|
111
|
+
const value = PointCal.dotProduct(rightDirection, delta);
|
|
112
|
+
delta = PointCal.multiplyVectorByScalar(rightDirection, value);
|
|
113
|
+
}
|
|
114
|
+
return delta;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @description Helper function that converts the user input delta to the camera delta.
|
|
118
|
+
*
|
|
119
|
+
* @category Camera
|
|
120
|
+
*/
|
|
121
|
+
export function convertUserInputDeltaToCameraDelta(delta, camera) {
|
|
122
|
+
return PointCal.multiplyVectorByScalar(PointCal.rotatePoint(delta, camera.rotation), 1 / camera.zoomLevel);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=pan-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pan-handler.js","sourceRoot":"","sources":["../../../src/camera/camera-rig/pan-handler.ts"],"names":[],"mappings":"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"}
|