@tolokoban/tgd 2.0.1 → 2.0.3
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/lib/dist/buffer/buffer.d.ts +0 -0
- package/lib/dist/buffer/buffer.d.ts.map +0 -0
- package/lib/dist/buffer/buffer.js +37 -0
- package/lib/dist/buffer/index.d.ts +0 -0
- package/lib/dist/buffer/index.d.ts.map +0 -0
- package/lib/dist/buffer/index.js +2 -0
- package/lib/dist/camera/camera-orthographic.d.ts +13 -5
- package/lib/dist/camera/camera-orthographic.d.ts.map +1 -1
- package/lib/dist/camera/camera-orthographic.js +97 -0
- package/lib/dist/camera/camera-perspective.d.ts +19 -9
- package/lib/dist/camera/camera-perspective.d.ts.map +1 -1
- package/lib/dist/camera/camera-perspective.js +94 -0
- package/lib/dist/camera/camera.d.ts +84 -18
- package/lib/dist/camera/camera.d.ts.map +1 -1
- package/lib/dist/camera/camera.js +368 -0
- package/lib/dist/camera/index.d.ts +3 -3
- package/lib/dist/camera/index.d.ts.map +1 -1
- package/lib/dist/camera/index.js +4 -0
- package/lib/dist/canvas/gizmo/gizmo.d.ts +42 -0
- package/lib/dist/canvas/gizmo/gizmo.d.ts.map +1 -0
- package/lib/dist/canvas/gizmo/gizmo.js +183 -0
- package/lib/dist/canvas/gizmo/index.d.ts +2 -0
- package/lib/dist/canvas/gizmo/index.d.ts.map +1 -0
- package/lib/dist/canvas/gizmo/index.js +2 -0
- package/lib/dist/canvas/gizmo/painter/shader.frag +17 -0
- package/lib/dist/canvas/gizmo/painter/shader.vert +24 -0
- package/lib/dist/canvas/gizmo/painter/tips.d.ts +13 -0
- package/lib/dist/canvas/gizmo/painter/tips.d.ts.map +1 -0
- package/lib/dist/canvas/gizmo/painter/tips.js +96 -0
- package/lib/dist/canvas/index.d.ts +3 -0
- package/lib/dist/canvas/index.d.ts.map +1 -0
- package/lib/dist/canvas/index.js +3 -0
- package/lib/dist/canvas/landscape/index.d.ts +2 -0
- package/lib/dist/canvas/landscape/index.d.ts.map +1 -0
- package/lib/dist/canvas/landscape/index.js +2 -0
- package/lib/dist/canvas/landscape/landscape.d.ts +18 -0
- package/lib/dist/canvas/landscape/landscape.d.ts.map +1 -0
- package/lib/dist/canvas/landscape/landscape.js +40 -0
- package/lib/dist/color/color.d.ts +22 -0
- package/lib/dist/color/color.d.ts.map +1 -0
- package/lib/dist/color/color.js +160 -0
- package/lib/dist/color/index.d.ts +2 -0
- package/lib/dist/color/index.d.ts.map +1 -0
- package/lib/dist/color/index.js +2 -0
- package/lib/dist/context/animation/animation-manager.d.ts +8 -0
- package/lib/dist/context/animation/animation-manager.d.ts.map +1 -0
- package/lib/dist/context/animation/animation-manager.js +41 -0
- package/lib/dist/context/context.d.ts +95 -8
- package/lib/dist/context/context.d.ts.map +1 -1
- package/lib/dist/context/context.js +297 -0
- package/lib/dist/context/index.d.ts +0 -0
- package/lib/dist/context/index.d.ts.map +0 -0
- package/lib/dist/context/index.js +2 -0
- package/lib/dist/controller/camera/index.d.ts +0 -0
- package/lib/dist/controller/camera/index.d.ts.map +0 -0
- package/lib/dist/controller/camera/index.js +2 -0
- package/lib/dist/controller/camera/orbit.d.ts +79 -4
- package/lib/dist/controller/camera/orbit.d.ts.map +1 -1
- package/lib/dist/controller/camera/orbit.js +186 -0
- package/lib/dist/controller/index.d.ts +0 -0
- package/lib/dist/controller/index.d.ts.map +0 -0
- package/lib/dist/controller/index.js +2 -0
- package/lib/dist/dataset/dataset.d.ts +78 -10
- package/lib/dist/dataset/dataset.d.ts.map +1 -1
- package/lib/dist/dataset/dataset.js +217 -0
- package/lib/dist/dataset/index.d.ts +0 -0
- package/lib/dist/dataset/index.d.ts.map +0 -0
- package/lib/dist/dataset/index.js +2 -0
- package/lib/dist/debug.d.ts +0 -0
- package/lib/dist/debug.d.ts.map +0 -0
- package/lib/dist/debug.js +13 -0
- package/lib/dist/event/event.d.ts +0 -0
- package/lib/dist/event/event.d.ts.map +0 -0
- package/lib/dist/event/event.js +13 -0
- package/lib/dist/event/index.d.ts +0 -0
- package/lib/dist/event/index.d.ts.map +0 -0
- package/lib/dist/event/index.js +2 -0
- package/lib/dist/filter/blur.d.ts +10 -0
- package/lib/dist/filter/blur.d.ts.map +1 -0
- package/lib/dist/filter/blur.js +42 -0
- package/lib/dist/filter/filter.d.ts +39 -0
- package/lib/dist/filter/filter.d.ts.map +1 -0
- package/lib/dist/filter/filter.js +43 -0
- package/lib/dist/filter/hue-rotation.d.ts +12 -0
- package/lib/dist/filter/hue-rotation.d.ts.map +1 -0
- package/lib/dist/filter/hue-rotation.js +41 -0
- package/lib/dist/filter/index.d.ts +4 -0
- package/lib/dist/filter/index.d.ts.map +1 -0
- package/lib/dist/filter/index.js +4 -0
- package/lib/dist/geometry/box.d.ts +10 -0
- package/lib/dist/geometry/box.d.ts.map +1 -0
- package/lib/dist/geometry/box.js +136 -0
- package/lib/dist/geometry/geometry.d.ts +47 -0
- package/lib/dist/geometry/geometry.d.ts.map +1 -0
- package/lib/dist/geometry/geometry.js +190 -0
- package/lib/dist/geometry/index.d.ts +3 -0
- package/lib/dist/geometry/index.d.ts.map +1 -0
- package/lib/dist/geometry/index.js +3 -0
- package/lib/dist/index.d.ts +7 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +21 -2
- package/lib/dist/input/index.d.ts +0 -0
- package/lib/dist/input/index.d.ts.map +0 -0
- package/lib/dist/input/index.js +4 -0
- package/lib/dist/input/inputs.d.ts +0 -0
- package/lib/dist/input/inputs.d.ts.map +1 -1
- package/lib/dist/input/inputs.js +23 -0
- package/lib/dist/input/keyboard.d.ts +3 -0
- package/lib/dist/input/keyboard.d.ts.map +1 -1
- package/lib/dist/input/keyboard.js +46 -0
- package/lib/dist/input/pointer.d.ts +17 -33
- package/lib/dist/input/pointer.d.ts.map +1 -1
- package/lib/dist/input/pointer.js +138 -0
- package/lib/dist/light/index.d.ts +2 -0
- package/lib/dist/light/index.d.ts.map +1 -0
- package/lib/dist/light/index.js +2 -0
- package/lib/dist/light/light.d.ts +16 -0
- package/lib/dist/light/light.d.ts.map +1 -0
- package/lib/dist/light/light.js +19 -0
- package/lib/dist/loader/image.d.ts +4 -0
- package/lib/dist/loader/image.d.ts.map +1 -1
- package/lib/dist/loader/image.js +31 -0
- package/lib/dist/loader/index.d.ts +0 -0
- package/lib/dist/loader/index.d.ts.map +0 -0
- package/lib/dist/loader/index.js +2 -0
- package/lib/dist/material/diffuse.d.ts +28 -0
- package/lib/dist/material/diffuse.d.ts.map +1 -0
- package/lib/dist/material/diffuse.js +68 -0
- package/lib/dist/material/ghost.d.ts +19 -0
- package/lib/dist/material/ghost.d.ts.map +1 -0
- package/lib/dist/material/ghost.js +25 -0
- package/lib/dist/material/index.d.ts +5 -0
- package/lib/dist/material/index.d.ts.map +1 -0
- package/lib/dist/material/index.js +5 -0
- package/lib/dist/material/material.d.ts +29 -0
- package/lib/dist/material/material.d.ts.map +1 -0
- package/lib/dist/material/material.js +14 -0
- package/lib/dist/material/normals.d.ts +13 -0
- package/lib/dist/material/normals.d.ts.map +1 -0
- package/lib/dist/material/normals.js +20 -0
- package/lib/dist/math/index.d.ts +3 -0
- package/lib/dist/math/index.d.ts.map +1 -1
- package/lib/dist/math/index.js +8 -0
- package/lib/dist/math/mat3.d.ts +8 -0
- package/lib/dist/math/mat3.d.ts.map +1 -1
- package/lib/dist/math/mat3.js +154 -0
- package/lib/dist/math/mat4.d.ts +111 -2
- package/lib/dist/math/mat4.d.ts.map +1 -1
- package/lib/dist/math/mat4.js +402 -0
- package/lib/dist/math/mat4.test.d.ts +0 -0
- package/lib/dist/math/mat4.test.d.ts.map +0 -0
- package/lib/dist/math/mat4.test.js +57 -0
- package/lib/dist/math/quat.d.ts +1 -0
- package/lib/dist/math/quat.d.ts.map +1 -1
- package/lib/dist/math/quat.js +184 -0
- package/lib/dist/math/quat.test.d.ts +0 -0
- package/lib/dist/math/quat.test.d.ts.map +0 -0
- package/lib/dist/math/quat.test.js +45 -0
- package/lib/dist/math/transfo.d.ts +27 -0
- package/lib/dist/math/transfo.d.ts.map +1 -0
- package/lib/dist/math/transfo.js +86 -0
- package/lib/dist/math/vec2.d.ts +34 -0
- package/lib/dist/math/vec2.d.ts.map +1 -0
- package/lib/dist/math/vec2.js +119 -0
- package/lib/dist/math/vec3.d.ts +24 -13
- package/lib/dist/math/vec3.d.ts.map +1 -1
- package/lib/dist/math/vec3.js +187 -0
- package/lib/dist/math/vec3.test.d.ts +2 -0
- package/lib/dist/math/vec3.test.d.ts.map +1 -0
- package/lib/dist/math/vec3.test.js +22 -0
- package/lib/dist/math/vec4.d.ts +8 -4
- package/lib/dist/math/vec4.d.ts.map +1 -1
- package/lib/dist/math/vec4.js +152 -0
- package/lib/dist/math/vec4.test.d.ts +0 -0
- package/lib/dist/math/vec4.test.d.ts.map +0 -0
- package/lib/dist/math/vec4.test.js +15 -0
- package/lib/dist/painter/axis/axis.d.ts +1 -1
- package/lib/dist/painter/axis/axis.d.ts.map +1 -1
- package/lib/dist/painter/axis/axis.frag +11 -0
- package/lib/dist/painter/axis/axis.js +84 -0
- package/lib/dist/painter/axis/axis.vert +21 -0
- package/lib/dist/painter/axis/index.d.ts +0 -0
- package/lib/dist/painter/axis/index.d.ts.map +0 -0
- package/lib/dist/painter/axis/index.js +2 -0
- package/lib/dist/painter/background/background.d.ts +5 -1
- package/lib/dist/painter/background/background.d.ts.map +1 -1
- package/lib/dist/painter/background/background.frag +11 -0
- package/lib/dist/painter/background/background.js +63 -0
- package/lib/dist/painter/background/background.vert +16 -0
- package/lib/dist/painter/background/index.d.ts +0 -0
- package/lib/dist/painter/background/index.d.ts.map +0 -0
- package/lib/dist/painter/background/index.js +2 -0
- package/lib/dist/painter/clear.d.ts +11 -6
- package/lib/dist/painter/clear.d.ts.map +1 -1
- package/lib/dist/painter/clear.js +51 -0
- package/lib/dist/painter/depth.d.ts +0 -0
- package/lib/dist/painter/depth.d.ts.map +1 -1
- package/lib/dist/painter/depth.js +34 -0
- package/lib/dist/painter/filter/filter.d.ts +23 -0
- package/lib/dist/painter/filter/filter.d.ts.map +1 -0
- package/lib/dist/painter/filter/filter.frag +15 -0
- package/lib/dist/painter/filter/filter.js +76 -0
- package/lib/dist/painter/filter/filter.vert +11 -0
- package/lib/dist/painter/filter/index.d.ts +2 -0
- package/lib/dist/painter/filter/index.d.ts.map +1 -0
- package/lib/dist/painter/filter/index.js +2 -0
- package/lib/dist/painter/framebuffer.d.ts +38 -0
- package/lib/dist/painter/framebuffer.d.ts.map +1 -0
- package/lib/dist/painter/framebuffer.js +102 -0
- package/lib/dist/painter/group.d.ts +4 -0
- package/lib/dist/painter/group.d.ts.map +1 -1
- package/lib/dist/painter/group.js +59 -0
- package/lib/dist/painter/index.d.ts +3 -1
- package/lib/dist/painter/index.d.ts.map +1 -1
- package/lib/dist/painter/index.js +12 -0
- package/lib/dist/painter/logic.d.ts +3 -0
- package/lib/dist/painter/logic.d.ts.map +1 -1
- package/lib/dist/painter/logic.js +16 -0
- package/lib/dist/painter/mesh/gltf/gltf.d.ts +14 -0
- package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -0
- package/lib/dist/painter/mesh/gltf/gltf.js +93 -0
- package/lib/dist/painter/mesh/gltf/index.d.ts +2 -0
- package/lib/dist/painter/mesh/gltf/index.d.ts.map +1 -0
- package/lib/dist/painter/mesh/gltf/index.js +2 -0
- package/lib/dist/painter/mesh/index.d.ts +4 -0
- package/lib/dist/painter/mesh/index.d.ts.map +1 -0
- package/lib/dist/painter/mesh/index.js +4 -0
- package/lib/dist/painter/mesh/mesh/index.d.ts +2 -0
- package/lib/dist/painter/mesh/mesh/index.d.ts.map +1 -0
- package/lib/dist/painter/mesh/mesh/index.js +2 -0
- package/lib/dist/painter/mesh/mesh/mesh.d.ts +32 -0
- package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -0
- package/lib/dist/painter/mesh/mesh/mesh.js +128 -0
- package/lib/dist/painter/mesh/normals/index.d.ts +2 -0
- package/lib/dist/painter/mesh/normals/index.d.ts.map +1 -0
- package/lib/dist/painter/mesh/normals/index.js +2 -0
- package/lib/dist/painter/mesh/normals/normals.d.ts +18 -0
- package/lib/dist/painter/mesh/normals/normals.d.ts.map +1 -0
- package/lib/dist/painter/mesh/normals/normals.js +53 -0
- package/lib/dist/painter/mesh/normals/shader.frag +14 -0
- package/lib/dist/painter/mesh/normals/shader.vert +18 -0
- package/lib/dist/painter/node.d.ts +26 -0
- package/lib/dist/painter/node.d.ts.map +1 -0
- package/lib/dist/painter/node.js +67 -0
- package/lib/dist/painter/painter.d.ts +1 -0
- package/lib/dist/painter/painter.d.ts.map +1 -1
- package/lib/dist/painter/painter.js +4 -0
- package/lib/dist/painter/segments/index.d.ts +0 -0
- package/lib/dist/painter/segments/index.d.ts.map +0 -0
- package/lib/dist/painter/segments/index.js +2 -0
- package/lib/dist/painter/segments/segments.d.ts +56 -17
- package/lib/dist/painter/segments/segments.d.ts.map +1 -1
- package/lib/dist/painter/segments/segments.frag +12 -0
- package/lib/dist/painter/segments/segments.js +196 -0
- package/lib/dist/painter/segments/segments.vert +114 -0
- package/lib/dist/painter/skybox/index.d.ts +0 -0
- package/lib/dist/painter/skybox/index.d.ts.map +0 -0
- package/lib/dist/painter/skybox/index.js +2 -0
- package/lib/dist/painter/skybox/skybox.d.ts +2 -2
- package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
- package/lib/dist/painter/skybox/skybox.frag +15 -0
- package/lib/dist/painter/skybox/skybox.js +59 -0
- package/lib/dist/painter/skybox/skybox.vert +10 -0
- package/lib/dist/parser/for-each-line.d.ts +3 -0
- package/lib/dist/parser/for-each-line.d.ts.map +1 -1
- package/lib/dist/parser/for-each-line.js +17 -0
- package/lib/dist/parser/gltf/gltf.d.ts +34 -0
- package/lib/dist/parser/gltf/gltf.d.ts.map +1 -0
- package/lib/dist/parser/gltf/gltf.js +164 -0
- package/lib/dist/parser/gltf/index.d.ts +2 -0
- package/lib/dist/parser/gltf/index.d.ts.map +1 -0
- package/lib/dist/parser/gltf/index.js +2 -0
- package/lib/dist/parser/gltf/parser.d.ts +9 -0
- package/lib/dist/parser/gltf/parser.d.ts.map +1 -0
- package/lib/dist/parser/gltf/parser.js +53 -0
- package/lib/dist/parser/index.d.ts +1 -0
- package/lib/dist/parser/index.d.ts.map +1 -1
- package/lib/dist/parser/index.js +3 -0
- package/lib/dist/parser/mesh/wavefront.d.ts +70 -12
- package/lib/dist/parser/mesh/wavefront.d.ts.map +1 -1
- package/lib/dist/parser/mesh/wavefront.js +246 -0
- package/lib/dist/program/index.d.ts +0 -0
- package/lib/dist/program/index.d.ts.map +0 -0
- package/lib/dist/program/index.js +2 -0
- package/lib/dist/program/program.d.ts +15 -0
- package/lib/dist/program/program.d.ts.map +1 -1
- package/lib/dist/program/program.js +220 -0
- package/lib/dist/ref-map.d.ts +15 -0
- package/lib/dist/ref-map.d.ts.map +1 -1
- package/lib/dist/ref-map.js +48 -0
- package/lib/dist/resource/index.d.ts +0 -0
- package/lib/dist/resource/index.d.ts.map +0 -0
- package/lib/dist/resource/index.js +5 -0
- package/lib/dist/resource/program.d.ts +0 -0
- package/lib/dist/resource/program.d.ts.map +1 -1
- package/lib/dist/resource/program.js +20 -0
- package/lib/dist/resource/resource.d.ts +7 -1
- package/lib/dist/resource/resource.d.ts.map +1 -1
- package/lib/dist/resource/resource.js +48 -0
- package/lib/dist/resource/texture2d.d.ts +1 -0
- package/lib/dist/resource/texture2d.d.ts.map +1 -1
- package/lib/dist/resource/texture2d.js +20 -0
- package/lib/dist/resource/textureCube.d.ts +0 -0
- package/lib/dist/resource/textureCube.d.ts.map +1 -1
- package/lib/dist/resource/textureCube.js +17 -0
- package/lib/dist/shader/code.d.ts +12 -0
- package/lib/dist/shader/code.d.ts.map +1 -0
- package/lib/dist/shader/code.js +32 -0
- package/lib/dist/shader/fragment.d.ts +23 -0
- package/lib/dist/shader/fragment.d.ts.map +1 -0
- package/lib/dist/shader/fragment.js +37 -0
- package/lib/dist/shader/vertex.d.ts +23 -0
- package/lib/dist/shader/vertex.d.ts.map +1 -0
- package/lib/dist/shader/vertex.js +35 -0
- package/lib/dist/texture/index.d.ts +0 -0
- package/lib/dist/texture/index.d.ts.map +0 -0
- package/lib/dist/texture/index.js +3 -0
- package/lib/dist/texture/texture2d.d.ts +4 -3
- package/lib/dist/texture/texture2d.d.ts.map +1 -1
- package/lib/dist/texture/texture2d.js +132 -0
- package/lib/dist/texture/textureCube.d.ts +0 -0
- package/lib/dist/texture/textureCube.d.ts.map +1 -1
- package/lib/dist/texture/textureCube.js +87 -0
- package/lib/dist/types/animation.d.ts +20 -0
- package/lib/dist/types/animation.d.ts.map +1 -0
- package/lib/dist/types/animation.js +2 -0
- package/lib/dist/types/arrays.d.ts +33 -0
- package/lib/dist/types/arrays.d.ts.map +1 -0
- package/lib/dist/types/arrays.js +2 -0
- package/lib/dist/types/context.d.ts +7 -2
- package/lib/dist/types/context.d.ts.map +1 -1
- package/lib/dist/types/context.js +2 -0
- package/lib/dist/types/gltf.d.ts +200 -0
- package/lib/dist/types/gltf.d.ts.map +1 -0
- package/lib/dist/types/gltf.js +117 -0
- package/lib/dist/types/guards.d.ts +25 -0
- package/lib/dist/types/guards.d.ts.map +1 -0
- package/lib/dist/types/guards.js +218 -0
- package/lib/dist/types/index.d.ts +2 -0
- package/lib/dist/types/index.d.ts.map +1 -1
- package/lib/dist/types/index.js +10 -0
- package/lib/dist/types/input-keyboard.d.ts +3 -0
- package/lib/dist/types/input-keyboard.d.ts.map +1 -1
- package/lib/dist/types/input-keyboard.js +2 -0
- package/lib/dist/types/input-pointer.d.ts +33 -20
- package/lib/dist/types/input-pointer.d.ts.map +1 -1
- package/lib/dist/types/input-pointer.js +2 -0
- package/lib/dist/types/mesh.d.ts +10 -0
- package/lib/dist/types/mesh.d.ts.map +1 -0
- package/lib/dist/types/mesh.js +2 -0
- package/lib/dist/types/painter.d.ts +0 -0
- package/lib/dist/types/painter.d.ts.map +0 -0
- package/lib/dist/types/painter.js +2 -0
- package/lib/dist/types/program.d.ts +15 -0
- package/lib/dist/types/program.d.ts.map +1 -1
- package/lib/dist/types/program.js +2 -0
- package/lib/dist/types/texture2d.d.ts +14 -6
- package/lib/dist/types/texture2d.d.ts.map +1 -1
- package/lib/dist/types/texture2d.js +2 -0
- package/lib/dist/types/textureCube.d.ts +39 -0
- package/lib/dist/types/textureCube.d.ts.map +1 -1
- package/lib/dist/types/textureCube.js +2 -0
- package/lib/dist/types/webgl.d.ts +28 -1
- package/lib/dist/types/webgl.d.ts.map +1 -1
- package/lib/dist/types/webgl.js +2 -0
- package/lib/dist/utils/action/camera.d.ts +13 -0
- package/lib/dist/utils/action/camera.d.ts.map +1 -0
- package/lib/dist/utils/action/camera.js +30 -0
- package/lib/dist/utils/action/index.d.ts +2 -0
- package/lib/dist/utils/action/index.d.ts.map +1 -0
- package/lib/dist/utils/action/index.js +2 -0
- package/lib/dist/utils/canvas.d.ts +9 -1
- package/lib/dist/utils/canvas.d.ts.map +1 -1
- package/lib/dist/utils/canvas.js +23 -0
- package/lib/dist/utils/ease-func/ease-func.d.ts +32 -0
- package/lib/dist/utils/ease-func/ease-func.d.ts.map +1 -0
- package/lib/dist/utils/ease-func/ease-func.js +142 -0
- package/lib/dist/utils/ease-func/index.d.ts +2 -0
- package/lib/dist/utils/ease-func/index.d.ts.map +1 -0
- package/lib/dist/utils/ease-func/index.js +2 -0
- package/lib/dist/utils/fetch/fetch.d.ts +2 -0
- package/lib/dist/utils/fetch/fetch.d.ts.map +1 -0
- package/lib/dist/utils/fetch/fetch.js +5 -0
- package/lib/dist/utils/fetch/index.d.ts +2 -0
- package/lib/dist/utils/fetch/index.d.ts.map +1 -0
- package/lib/dist/utils/fetch/index.js +2 -0
- package/lib/dist/utils/fullscreen.d.ts +21 -0
- package/lib/dist/utils/fullscreen.d.ts.map +1 -0
- package/lib/dist/utils/fullscreen.js +64 -0
- package/lib/dist/utils/index.d.ts +4 -0
- package/lib/dist/utils/index.d.ts.map +1 -1
- package/lib/dist/utils/index.js +6 -0
- package/lib/dist/utils/math.d.ts +3 -0
- package/lib/dist/utils/math.d.ts.map +1 -0
- package/lib/dist/utils/math.js +11 -0
- package/lib/dist/utils/ref-map.d.ts +22 -0
- package/lib/dist/utils/ref-map.d.ts.map +1 -0
- package/lib/dist/utils/ref-map.js +48 -0
- package/lib/dist/vao/index.d.ts +0 -0
- package/lib/dist/vao/index.d.ts.map +0 -0
- package/lib/dist/vao/index.js +2 -0
- package/lib/dist/vao/vao.d.ts +5 -1
- package/lib/dist/vao/vao.d.ts.map +1 -1
- package/lib/dist/vao/vao.js +67 -0
- package/package.json +2 -4
- package/lib/dist/index.js.map +0 -1
- package/lib/dist/mesh/mesh.d.ts +0 -11
- package/lib/dist/mesh/mesh.d.ts.map +0 -1
- package/lib/dist/painter/isometric/isometric.frag.d.ts +0 -3
- package/lib/dist/painter/isometric/isometric.frag.d.ts.map +0 -1
- package/lib/dist/painter/isometric/isometric.vert.d.ts +0 -3
- package/lib/dist/painter/isometric/isometric.vert.d.ts.map +0 -1
- package/lib/dist/painter/primitive/primitive.frag.d.ts +0 -3
- package/lib/dist/painter/primitive/primitive.frag.d.ts.map +0 -1
- package/lib/dist/painter/primitive/primitive.vert.d.ts +0 -3
- package/lib/dist/painter/primitive/primitive.vert.d.ts.map +0 -1
- package/lib/dist/painter/sprites/sprites-painter.frag.d.ts +0 -3
- package/lib/dist/painter/sprites/sprites-painter.frag.d.ts.map +0 -1
- package/lib/dist/painter/sprites/sprites-painter.vert.d.ts +0 -3
- package/lib/dist/painter/sprites/sprites-painter.vert.d.ts.map +0 -1
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
import { TgdQuat, TgdVec3, TgdMat4 } from "./../math/index.js";
|
|
2
|
+
import { TgdMat3 } from "./../math/mat3.js";
|
|
3
|
+
import { TgdEvent } from "../event/index.js";
|
|
4
|
+
export class TgdCamera {
|
|
5
|
+
static incrementalId = 1;
|
|
6
|
+
/**
|
|
7
|
+
* A change in the position/orientation/size of the camera.
|
|
8
|
+
*/
|
|
9
|
+
eventTransformChange = new TgdEvent();
|
|
10
|
+
name;
|
|
11
|
+
_screenWidth = 1920;
|
|
12
|
+
_screenHeight = 1080;
|
|
13
|
+
_screenAspectRatio = 1920 / 1080;
|
|
14
|
+
/** Do we need recalculation? */
|
|
15
|
+
_dirtyModelView = true;
|
|
16
|
+
dirtyModelViewInverse = true;
|
|
17
|
+
_dirtyAxis = true;
|
|
18
|
+
_dirtyProjection = true;
|
|
19
|
+
dirtyProjectionInverse = true;
|
|
20
|
+
_near = 1e-3;
|
|
21
|
+
_far = Infinity;
|
|
22
|
+
_axisX = new TgdVec3();
|
|
23
|
+
_axisY = new TgdVec3();
|
|
24
|
+
_axisZ = new TgdVec3();
|
|
25
|
+
// transformation
|
|
26
|
+
_matrixModelView = new TgdMat4();
|
|
27
|
+
_matrixModelViewInverse = new TgdMat4();
|
|
28
|
+
_matrixProjectionInverse = new TgdMat4();
|
|
29
|
+
_orientation = new TgdQuat(0, 0, 0, 1);
|
|
30
|
+
_shift = new TgdVec3(0, 0, 0);
|
|
31
|
+
_target = new TgdVec3(0, 0, 0);
|
|
32
|
+
_position = new TgdVec3(0, 0, 0);
|
|
33
|
+
_distance = 10;
|
|
34
|
+
_zoom = 1;
|
|
35
|
+
// For fast calculations (we don't want to recreate them).
|
|
36
|
+
tmpMat3 = new TgdMat3();
|
|
37
|
+
tmpVec3 = new TgdVec3();
|
|
38
|
+
constructor(options = {}) {
|
|
39
|
+
this.name = options.name ?? `TgdCamera#${TgdCamera.incrementalId++}`;
|
|
40
|
+
this._near = options.near ?? 1e-3;
|
|
41
|
+
this._far = options.far ?? 1e6;
|
|
42
|
+
this._distance = options.distance ?? 10;
|
|
43
|
+
this._zoom = options.zoom ?? 1;
|
|
44
|
+
const [tx, ty, tz] = options.target ?? [0, 0, 0];
|
|
45
|
+
this.target.reset(tx, ty, tz);
|
|
46
|
+
const [qx, qy, qz, qw] = options.orientation ?? [0, 0, 0, 1];
|
|
47
|
+
this.orientation.reset(qx, qy, qz, qw);
|
|
48
|
+
}
|
|
49
|
+
get near() {
|
|
50
|
+
return this._near;
|
|
51
|
+
}
|
|
52
|
+
set near(v) {
|
|
53
|
+
if (v === this._near)
|
|
54
|
+
return;
|
|
55
|
+
this._near = v;
|
|
56
|
+
this.dirtyProjection = true;
|
|
57
|
+
}
|
|
58
|
+
get far() {
|
|
59
|
+
return this._far;
|
|
60
|
+
}
|
|
61
|
+
set far(v) {
|
|
62
|
+
if (v === this._far)
|
|
63
|
+
return;
|
|
64
|
+
this._far = v;
|
|
65
|
+
this.dirtyProjection = true;
|
|
66
|
+
}
|
|
67
|
+
get screenAspectRatio() {
|
|
68
|
+
return this._screenAspectRatio;
|
|
69
|
+
}
|
|
70
|
+
get screenWidth() {
|
|
71
|
+
return this._screenWidth;
|
|
72
|
+
}
|
|
73
|
+
set screenWidth(v) {
|
|
74
|
+
if (v === this._screenWidth)
|
|
75
|
+
return;
|
|
76
|
+
this._screenWidth = v;
|
|
77
|
+
this.dirtyProjection = true;
|
|
78
|
+
this._screenAspectRatio = this._screenWidth / this._screenHeight;
|
|
79
|
+
}
|
|
80
|
+
get screenHeight() {
|
|
81
|
+
return this._screenHeight;
|
|
82
|
+
}
|
|
83
|
+
set screenHeight(v) {
|
|
84
|
+
if (v === this._screenHeight)
|
|
85
|
+
return;
|
|
86
|
+
this._screenHeight = v;
|
|
87
|
+
this.dirtyProjection = true;
|
|
88
|
+
this._screenAspectRatio = this._screenWidth / this._screenHeight;
|
|
89
|
+
}
|
|
90
|
+
get spaceHeightAtTarget() {
|
|
91
|
+
return this.getSpaceHeightAtTarget();
|
|
92
|
+
}
|
|
93
|
+
set spaceHeightAtTarget(v) {
|
|
94
|
+
this.setSpaceHeightAtTarget(v);
|
|
95
|
+
}
|
|
96
|
+
get spaceWidthAtTarget() {
|
|
97
|
+
return (this.screenWidth * this.spaceHeightAtTarget) / this.screenHeight;
|
|
98
|
+
}
|
|
99
|
+
set spaceWidthAtTarget(v) {
|
|
100
|
+
this.setSpaceHeightAtTarget((v * this.screenHeight) / this.screenWidth);
|
|
101
|
+
}
|
|
102
|
+
face(face) {
|
|
103
|
+
this._orientation.face(face);
|
|
104
|
+
this.dirtyModelView = true;
|
|
105
|
+
this.dirtyAxis = true;
|
|
106
|
+
}
|
|
107
|
+
from(camera) {
|
|
108
|
+
const { _orientation: orientation, _target: target, distance, zoom, screenWidth, screenHeight, } = camera;
|
|
109
|
+
this._orientation.from(orientation);
|
|
110
|
+
this._target.from(target);
|
|
111
|
+
this.distance = distance;
|
|
112
|
+
this.zoom = zoom;
|
|
113
|
+
this.screenWidth = screenWidth;
|
|
114
|
+
this.screenHeight = screenHeight;
|
|
115
|
+
this.dirtyModelView = true;
|
|
116
|
+
this.dirtyAxis = true;
|
|
117
|
+
this.copyProjectionFrom(camera);
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
get axisX() {
|
|
121
|
+
this.updateAxisIfNeeded();
|
|
122
|
+
return this._axisX;
|
|
123
|
+
}
|
|
124
|
+
get axisY() {
|
|
125
|
+
this.updateAxisIfNeeded();
|
|
126
|
+
return this._axisY;
|
|
127
|
+
}
|
|
128
|
+
get axisZ() {
|
|
129
|
+
this.updateAxisIfNeeded();
|
|
130
|
+
return this._axisZ;
|
|
131
|
+
}
|
|
132
|
+
get matrixModelView() {
|
|
133
|
+
this.updateIfNeeded();
|
|
134
|
+
return this._matrixModelView;
|
|
135
|
+
}
|
|
136
|
+
get matrixModelViewInverse() {
|
|
137
|
+
if (this.dirtyModelViewInverse) {
|
|
138
|
+
this._matrixModelViewInverse.invert(this.matrixModelView);
|
|
139
|
+
this.dirtyModelViewInverse = false;
|
|
140
|
+
}
|
|
141
|
+
return this._matrixModelViewInverse;
|
|
142
|
+
}
|
|
143
|
+
get matrixProjectionInverse() {
|
|
144
|
+
if (this.dirtyProjectionInverse) {
|
|
145
|
+
this._matrixProjectionInverse.invert(this.matrixProjection);
|
|
146
|
+
this.dirtyProjectionInverse = false;
|
|
147
|
+
}
|
|
148
|
+
return this._matrixProjectionInverse;
|
|
149
|
+
}
|
|
150
|
+
get orientation() {
|
|
151
|
+
return this._orientation;
|
|
152
|
+
}
|
|
153
|
+
set orientation(quat) {
|
|
154
|
+
const { _orientation } = this;
|
|
155
|
+
if (quat.isEqual(_orientation))
|
|
156
|
+
return;
|
|
157
|
+
const [x, y, z, w] = quat;
|
|
158
|
+
_orientation.x = x;
|
|
159
|
+
_orientation.y = y;
|
|
160
|
+
_orientation.z = z;
|
|
161
|
+
_orientation.w = w;
|
|
162
|
+
this.dirtyModelView = true;
|
|
163
|
+
this.dirtyAxis = true;
|
|
164
|
+
}
|
|
165
|
+
setOrientation(x, y, z, w) {
|
|
166
|
+
const { _orientation } = this;
|
|
167
|
+
_orientation.x = x;
|
|
168
|
+
_orientation.y = y;
|
|
169
|
+
_orientation.z = z;
|
|
170
|
+
_orientation.w = w;
|
|
171
|
+
this.dirtyModelView = true;
|
|
172
|
+
this.dirtyAxis = true;
|
|
173
|
+
return this;
|
|
174
|
+
}
|
|
175
|
+
get position() {
|
|
176
|
+
this.updateIfNeeded();
|
|
177
|
+
return this._position;
|
|
178
|
+
}
|
|
179
|
+
get target() {
|
|
180
|
+
return this._target;
|
|
181
|
+
}
|
|
182
|
+
set target(v) {
|
|
183
|
+
this._target.from(v);
|
|
184
|
+
this.dirtyModelView = true;
|
|
185
|
+
}
|
|
186
|
+
setTarget(x, y, z) {
|
|
187
|
+
const { _target } = this;
|
|
188
|
+
_target.x = x;
|
|
189
|
+
_target.y = y;
|
|
190
|
+
_target.z = z;
|
|
191
|
+
this.dirtyModelView = true;
|
|
192
|
+
return this;
|
|
193
|
+
}
|
|
194
|
+
get shift() {
|
|
195
|
+
return this._shift;
|
|
196
|
+
}
|
|
197
|
+
set shift(v) {
|
|
198
|
+
this._shift.from(v);
|
|
199
|
+
this.dirtyModelView = true;
|
|
200
|
+
}
|
|
201
|
+
setShift(x, y, z) {
|
|
202
|
+
const { _shift } = this;
|
|
203
|
+
_shift.x = x;
|
|
204
|
+
_shift.y = y;
|
|
205
|
+
_shift.z = z;
|
|
206
|
+
this.dirtyModelView = true;
|
|
207
|
+
return this;
|
|
208
|
+
}
|
|
209
|
+
get x() {
|
|
210
|
+
return this._target.x;
|
|
211
|
+
}
|
|
212
|
+
set x(v) {
|
|
213
|
+
const { _target: target } = this;
|
|
214
|
+
if (v === target.x)
|
|
215
|
+
return;
|
|
216
|
+
target.x = v;
|
|
217
|
+
this.dirtyModelView = true;
|
|
218
|
+
}
|
|
219
|
+
get y() {
|
|
220
|
+
return this._target.y;
|
|
221
|
+
}
|
|
222
|
+
set y(v) {
|
|
223
|
+
const { _target: target } = this;
|
|
224
|
+
if (v === target.y)
|
|
225
|
+
return;
|
|
226
|
+
target.y = v;
|
|
227
|
+
this.dirtyModelView = true;
|
|
228
|
+
}
|
|
229
|
+
get z() {
|
|
230
|
+
return this._target.z;
|
|
231
|
+
}
|
|
232
|
+
set z(v) {
|
|
233
|
+
const { _target: target } = this;
|
|
234
|
+
if (v === target.z)
|
|
235
|
+
return;
|
|
236
|
+
target.z = v;
|
|
237
|
+
this.dirtyModelView = true;
|
|
238
|
+
}
|
|
239
|
+
get distance() {
|
|
240
|
+
return this._distance;
|
|
241
|
+
}
|
|
242
|
+
set distance(v) {
|
|
243
|
+
if (this._distance === v)
|
|
244
|
+
return;
|
|
245
|
+
this._distance = v;
|
|
246
|
+
this.dirtyModelView = true;
|
|
247
|
+
}
|
|
248
|
+
get zoom() {
|
|
249
|
+
return this._zoom;
|
|
250
|
+
}
|
|
251
|
+
set zoom(v) {
|
|
252
|
+
if (this._zoom === v)
|
|
253
|
+
return;
|
|
254
|
+
this._zoom = v;
|
|
255
|
+
this.dirtyModelView = true;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Add (x,y,z) to the target coords in Camera space.
|
|
259
|
+
* That means we are moving along the camera axis.
|
|
260
|
+
*/
|
|
261
|
+
moveTarget(x, y, z) {
|
|
262
|
+
const { _target: target } = this;
|
|
263
|
+
this.updateAxisIfNeeded();
|
|
264
|
+
const { _axisX: axisX, _axisY: axisY, _axisZ: axisZ, tmpVec3 } = this;
|
|
265
|
+
tmpVec3
|
|
266
|
+
.from(axisX)
|
|
267
|
+
.scale(x)
|
|
268
|
+
.addWithScale(axisY, y)
|
|
269
|
+
.addWithScale(axisZ, z);
|
|
270
|
+
target.x += tmpVec3.x;
|
|
271
|
+
target.y += tmpVec3.y;
|
|
272
|
+
target.z += tmpVec3.z;
|
|
273
|
+
this.dirtyModelView = true;
|
|
274
|
+
}
|
|
275
|
+
moveShift(x, y, z) {
|
|
276
|
+
const [sx, sy, sz] = this._shift;
|
|
277
|
+
this._shift.reset(x + sx, y + sy, z + sz);
|
|
278
|
+
this._dirtyModelView = true;
|
|
279
|
+
}
|
|
280
|
+
orbitAroundX(angleInRadians) {
|
|
281
|
+
this.updateAxisIfNeeded();
|
|
282
|
+
const { _axisX: axisX, _axisY: axisY, _axisZ: axisZ, _orientation: orientation, } = this;
|
|
283
|
+
axisY.rotateAround(axisX, angleInRadians);
|
|
284
|
+
axisZ.rotateAround(axisX, angleInRadians);
|
|
285
|
+
orientation.fromAxis(axisX, axisY, axisZ);
|
|
286
|
+
this.dirtyModelView = true;
|
|
287
|
+
return this;
|
|
288
|
+
}
|
|
289
|
+
orbitAroundY(angleInRadians) {
|
|
290
|
+
this.updateAxisIfNeeded();
|
|
291
|
+
const { _axisX: axisX, _axisY: axisY, _axisZ: axisZ, _orientation: orientation, } = this;
|
|
292
|
+
axisX.rotateAround(axisY, angleInRadians);
|
|
293
|
+
axisZ.rotateAround(axisY, angleInRadians);
|
|
294
|
+
orientation.fromAxis(axisX, axisY, axisZ);
|
|
295
|
+
this.dirtyModelView = true;
|
|
296
|
+
return this;
|
|
297
|
+
}
|
|
298
|
+
orbitAroundZ(angleInRadians) {
|
|
299
|
+
this.updateAxisIfNeeded();
|
|
300
|
+
const { _axisX: axisX, _axisY: axisY, _axisZ: axisZ, _orientation: orientation, } = this;
|
|
301
|
+
axisX.rotateAround(axisZ, angleInRadians);
|
|
302
|
+
axisY.rotateAround(axisZ, angleInRadians);
|
|
303
|
+
orientation.fromAxis(axisX, axisY, axisZ);
|
|
304
|
+
this.dirtyModelView = true;
|
|
305
|
+
return this;
|
|
306
|
+
}
|
|
307
|
+
debug(caption) {
|
|
308
|
+
this._orientation.debug(`${caption ?? this.name} quaternion:`);
|
|
309
|
+
}
|
|
310
|
+
updateAxisIfNeeded() {
|
|
311
|
+
if (this.dirtyAxis)
|
|
312
|
+
this.updateAxis();
|
|
313
|
+
}
|
|
314
|
+
updateAxis() {
|
|
315
|
+
const { tmpMat3 } = this;
|
|
316
|
+
tmpMat3.fromQuat(this._orientation);
|
|
317
|
+
tmpMat3.toAxis(this._axisX, this._axisY, this._axisZ);
|
|
318
|
+
this.dirtyAxis = false;
|
|
319
|
+
}
|
|
320
|
+
updateIfNeeded() {
|
|
321
|
+
if (!this.dirtyModelView)
|
|
322
|
+
return;
|
|
323
|
+
const { tmpMat3, tmpVec3, _position } = this;
|
|
324
|
+
const mat = this._matrixModelView;
|
|
325
|
+
this.updateAxis();
|
|
326
|
+
const d = this._distance;
|
|
327
|
+
const { x: sx, y: sy, z: sz } = this._shift;
|
|
328
|
+
const { x: tx, y: ty, z: tz } = this._target;
|
|
329
|
+
const { x: ax, y: ay, z: az } = this._axisZ;
|
|
330
|
+
_position.x = tx + d * ax;
|
|
331
|
+
_position.y = ty + d * ay;
|
|
332
|
+
_position.z = tz + d * az;
|
|
333
|
+
_position.addWithScale(this._axisX, sx);
|
|
334
|
+
_position.addWithScale(this._axisY, sy);
|
|
335
|
+
_position.addWithScale(this._axisZ, sz);
|
|
336
|
+
tmpVec3.from(_position).applyMatrix(tmpMat3.transpose()).scale(-1);
|
|
337
|
+
mat.m30 = tmpVec3.x;
|
|
338
|
+
mat.m31 = tmpVec3.y;
|
|
339
|
+
mat.m32 = tmpVec3.z;
|
|
340
|
+
mat.fromMat3(tmpMat3);
|
|
341
|
+
this.dirtyModelView = false;
|
|
342
|
+
}
|
|
343
|
+
get dirtyModelView() {
|
|
344
|
+
return this._dirtyModelView;
|
|
345
|
+
}
|
|
346
|
+
set dirtyModelView(v) {
|
|
347
|
+
this._dirtyModelView = v;
|
|
348
|
+
if (v) {
|
|
349
|
+
this.dirtyModelViewInverse = true;
|
|
350
|
+
this.eventTransformChange.dispatch(this);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
get dirtyAxis() {
|
|
354
|
+
return this._dirtyAxis;
|
|
355
|
+
}
|
|
356
|
+
set dirtyAxis(v) {
|
|
357
|
+
this._dirtyAxis = v;
|
|
358
|
+
}
|
|
359
|
+
get dirtyProjection() {
|
|
360
|
+
return this._dirtyProjection;
|
|
361
|
+
}
|
|
362
|
+
set dirtyProjection(v) {
|
|
363
|
+
this._dirtyProjection = v;
|
|
364
|
+
if (v)
|
|
365
|
+
this.dirtyProjectionInverse = true;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhbWVyYS9jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFlLE1BQU0sV0FBVyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBYW5DLE1BQU0sT0FBZ0IsU0FBUztJQUNuQixNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQTtJQUVoQzs7T0FFRztJQUNhLG9CQUFvQixHQUFHLElBQUksUUFBUSxFQUFhLENBQUE7SUFDaEQsSUFBSSxDQUFRO0lBRXBCLFlBQVksR0FBRyxJQUFJLENBQUE7SUFDbkIsYUFBYSxHQUFHLElBQUksQ0FBQTtJQUNwQixrQkFBa0IsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBRXhDLGdDQUFnQztJQUN4QixlQUFlLEdBQUcsSUFBSSxDQUFBO0lBQ3RCLHFCQUFxQixHQUFHLElBQUksQ0FBQTtJQUM1QixVQUFVLEdBQUcsSUFBSSxDQUFBO0lBQ2YsZ0JBQWdCLEdBQUcsSUFBSSxDQUFBO0lBQ3ZCLHNCQUFzQixHQUFHLElBQUksQ0FBQTtJQUU3QixLQUFLLEdBQUcsSUFBSSxDQUFBO0lBQ1osSUFBSSxHQUFHLFFBQVEsQ0FBQTtJQUVSLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0lBQ3RCLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0lBQ3RCLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0lBQ3ZDLGlCQUFpQjtJQUNBLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7SUFDaEMsdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtJQUN2Qyx3QkFBd0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFB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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
export * from "./camera";
|
|
2
|
+
export * from "./camera-orthographic";
|
|
3
|
+
export * from "./camera-perspective";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/camera/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/camera/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./camera.js";
|
|
2
|
+
export * from "./camera-orthographic.js";
|
|
3
|
+
export * from "./camera-perspective.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2FtZXJhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQSJ9
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TgdCamera } from "../../camera";
|
|
2
|
+
import { TgdContextOptions } from "../../context";
|
|
3
|
+
import { TgdEvent } from "../../event";
|
|
4
|
+
import { TgdQuat } from "../../math";
|
|
5
|
+
export interface TgdCanvasGizmoOptions extends TgdContextOptions {
|
|
6
|
+
canvas?: HTMLCanvasElement;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The Gizmo displays the orientation of an attached camera.
|
|
10
|
+
* You can click one of the axis to force the camera to face it.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TgdCanvasGizmo {
|
|
13
|
+
private readonly options;
|
|
14
|
+
/**
|
|
15
|
+
* The user clicked a tip, so we dispatch the target orientation.
|
|
16
|
+
*/
|
|
17
|
+
eventTipClick: TgdEvent<{
|
|
18
|
+
from: Readonly<TgdQuat>;
|
|
19
|
+
to: Readonly<TgdQuat>;
|
|
20
|
+
}>;
|
|
21
|
+
private _canvas;
|
|
22
|
+
private context;
|
|
23
|
+
private cameraExternal;
|
|
24
|
+
private readonly cameraInternal;
|
|
25
|
+
private orbiter;
|
|
26
|
+
private tipsPainter;
|
|
27
|
+
constructor(options?: TgdCanvasGizmoOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Attach the camera we want to track and control.
|
|
30
|
+
*/
|
|
31
|
+
attachCamera(camera: TgdCamera): void;
|
|
32
|
+
detach(): void;
|
|
33
|
+
private attach;
|
|
34
|
+
private readonly handleExternalToInternal;
|
|
35
|
+
private readonly handleInternalToExternal;
|
|
36
|
+
get canvas(): HTMLCanvasElement | null;
|
|
37
|
+
set canvas(canvas: HTMLCanvasElement | null);
|
|
38
|
+
private readonly handleTap;
|
|
39
|
+
private findAxisX;
|
|
40
|
+
private findAxisY;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=gizmo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gizmo.d.ts","sourceRoot":"","sources":["../../../src/canvas/gizmo/gizmo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAc,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAA;AAKrD,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC5D,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AAED;;;GAGG;AACH,qBAAa,cAAc;IAqBX,OAAO,CAAC,QAAQ,CAAC,OAAO;IApBpC;;OAEG;IACI,aAAa;cACV,SAAS,OAAO,CAAC;YACnB,SAAS,OAAO,CAAC;OACrB;IAEJ,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAK7B;IACF,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,WAAW,CAA2B;gBAEjB,OAAO,GAAE,qBAA0B;IAIhE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,SAAS;IAM9B,MAAM;IAUN,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAExC;IAED,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAKxC;IAED,IAAI,MAAM,IAGS,iBAAiB,GAAG,IAAI,CAD1C;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EA6C1C;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAmCzB;IAED,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,SAAS;CAepB"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { TgdCameraPerspective } from "./../../camera/index.js";
|
|
2
|
+
import { TgdContext } from "./../../context/index.js";
|
|
3
|
+
import { TgdControllerCameraOrbit } from "./../../controller/index.js";
|
|
4
|
+
import { TgdEvent } from "./../../event/index.js";
|
|
5
|
+
import { TgdQuat, TgdMat3, TgdVec3 } from "./../../math/index.js";
|
|
6
|
+
import { TgdPainterClear, TgdPainterDepth } from "./../../painter/index.js";
|
|
7
|
+
import { TipsPainter } from "./painter/tips.js";
|
|
8
|
+
/**
|
|
9
|
+
* The Gizmo displays the orientation of an attached camera.
|
|
10
|
+
* You can click one of the axis to force the camera to face it.
|
|
11
|
+
*/
|
|
12
|
+
export class TgdCanvasGizmo {
|
|
13
|
+
options;
|
|
14
|
+
/**
|
|
15
|
+
* The user clicked a tip, so we dispatch the target orientation.
|
|
16
|
+
*/
|
|
17
|
+
eventTipClick = new TgdEvent();
|
|
18
|
+
_canvas = null;
|
|
19
|
+
context = null;
|
|
20
|
+
cameraExternal = null;
|
|
21
|
+
cameraInternal = new TgdCameraPerspective({
|
|
22
|
+
fovy: Math.PI / 3,
|
|
23
|
+
distance: 2.7,
|
|
24
|
+
near: 0.01,
|
|
25
|
+
far: 10,
|
|
26
|
+
});
|
|
27
|
+
orbiter = null;
|
|
28
|
+
tipsPainter = null;
|
|
29
|
+
constructor(options = {}) {
|
|
30
|
+
this.options = options;
|
|
31
|
+
if (options.canvas)
|
|
32
|
+
this.canvas = options.canvas;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Attach the camera we want to track and control.
|
|
36
|
+
*/
|
|
37
|
+
attachCamera(camera) {
|
|
38
|
+
this.detach();
|
|
39
|
+
this.cameraExternal = camera;
|
|
40
|
+
this.attach();
|
|
41
|
+
}
|
|
42
|
+
detach() {
|
|
43
|
+
const camera = this.cameraExternal;
|
|
44
|
+
if (camera) {
|
|
45
|
+
camera.eventTransformChange.removeListener(this.handleExternalToInternal);
|
|
46
|
+
this.cameraExternal = null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
attach() {
|
|
50
|
+
const camera = this.cameraExternal;
|
|
51
|
+
if (camera)
|
|
52
|
+
camera.eventTransformChange.addListener(this.handleExternalToInternal);
|
|
53
|
+
this.context?.paint();
|
|
54
|
+
}
|
|
55
|
+
handleExternalToInternal = (externalCamera) => {
|
|
56
|
+
this.cameraInternal.orientation = externalCamera.orientation;
|
|
57
|
+
};
|
|
58
|
+
handleInternalToExternal = (internalCamera) => {
|
|
59
|
+
const { cameraExternal } = this;
|
|
60
|
+
if (cameraExternal) {
|
|
61
|
+
cameraExternal.orientation = internalCamera.orientation;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
get canvas() {
|
|
65
|
+
return this._canvas;
|
|
66
|
+
}
|
|
67
|
+
set canvas(canvas) {
|
|
68
|
+
if (canvas === this._canvas)
|
|
69
|
+
return;
|
|
70
|
+
this._canvas = canvas;
|
|
71
|
+
if (this.context) {
|
|
72
|
+
this.context.inputs.pointer.eventTap.removeListener(this.handleTap);
|
|
73
|
+
this.context.destroy();
|
|
74
|
+
this.context = null;
|
|
75
|
+
const { orbiter } = this;
|
|
76
|
+
if (orbiter) {
|
|
77
|
+
orbiter.detach();
|
|
78
|
+
orbiter.eventChange.removeListener(this.handleInternalToExternal);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
this.tipsPainter?.delete();
|
|
82
|
+
if (!canvas)
|
|
83
|
+
return;
|
|
84
|
+
const context = new TgdContext(canvas, {
|
|
85
|
+
alpha: true,
|
|
86
|
+
depth: true,
|
|
87
|
+
antialias: true,
|
|
88
|
+
name: "GizmoCanvas",
|
|
89
|
+
...this.options,
|
|
90
|
+
});
|
|
91
|
+
context.inputs.pointer.eventTap.addListener(this.handleTap);
|
|
92
|
+
this.context = context;
|
|
93
|
+
context.camera = this.cameraInternal;
|
|
94
|
+
this.orbiter = new TgdControllerCameraOrbit(context, {
|
|
95
|
+
speedPanning: 0,
|
|
96
|
+
speedZoom: 0,
|
|
97
|
+
});
|
|
98
|
+
this.orbiter.eventChange.addListener(this.handleInternalToExternal);
|
|
99
|
+
const painter = new TipsPainter(context);
|
|
100
|
+
this.tipsPainter = painter;
|
|
101
|
+
context.add(new TgdPainterClear(context, {
|
|
102
|
+
color: [0, 0, 0, 0],
|
|
103
|
+
depth: 1,
|
|
104
|
+
}), new TgdPainterDepth(context, { enabled: true }), painter);
|
|
105
|
+
context.paint();
|
|
106
|
+
}
|
|
107
|
+
handleTap = (evt) => {
|
|
108
|
+
const camera = this.context?.camera;
|
|
109
|
+
if (!camera)
|
|
110
|
+
return;
|
|
111
|
+
const { origin, direction } = camera.castRay(evt.x, evt.y);
|
|
112
|
+
const maxDist = 1;
|
|
113
|
+
let bestDist = maxDist;
|
|
114
|
+
let bestTip = TIPS[0];
|
|
115
|
+
for (const tip of TIPS) {
|
|
116
|
+
const dist = tip.distanceToLineSquared(origin, direction);
|
|
117
|
+
if (dist < bestDist) {
|
|
118
|
+
bestDist = dist;
|
|
119
|
+
bestTip = tip;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (bestDist < maxDist) {
|
|
123
|
+
const axisX = new TgdVec3();
|
|
124
|
+
const axisY = new TgdVec3();
|
|
125
|
+
const axisZ = bestTip;
|
|
126
|
+
axisX.from(this.findAxisX());
|
|
127
|
+
if (axisX.isClose(axisZ)) {
|
|
128
|
+
axisY.from(this.findAxisY());
|
|
129
|
+
axisX.from(axisY).cross(axisZ);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
axisY.from(axisZ).cross(axisX);
|
|
133
|
+
}
|
|
134
|
+
const quat = new TgdQuat().fromAxis(axisX, axisY, axisZ);
|
|
135
|
+
if (quat.isEqual(camera.orientation)) {
|
|
136
|
+
quat.rotateAroundY(Math.PI);
|
|
137
|
+
}
|
|
138
|
+
this.eventTipClick.dispatch({
|
|
139
|
+
from: new TgdQuat(camera.orientation),
|
|
140
|
+
to: quat,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
findAxisX() {
|
|
145
|
+
let bestScore = 0;
|
|
146
|
+
let bestTip = TIPS[0];
|
|
147
|
+
const vec = new TgdVec3();
|
|
148
|
+
const mat = new TgdMat3();
|
|
149
|
+
mat.fromQuat(this.cameraInternal.orientation).transpose();
|
|
150
|
+
for (const tip of TIPS) {
|
|
151
|
+
vec.from(tip).applyMatrix(mat);
|
|
152
|
+
if (vec.x > bestScore) {
|
|
153
|
+
bestScore = vec.x;
|
|
154
|
+
bestTip = tip;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return bestTip;
|
|
158
|
+
}
|
|
159
|
+
findAxisY() {
|
|
160
|
+
let bestScore = 0;
|
|
161
|
+
let bestTip = TIPS[0];
|
|
162
|
+
const vec = new TgdVec3();
|
|
163
|
+
const mat = new TgdMat3();
|
|
164
|
+
mat.fromQuat(this.cameraInternal.orientation).transpose();
|
|
165
|
+
for (const tip of TIPS) {
|
|
166
|
+
vec.from(tip).applyMatrix(mat);
|
|
167
|
+
if (vec.y > bestScore) {
|
|
168
|
+
bestScore = vec.y;
|
|
169
|
+
bestTip = tip;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return bestTip;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const TIPS = [
|
|
176
|
+
new TgdVec3(1, 0, 0),
|
|
177
|
+
new TgdVec3(0, 1, 0),
|
|
178
|
+
new TgdVec3(0, 0, 1),
|
|
179
|
+
new TgdVec3(-1, 0, 0),
|
|
180
|
+
new TgdVec3(0, -1, 0),
|
|
181
|
+
new TgdVec3(0, 0, -1),
|
|
182
|
+
];
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2FudmFzL2dpem1vL2dpem1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLGNBQWMsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFNNUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFxQk07SUFwQjdCOztPQUVHO0lBQ0ksYUFBYSxHQUFHLElBQUksUUFBUSxFQUcvQixDQUFBO0lBRUksT0FBTyxHQUE2QixJQUFJLENBQUE7SUFDeEMsT0FBTyxHQUFzQixJQUFJLENBQUE7SUFDakMsY0FBYyxHQUFxQixJQUFJLENBQUE7SUFDOUIsY0FBYyxHQUFHLElBQUksb0JBQW9CLENBQUM7UUFDdkQsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUNqQixRQUFRLEVBQUUsR0FBRztRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsR0FBRyxFQUFFLEVBQUU7S0FDVixDQUFDLENBQUE7SUFDTSxPQUFPLEdBQW9DLElBQUksQ0FBQTtJQUMvQyxXQUFXLEdBQXVCLElBQUksQ0FBQTtJQUU5QyxZQUE2QixVQUFpQyxFQUFFO1FBQW5DLFlBQU8sR0FBUCxPQUFPLENBQTRCO1FBQzVELElBQUksT0FBTyxDQUFDLE1BQU07WUFBRSxJQUFJ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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/canvas/gizmo/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
|