@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
package/lib/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AAErB,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AAErB,cAAc,SAAS,CAAA"}
|
package/lib/dist/index.js
CHANGED
|
@@ -1,2 +1,21 @@
|
|
|
1
|
-
var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};function i(t,e=6){const i=Math.pow(10,e),s=[];let n=0;for(const r of t){const t=(Math.round(r*i)/i).toFixed(e);n=Math.max(n,t.length),s.push(t)}return s.map((t=>t.padStart(n," ")))}t.d(e,{Ev:()=>m,ch:()=>l,op:()=>d,_G:()=>Z,ED:()=>N,sT:()=>Y,CM:()=>P,WG:()=>X,EL:()=>D,U1:()=>B,wB:()=>n,gR:()=>g,Ku:()=>j,ck:()=>V,Wk:()=>k,kV:()=>W,Yv:()=>f,cL:()=>G,Se:()=>H,Hq:()=>$,ML:()=>q,mI:()=>K,aW:()=>o,W0:()=>p,CV:()=>b,S6:()=>I,aS:()=>S,yo:()=>s,qM:()=>r,y0:()=>L,kH:()=>M});class s extends Float32Array{constructor(t=0,e=0,i=0){if(super(3),"number"!=typeof t)return this.x=t[0],this.y=t[1],void(this.z=t[2]);this.x=t,this.y=e,this.z=i}clone(){return new s(this)}isEqual([t,e,i]){return t===this.x&&e===this.y&&i===this.z}isClose([t,e,i],s=1e-6){return!(Math.abs(t-this.x)>s||Math.abs(e-this.y)>s||Math.abs(i-this.z)>s)}rotateAround(t,e){const i=Math.cos(e),s=Math.sin(e),[n,r,o]=this,[a,h,c]=t,u=h*o-c*r,m=c*n-a*o,l=a*r-h*n,d=(n*a+r*h+o*c)*(1-i);return this.x=n*i+u*s+a*d,this.y=r*i+m*s+h*d,this.z=o*i+l*s+c*d,this}applyMatrix(t){const{x:e,y:i,z:s}=this;return this.x=e*t.m00+i*t.m10+s*t.m20,this.y=e*t.m01+i*t.m11+s*t.m21,this.z=e*t.m02+i*t.m12+s*t.m22,this}from([t,e,i]){return this.x=t,this.y=e,this.z=i,this}get x(){return this[0]}set x(t){this[0]=t}get y(){return this[1]}set y(t){this[1]=t}get z(){return this[2]}set z(t){this[2]=t}add(...t){for(const e of t)this[0]+=e[0],this[1]+=e[1],this[2]+=e[2];return this}addWithScale([t,e,i],s=1){return this[0]+=t*s,this[1]+=e*s,this[2]+=i*s,this}subtract(t){return this[0]-=t[0],this[1]-=t[1],this[2]-=t[2],this}scale(t){return this[0]*=t,this[1]*=t,this[2]*=t,this}dot(t){return this[0]*t[0]+this[1]*t[1]+this[2]*t[2]}get size(){return Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2])}normalize(){const t=this[0]*this[0]+this[1]*this[1]+this[2]*this[2];return 0===t?this:this.scale(1/Math.sqrt(t))}cross([t,e,i]){const[s,n,r]=this;this[0]=n*i-e*r,this[1]=r*t-i*s,this[2]=s*e-t*n}random(){return this[0]=Math.random()-.5,this[1]=Math.random()-.5,this[2]=Math.random()-.5,this}debug(t="vec3"){const{x:e,y:i,z:s}=this,n=[e,i,s].map((t=>t.toFixed(6)));console.log(`${t}: `,n.join(" | ")," length:",Math.sqrt(e*e+i*i+s*s))}}class n extends Float32Array{constructor(t=1,e=0,i=0,s=0,n=0,r=1,o=0,a=0,h=0,c=0,u=1,m=0,l=0,d=0,g=0,f=1){super("number"==typeof t?[t,e,i,s,n,r,o,a,h,c,u,m,l,d,g,f]:t)}multiply(t){const[e,i,s,n,r,o,a,h,c,u,m,l,d,g,f,x]=this,[p,v,y,w,E,A,b,T,_,P,M,U,R,z,I,S]=t;return this.m00=e*p+r*v+c*y+d*w,this.m10=e*E+r*A+c*b+d*T,this.m20=e*_+r*P+c*M+d*U,this.m30=e*R+r*z+c*I+d*S,this.m01=i*p+o*v+u*y+g*w,this.m11=i*E+o*A+u*b+g*T,this.m21=i*_+o*P+u*M+g*U,this.m31=i*R+o*z+u*I+g*S,this.m02=s*p+a*v+m*y+f*w,this.m12=s*E+a*A+m*b+f*T,this.m22=s*_+a*P+m*M+f*U,this.m32=s*R+a*z+m*I+f*S,this.m03=n*p+h*v+l*y+x*w,this.m13=n*E+h*A+l*b+x*T,this.m23=n*_+h*P+l*M+x*U,this.m33=n*R+h*z+l*I+x*S,this}invert(){const[t,e,i,s,n,r,o,a,h,c,u,m,l,d,g,f]=this,x=t*r-e*n,p=t*o-i*n,v=t*a-s*n,y=e*o-i*r,w=e*a-s*r,E=i*a-s*o,A=h*d-c*l,b=h*g-u*l,T=h*f-m*l,_=c*g-u*d,P=c*f-m*d,M=u*f-m*g,U=x*M-p*P+v*_+y*T-w*b+E*A;if(!U)return this;const R=1/U;return this[0]=(r*M-o*P+a*_)*R,this[1]=(i*P-e*M-s*_)*R,this[2]=(d*E-g*w+f*y)*R,this[3]=(u*w-c*E-m*y)*R,this[4]=(o*T-n*M-a*b)*R,this[5]=(t*M-i*T+s*b)*R,this[6]=(g*v-l*E-f*p)*R,this[7]=(h*E-u*v+m*p)*R,this[8]=(n*P-r*T+a*A)*R,this[9]=(e*T-t*P-s*A)*R,this[10]=(l*w-d*v+f*x)*R,this[11]=(c*v-h*w-m*x)*R,this[12]=(r*b-n*_-o*A)*R,this[13]=(t*_-e*b+i*A)*R,this[14]=(d*p-l*y-g*x)*R,this[15]=(h*y-c*p+u*x)*R,this}get translation(){const{m30:t,m31:e,m32:i}=this;return new s(t,e,i)}set translation(t){this.m30=t.x,this.m31=t.y,this.m32=t.z}from(t){return this.m00=t.m00,this.m01=t.m01,this.m02=t.m02,this.m03=t.m03,this.m10=t.m10,this.m11=t.m11,this.m12=t.m12,this.m13=t.m13,this.m20=t.m20,this.m21=t.m21,this.m22=t.m22,this.m23=t.m23,this.m30=t.m30,this.m31=t.m31,this.m32=t.m32,this.m33=t.m33,this}fromMat3(t){return this.m00=t.m00,this.m01=t.m01,this.m02=t.m02,this.m10=t.m10,this.m11=t.m11,this.m12=t.m12,this.m20=t.m20,this.m21=t.m21,this.m22=t.m22,this}toAxis(t,e,i){return this.toAxisX(t),this.toAxisY(e),this.toAxisZ(i)}toAxisX(t){return t.x=this.m00,t.y=this.m01,t.z=this.m02,this}toAxisY(t){return t.x=this.m10,t.y=this.m11,t.z=this.m12,this}toAxisZ(t){return t.x=this.m20,t.y=this.m21,t.z=this.m22,this}fromQuat({x:t,y:e,z:i,w:s}){const n=t+t,r=e+e,o=i+i,a=t*n,h=e*n,c=e*r,u=i*n,m=i*r,l=i*o,d=s*n,g=s*r,f=s*o;return this.m00=1-c-l,this.m10=h-f,this.m20=u+g,this.m01=h+f,this.m11=1-a-l,this.m21=m-d,this.m02=u-g,this.m12=m+d,this.m22=1-a-c,this}get m00(){return this[0]}set m00(t){this[0]=t}get m01(){return this[1]}set m01(t){this[1]=t}get m02(){return this[2]}set m02(t){this[2]=t}get m03(){return this[3]}set m03(t){this[3]=t}get m10(){return this[4]}set m10(t){this[4]=t}get m11(){return this[5]}set m11(t){this[5]=t}get m12(){return this[6]}set m12(t){this[6]=t}get m13(){return this[7]}set m13(t){this[7]=t}get m20(){return this[8]}set m20(t){this[8]=t}get m21(){return this[9]}set m21(t){this[9]=t}get m22(){return this[10]}set m22(t){this[10]=t}get m23(){return this[11]}set m23(t){this[11]=t}get m30(){return this[12]}set m30(t){this[12]=t}get m31(){return this[13]}set m31(t){this[13]=t}get m32(){return this[14]}set m32(t){this[14]=t}get m33(){return this[15]}set m33(t){this[15]=t}debug(t="Mat4"){const e=i([this.m00,this.m01,this.m02,this.m03]),s=i([this.m10,this.m11,this.m12,this.m13]),n=i([this.m20,this.m21,this.m22,this.m23]),r=i([this.m30,this.m31,this.m32,this.m33]);console.log(t),console.log(" ",[e[0],s[0],n[0],r[0]].join(" | ")),console.log(" ",[e[1],s[1],n[1],r[1]].join(" | ")),console.log(" ",[e[2],s[2],n[2],r[2]].join(" | ")),console.log(" ",[e[3],s[3],n[3],r[3]].join(" | "))}}class r extends Float32Array{constructor(t=0,e=0,i=0,n=1){return super(4),t instanceof r?(this.x=t.x,this.y=t.y,this.z=t.z,void(this.w=t.w)):t instanceof s?(this.x=t.x,this.y=t.y,this.z=t.z,void(this.w=n)):(this.x=t,this.y=e,this.z=i,void(this.w=n))}reset(t=0,e=0,i=0,s=1){return this.x=t,this.y=e,this.z=i,this.w=s,this}from(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w,this}clone(){return new r(this)}isEqual({x:t,y:e,z:i,w:s}){return t===this.x&&e===this.y&&i===this.z&&s===this.w}isClose({x:t,y:e,z:i,w:s},n=1e-6){return!(Math.abs(t-this.x)>n||Math.abs(e-this.y)>n||Math.abs(i-this.z)>n||Math.abs(s-this.w)>n)}applyMatrix(t){const{x:e,y:i,z:s,w:n}=this;return this.x=e*t.m00+i*t.m10+s*t.m20+n*t.m30,this.y=e*t.m01+i*t.m11+s*t.m21+n*t.m31,this.z=e*t.m02+i*t.m12+s*t.m22+n*t.m32,this.w=e*t.m03+i*t.m13+s*t.m23+n*t.m33,this}get x(){return this[0]}set x(t){this[0]=t}get y(){return this[1]}set y(t){this[1]=t}get z(){return this[2]}set z(t){this[2]=t}get w(){return this[3]}set w(t){this[3]=t}add(...t){for(const e of t)this[0]+=e[0],this[1]+=e[1],this[2]+=e[2],this[3]+=e[3];return this}subtract(t){return this[0]-=t[0],this[1]-=t[1],this[2]-=t[2],this[3]-=t[3],this}scale(t){return this[0]*=t,this[1]*=t,this[2]*=t,this[3]*=t,this}dot(t){return this[0]*t[0]+this[1]*t[1]+this[2]*t[2]+this[3]*t[3]}get size(){return Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]+this[3]*this[3])}normalize(){const t=this[0]*this[0]+this[1]*this[1]+this[2]*this[2]+this[3]*this[3];return 0===t?this:this.scale(1/Math.sqrt(t))}debug(t="vec4"){const{x:e,y:i,z:s,w:n}=this,r=[e,i,s,n].map((t=>t.toFixed(6)));console.log(`${t}: `,r.join(" | "))}}class o extends r{constructor(t=0,e=0,i=0,s=1){"number"==typeof t?super(t,e,i,s):super(t)}clone(){return new o(this)}multiply(t){const[e,i,s,n]=this,[r,o,a,h]=t;return this[0]=h*e+r*n-o*s+a*i,this[1]=h*i+r*s+o*n-a*e,this[2]=h*s-r*i+o*e+a*n,this[3]=h*n-r*e-o*i-a*s,this}fromAxis(t,e,i){const s=t.x+e.y+i.z;if(s>0){const n=Math.sqrt(s+1);this.w=.5*n;const r=.5/n;this.x=(e.z-i.y)*r,this.y=(i.x-t.z)*r,this.z=(t.y-e.x)*r}else{const s=[t,e,i];let n=0;e.y>t.x&&(n=1),i.z>s[n][n]&&(n=2);const r=(n+1)%3,o=(n+2)%3;let a=Math.sqrt(s[n][n]-s[r][r]-s[o][o]+1);this[n]=.5*a,a=.5/a,this[3]=(s[r][o]-s[o][r])*a,this[r]=(s[r][n]+s[n][r])*a,this[o]=(s[o][n]+s[n][o])*a}return this.normalize()}rotateAroundX(t){const e=.5*t,i=this[0],s=this[1],n=this[2],r=this[3],o=Math.sin(e),a=Math.cos(e);return this[0]=i*a+r*o,this[1]=s*a+n*o,this[2]=n*a-s*o,this[3]=r*a-i*o,this}rotateAroundY(t){const e=.5*t,i=this[0],s=this[1],n=this[2],r=this[3],o=Math.sin(e),a=Math.cos(e);return this[0]=i*a-n*o,this[1]=s*a+r*o,this[2]=n*a+i*o,this[3]=r*a-s*o,this}rotateAroundZ(t){const e=.5*t,i=this[0],s=this[1],n=this[2],r=this[3],o=Math.sin(e),a=Math.cos(e);return this[0]=i*a+s*o,this[1]=s*a-i*o,this[2]=n*a+r*o,this[3]=r*a-n*o,this}toAxisZ(t){const{x:e,y:i,z:s,w:n}=this,r=e+e,o=i+i,a=e*r,h=i*o,c=s*r,u=s*o,m=n*r,l=n*o;return t.x=c+l,t.y=u-m,t.z=1-a-h,t}face(t="+X+Y+Z"){const[e,i,s,n]=c[t];return this.x=e,this.y=i,this.z=s,this.w=n,this}}const a=Math.sqrt(2)/2,h=.5,c={"+X+Y+Z":[0,0,0,1],"-Z+Y+X":[0,+a,0,+a],"-X+Y-Z":[0,1,0,0],"+Z+Y-X":[0,-a,0,+a],"+X+Z-Y":[+a,0,0,+a],"+Y+Z+X":[+h,+h,+h,+h],"-X+Z+Y":[0,+a,+a,0],"-Y+Z-X":[+h,-h,-h,+h],"+X-Y-Z":[1,0,0,0],"+X-Z+Y":[-a,0,0,+a],"-X-Y+Z":[0,0,1,0],"-X-Z-Y":[0,+a,-a,0],"+Y+X-Z":[+a,+a,0,0],"+Y-X+Z":[0,0,+a,+a],"+Y-Z-X":[+h,+h,-h,-h],"-Y+X+Z":[0,0,-a,+a],"-Y-X-Z":[+a,-a,0,0],"-Y-Z+X":[+h,-h,+h,-h],"+Z+X+Y":[+h,+h,+h,-h],"+Z-X-Y":[+h,-h,+h,+h],"+Z-Y+X":[+a,0,+a,0],"-Z+X-Y":[+h,+h,-h,+h],"-Z-X+Y":[+h,-h,-h,-h],"-Z-Y-X":[+a,0,-a,0]};class u extends Float32Array{constructor(t=1,e=0,i=0,s=0,n=1,r=0,o=0,a=0,h=1){super("number"==typeof t?[t,e,i,s,n,r,o,a,h]:t)}transpose(){let t=this.m10;return this.m10=this.m01,this.m01=t,t=this.m20,this.m20=this.m02,this.m02=t,t=this.m21,this.m21=this.m12,this.m12=t,this}fromQuat({x:t,y:e,z:i,w:s}){const n=t+t,r=e+e,o=i+i,a=t*n,h=e*n,c=e*r,u=i*n,m=i*r,l=i*o,d=s*n,g=s*r,f=s*o;return this.m00=1-c-l,this.m10=h-f,this.m20=u+g,this.m01=h+f,this.m11=1-a-l,this.m21=m-d,this.m02=u-g,this.m12=m+d,this.m22=1-a-c,this}toAxis(t,e,i){return this.toAxisX(t),this.toAxisY(e),this.toAxisZ(i)}toAxisX(t){return t.x=this.m00,t.y=this.m01,t.z=this.m02,this}toAxisY(t){return t.x=this.m10,t.y=this.m11,t.z=this.m12,this}toAxisZ(t){return t.x=this.m20,t.y=this.m21,t.z=this.m22,this}scale(t){return this[0]*=t,this[1]*=t,this[2]*=t,this[3]*=t,this[4]*=t,this[5]*=t,this[6]*=t,this[7]*=t,this[8]*=t,this}get m00(){return this[0]}set m00(t){this[0]=t}get m01(){return this[1]}set m01(t){this[1]=t}get m02(){return this[2]}set m02(t){this[2]=t}get m10(){return this[3]}set m10(t){this[3]=t}get m11(){return this[4]}set m11(t){this[4]=t}get m12(){return this[5]}set m12(t){this[5]=t}get m20(){return this[6]}set m20(t){this[6]=t}get m21(){return this[7]}set m21(t){this[7]=t}get m22(){return this[8]}set m22(t){this[8]=t}debug(t="Mat3"){const e=i([this.m00,this.m01,this.m02]),s=i([this.m10,this.m11,this.m12]),n=i([this.m20,this.m21,this.m22]);console.log(t),console.log(" ",[e[0],s[0],n[0]].join(" | ")),console.log(" ",[e[1],s[1],n[1]].join(" | ")),console.log(" ",[e[2],s[2],n[2]].join(" | "))}}class m{constructor(){this.dirtyProjection=!0,this._screenWidth=1920,this._screenHeight=1080,this._screenAspectRatio=1920/1080,this.dirty=!0,this.dirtyAxis=!0,this.axisX=new s,this.axisY=new s,this.axisZ=new s,this._matrixViewModel=new n,this.orientation=new o(0,0,0,1),this.target=new s(0,0,0),this._distance=10,this._zoom=1,this.tmpMat3=new u,this.tmpVec3=new s,this.face("+X+Y+Z")}get screenAspectRatio(){return this._screenAspectRatio}get screenWidth(){return this._screenWidth}set screenWidth(t){t!==this._screenWidth&&(this._screenWidth=t,this.dirtyProjection=!0,this._screenAspectRatio=this._screenWidth/this._screenHeight)}get screenHeight(){return this._screenHeight}set screenHeight(t){t!==this._screenHeight&&(this._screenHeight=t,this.dirtyProjection=!0,this._screenAspectRatio=this._screenWidth/this._screenHeight)}face(t){this.orientation.face(t),this.dirty=!0,this.dirtyAxis=!0}from(t){const{orientation:e,target:i,distance:s,zoom:n,screenWidth:r,screenHeight:o}=t;return this.orientation.from(e),this.target.from(i),this.distance=s,this.zoom=n,this.screenWidth=r,this.screenHeight=o,this.dirty=!0,this.dirtyAxis=!0,this.copyProjectionFrom(t),this}copyOrientationFrom({orientation:t}){this.setOrientation(t)}toAxisX(t){return this.updateAxisIfNeeded(),t.from(this.axisX),this}toAxisY(t){return this.updateAxisIfNeeded(),t.from(this.axisY),this}toAxisZ(t){return this.updateAxisIfNeeded(),t.from(this.axisZ),this}get matrixViewModel(){return this.updateIfNeeded(),this._matrixViewModel}setOrientation(t){const{orientation:e}=this;if(t.isEqual(e))return;const[i,s,n,r]=t;e.x=i,e.y=s,e.z=n,e.w=r,this.dirty=!0,this.dirtyAxis=!0}setTarget(t){const{target:e}=this;if(t.isEqual(e))return;const[i,s,n]=t;e.x=i,e.y=s,e.z=n,this.dirty=!0}get x(){return this.target.x}set x(t){const{target:e}=this;t!==e.x&&(e.x=t,this.dirty=!0)}get y(){return this.target.y}set y(t){const{target:e}=this;t!==e.y&&(e.y=t,this.dirty=!0)}get z(){return this.target.z}set z(t){const{target:e}=this;t!==e.z&&(e.z=t,this.dirty=!0)}get distance(){return this._distance}set distance(t){this._distance!==t&&(this._distance=t,this.dirty=!0)}get zoom(){return this._zoom}set zoom(t){this._zoom!==t&&(this._zoom=t,this.dirty=!0)}moveTarget(t,e,i){const{target:s}=this;this.updateAxisIfNeeded();const{axisX:n,axisY:r,axisZ:o,tmpVec3:a}=this;a.from(n).scale(t).addWithScale(r,e).addWithScale(o,i),s.x+=a.x,s.y+=a.y,s.z+=a.z,this.dirty=!0}orbitAroundX(t){this.updateAxisIfNeeded();const{axisX:e,axisY:i,axisZ:s,orientation:n}=this;return i.rotateAround(e,t),s.rotateAround(e,t),n.fromAxis(e,i,s),this.dirty=!0,this}orbitAroundY(t){this.updateAxisIfNeeded();const{axisX:e,axisY:i,axisZ:s,orientation:n}=this;return e.rotateAround(i,t),s.rotateAround(i,t),n.fromAxis(e,i,s),this.dirty=!0,this}orbitAroundZ(t){this.updateAxisIfNeeded();const{axisX:e,axisY:i,axisZ:s,orientation:n}=this;return e.rotateAround(s,t),i.rotateAround(s,t),n.fromAxis(e,i,s),this.dirty=!0,this}debug(t="Camera"){this.orientation.debug(`${t} quaternion:`)}updateAxisIfNeeded(){this.dirtyAxis&&this.updateAxis()}updateAxis(){const{tmpMat3:t}=this;if(t.fromQuat(this.orientation),t.toAxis(this.axisX,this.axisY,this.axisZ),this.dirtyAxis=!1,Math.abs(1-this.axisX.size)>.1||Math.abs(1-this.axisY.size)>.1||Math.abs(1-this.axisZ.size)>.1)throw this.axisX.debug("Axis X"),this.axisY.debug("Axis Y"),this.axisZ.debug("Axis Z"),Error("STOP!")}updateIfNeeded(){if(!this.dirty)return;const{tmpMat3:t,tmpVec3:e}=this,i=this._matrixViewModel;this.updateAxis();const s=this._distance,{x:n,y:r,z:o}=this.target,{x:a,y:h,z:c}=this.axisZ;e.x=n+s*a,e.y=r+s*h,e.z=o+s*c,e.applyMatrix(t.transpose()).scale(-1/this.zoom),i.m30=e.x,i.m31=e.y,i.m32=e.z;const u=this._zoom;1!==u&&t.scale(u),i.fromMat3(t),this.dirty=!1}}class l extends m{constructor(){super(),this._matrixProjection=new n,this._spaceHeight=10,this._near=.001,this._far=1e3}copyProjectionFrom(t){return this.spaceHeight=t.spaceHeight,this}get spaceHeight(){return this._spaceHeight}set spaceHeight(t){t!==this._spaceHeight&&(this._spaceHeight=t,this.dirtyProjection=!0)}get near(){return this._near}set near(t){t!==this._near&&(this._near=t,this.dirtyProjection=!0)}get far(){return this._far}set far(t){t!==this._far&&(this._far=t,this.dirtyProjection=!0)}get matrixProjection(){return this.updateProjectionIfNeeded(),this._matrixProjection}updateProjectionIfNeeded(){if(!this.dirtyProjection)return;const{near:t,far:e,screenAspectRatio:i,_spaceHeight:s}=this,n=.5*s,r=-n,o=n*i,a=-o,h=this._matrixProjection,c=1/(a-o),u=1/(r-n),m=1/(t-e);h[0]=-2*c,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=-2*u,h[6]=0,h[7]=0,h[8]=0,h[9]=0,h[10]=m,h[11]=0,h[12]=(a+o)*c,h[13]=(n+r)*u,h[14]=t*m,h[15]=1,this.dirtyProjection=!0}}class d extends m{constructor(){super(),this._matrixProjection=new n,this._fovy=Math.PI/4,this._near=.001,this._far=1/0}copyProjectionFrom(t){return this.fovy=t.fovy,this.near=t.near,this.far=t.far,this}get fovy(){return this._fovy}set fovy(t){t!==this._fovy&&(this._fovy=t,this.dirtyProjection=!0)}get near(){return this._near}set near(t){t!==this._near&&(this._near=t,this.dirtyProjection=!0)}get far(){return this._far}set far(t){t!==this._far&&(this._far=t,this.dirtyProjection=!0)}get matrixProjection(){return this.updateProjectionIfNeeded(),this._matrixProjection}updateProjectionIfNeeded(){if(!this.dirtyProjection)return;const t=this._fovy,e=this.screenAspectRatio,i=this._near,s=this._far,n=this._matrixProjection,r=1/Math.tan(t/2);if(n[0]=r/e,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=r,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=-1,n[12]=0,n[13]=0,n[15]=0,s!==1/0){const t=1/(i-s);n[10]=(s+i)*t,n[14]=2*s*i*t}else n[10]=-1,n[14]=-2*i;this.dirtyProjection=!0}}class g{}class f extends g{constructor(t=[],{onEnter:e,onExit:i}={}){super(),this.active=!0,this.onEnter=e,this.onExit=i,this.painters=[...t]}has(t){return this.painters.includes(t)}add(...t){for(const e of t)this.painters.push(e)}remove(...t){for(const e of t){const t=this.painters.indexOf(e);t<0||(this.painters.splice(t,1),e.delete())}}removeAll(){for(const t of this.painters)t.delete();this.painters.splice(0,this.painters.length)}delete(){for(const t of this.painters)t.delete();this.painters.splice(0,this.painters.length)}paint(t,e){var i,s;if(this.active){null===(i=this.onEnter)||void 0===i||i.call(this,t,e);for(const i of this.painters)i.paint(t,e);null===(s=this.onExit)||void 0===s||s.call(this,t,e)}}}let x=1;class p{constructor(){this.keys=new Map,this.objects=new Map,this.references=new Map}create(t,e){var i,s;const n=null!==(i=null!=e?e:this.makeKeyFromInput(t))&&void 0!==i?i:"TgdResource:"+x++,r=null!==(s=this.references.get(n))&&void 0!==s?s:0;if(r<1){const e=this.actualCreate(t,n);return this.keys.set(e,n),this.objects.set(n,e),this.references.set(n,1),e}const o=this.objects.get(n);if(!o)throw Error("[TgdResource.create] Panic!");return this.references.set(n,r+1),o}delete(t){var e;const i=this.keys.get(t);if(!i)return;const s=null!==(e=this.references.get(i))&&void 0!==e?e:0;s<1||(s>1?this.references.set(i,s-1):(this.keys.delete(t),this.objects.delete(i),this.references.delete(i),this.actualDelete(t)))}makeKeyFromInput(t){return null}}class v{constructor(t,e){var i;this.gl=t;const s=t.createProgram();if(!s)throw Error("Unable to create WebGLProgram!");const n=this.createShader("VERTEX_SHADER",e.vert);t.attachShader(s,n);const r=this.createShader("FRAGMENT_SHADER",e.frag);if(t.attachShader(s,r),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS)){var o=null!==(i=t.getProgramInfoLog(s))&&void 0!==i?i:"";console.warn(o);const n=w(o);throw A("Vertex Shader",e.vert,n),A("Fragment Shader",e.frag,n),new Error("Could NOT link WebGL2 program!\n"+o)}this.program=s,this.shaders=[n,r],this.uniformsLocations=this.getUniformsLocations()}getAttribLocation(t){const{gl:e,program:i}=this,s=e.getAttribLocation(i,t);if(s<0)throw Error(`Attribute "${t}" not found!`);return s}getUniformLocation(t){const{uniformsLocations:e}=this,i=Object.keys(e);if(0===t.length)throw Error(`Uniform "${t}" has not been found: there is no active uniform in this program!`);const s=e[t];if(!s)throw Error(`No active uniform found with name "${t}"!\nAvailable names are: ${i.join(", ")}.`);return s}uniform1f(t,e){const{gl:i}=this;i.uniform1f(this.getUniformLocation(t),e)}uniform2f(t,e,i){const{gl:s}=this;s.uniform2f(this.getUniformLocation(t),e,i)}uniform3f(t,e,i,s){const{gl:n}=this;n.uniform3f(this.getUniformLocation(t),e,i,s)}uniform3fv(t,e){const{gl:i}=this;i.uniform3fv(this.getUniformLocation(t),e)}uniform4f(t,e,i,s,n){const{gl:r}=this;r.uniform4f(this.getUniformLocation(t),e,i,s,n)}uniform4fv(t,e){const{gl:i}=this;i.uniform4fv(this.getUniformLocation(t),e)}uniform1i(t,e){const{gl:i}=this;i.uniform1i(this.getUniformLocation(t),e)}uniform2i(t,e,i){const{gl:s}=this;s.uniform2i(this.getUniformLocation(t),e,i)}uniform3i(t,e,i,s){const{gl:n}=this;n.uniform3i(this.getUniformLocation(t),e,i,s)}uniform4i(t,e,i,s,n){const{gl:r}=this;r.uniform4i(this.getUniformLocation(t),e,i,s,n)}uniform1ui(t,e){const{gl:i}=this;i.uniform1ui(this.getUniformLocation(t),e)}uniform2ui(t,e,i){const{gl:s}=this;s.uniform2ui(this.getUniformLocation(t),e,i)}uniform3ui(t,e,i,s){const{gl:n}=this;n.uniform3ui(this.getUniformLocation(t),e,i,s)}uniform4ui(t,e,i,s,n){const{gl:r}=this;r.uniform4ui(this.getUniformLocation(t),e,i,s,n)}uniformMatrix4fv(t,e){const{gl:i}=this;i.uniformMatrix4fv(this.getUniformLocation(t),!1,e)}use(){const{gl:t,program:e}=this;t.useProgram(e)}delete(){const{gl:t}=this;this.shaders.forEach((e=>t.deleteShader(e))),t.deleteProgram(this.program)}createShader(t,e){const{gl:i}=this,s=i.createShader(i[t]);if(!s)throw Error(`Unable to create a WebGLShader of type "${t}"!`);i.shaderSource(s,e),i.compileShader(s);const n=i.getShaderInfoLog(s);if(n)throw console.error(`Error in ${t} code:`,n),A(t,e,w(n)),Error(`Unable to compile ${t}!`);return s}getUniformsLocations(){const{gl:t,program:e}=this,i=t.getProgramParameter(e,t.ACTIVE_UNIFORMS);if("number"!=typeof i)throw Error("Unable to get the number of uniforms in a WebGLProgram!");const s={};for(let n=0;n<i;n++){const i=t.getActiveUniform(e,n);if(!i)continue;const r=t.getUniformLocation(e,i.name);if(null===r)throw Error(`Unable to get location for uniform "${i.name}"!`);s[i.name]=r}return s}}const y=/^ERROR:[ \t]+([0-9]+):([0-9]+):/g;function w(t){const e=[],i=[];for(const s of t.split("\n")){y.lastIndex=-1;const t=y.exec(s);t&&(e.push(parseInt(t[2],10)),i.push(s.substring(t[0].length).trim()))}return{lines:e,messages:i}}function E(t,e=!1){return`color:#fff;background:${t};font-family:monospace;font-size:80%;font-weight:${e?"bolder":"100"}`}function A(t,e,i){console.log(`%c${t}`,"font-weight:bolder;font-size:120%"),e.split("\n").forEach(((t,e)=>{const s=e+1,n=(1e-4*s).toFixed(4).substring(2),r=i.lines.includes(s)?"#f00":"#000";console.log(`%c${n} %c${t}`,E(r),E(r,!0)),i.lines.includes(s)&&console.error(i.messages[i.lines.indexOf(s)])}))}class b extends p{constructor(t){super(),this.gl=t}actualCreate(t){return new v(this.gl,t)}actualDelete(t){t instanceof v&&t.delete()}makeKeyFromInput(t){return JSON.stringify(t)}}var T=function(t,e,i,s){return new(i||(i=Promise))((function(n,r){function o(t){try{h(s.next(t))}catch(t){r(t)}}function a(t){try{h(s.throw(t))}catch(t){r(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}h((s=s.apply(t,e||[])).next())}))};class _{static image(t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{const i=new Image;i.onload=()=>e(i),i.onerror=()=>{console.error("Unable to load image: ",t),e(null)},i.src=t}))}))}static canvas(t){return T(this,void 0,void 0,(function*(){const e=yield _.image(t);if(!e)return null;const i=document.createElement("canvas");i.width=e.naturalWidth,i.height=e.naturalHeight;const s=i.getContext("2d");if(!s)throw Error("Unable to get a 2D context!");return s.drawImage(e,0,0),i}))}}class P{constructor(){this.listeners=new Set}addListener(t){this.listeners.add(t)}removeListener(t){this.listeners.delete(t)}dispatch(t){this.listeners.forEach((e=>e(t)))}}function M(t,e,i){const s=document.createElement("canvas");s.width=t,s.height=e;const n=s.getContext("2d",i);if(!n)throw Error("Unable to create 2D context!");return{canvas:s,ctx:n}}const U=new Uint8Array([200,200,200,255]);class R{constructor(t,e,i={}){this.context=t,this.id=e,this.eventImageUpdate=new P,this._width=0,this._height=0,this._image=null;const{gl:s}=t;this.options=Object.assign({wrapS:"REPEAT",wrapT:"REPEAT",wrapR:"REPEAT",minFilter:"NEAREST_MIPMAP_LINEAR",magFilter:"LINEAR"},i);const n=s.createTexture();if(!n)throw Error("Unable to create a WebGLTexture!");this.texture=n,s.bindTexture(s.TEXTURE_2D,n),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,1,1,0,s.RGBA,s.UNSIGNED_BYTE,U);const{wrapS:r,wrapT:o,wrapR:a,minFilter:h,magFilter:c}=this.options;s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s[r]),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s[o]),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_R,s[a]),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s[h]),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s[c]),i.image&&this.loadImage(i.image)}makePalette(t,e=0){const i=e>0?e:t.length,s=Math.ceil(t.length/i),{canvas:n,ctx:r}=M(i,s);let o=0;for(let e=0;e<s;e++)for(let s=0;s<i;s++)r.fillStyle=t[o++],r.fillRect(s,e,1,1);this.loadImage(n)}fillHorizontalGradient(t,...e){this.fillGradient(t,1,1,0,...e)}fillverticalGradient(t,...e){this.fillGradient(1,t,0,1,...e)}fillGradient(t,e,i,s,...n){const{canvas:r,ctx:o}=M(t,e),a=o.createLinearGradient(0,0,t*i,e*s);for(let t=0;t<n.length;t++)a.addColorStop(t/(n.length-1),n[t]);o.fillStyle=a,o.fillRect(0,0,t,e),this.loadImage(r),r.style.position="fixed"}delete(){this.context.gl.deleteTexture(this.texture)}get image(){return this._image}get width(){return this._width}get height(){return this._height}bind(){const{gl:t}=this.context;t.bindTexture(t.TEXTURE_2D,this.texture)}activate(t,e,i=0){const{context:s,texture:n}=this,{gl:r}=s;r.activeTexture(r.TEXTURE0+i),r.bindTexture(r.TEXTURE_2D,n),t.uniform1i(e,i)}loadImage(t){if("string"==typeof t)return void _.image(t).then((e=>{e?(this.loadImage(e),this.context.paint()):console.error("[TgdTexture2D] Unable to load image:",t)})).catch(console.error);const{context:e,texture:i}=this,{gl:s}=e;s.bindTexture(s.TEXTURE_2D,i),t instanceof Image&&s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!0),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,t),s.generateMipmap(s.TEXTURE_2D),this._width=t.width,this._height=t.height,this._image=t,this.eventImageUpdate.dispatch(this)}}class z{constructor(t,e){this.context=t,this._width=0,this._height=0,this.numberOfImagesToLoad=6;const{gl:i}=t,s=i.createTexture();if(!s)throw Error("Unable to create a WebGLTexture!");this.texture=s,this.loadImage(i.TEXTURE_CUBE_MAP_POSITIVE_X,e.imagePosX),this.loadImage(i.TEXTURE_CUBE_MAP_NEGATIVE_X,e.imageNegX),this.loadImage(i.TEXTURE_CUBE_MAP_POSITIVE_Y,e.imagePosY),this.loadImage(i.TEXTURE_CUBE_MAP_NEGATIVE_Y,e.imageNegY),this.loadImage(i.TEXTURE_CUBE_MAP_POSITIVE_Z,e.imagePosZ),this.loadImage(i.TEXTURE_CUBE_MAP_NEGATIVE_Z,e.imageNegZ)}delete(){this.context.gl.deleteTexture(this.texture)}get ready(){return 0===this.numberOfImagesToLoad}get width(){return this._width}get height(){return this._height}bind(){const{gl:t}=this.context;t.bindTexture(t.TEXTURE_CUBE_MAP,this.texture)}activate(t,e,i=0){if(!this.ready)return;const{context:s,texture:n}=this,{gl:r}=s;r.activeTexture(r.TEXTURE0+i),r.bindTexture(r.TEXTURE_CUBE_MAP,n),t.uniform1i(e,i)}loadImage(t,e){if("string"==typeof e)return void _.image(e).then((i=>{i?this.loadImage(t,i):console.error(`[TgdTextureCube] Unable to load image "${e}":`,e)})).catch((t=>{console.error(`[TgdTextureCube] Unable to load image "${e}":`,t)}));const{width:i,height:s}=e;if(i!==s)throw Error(`Images in a CubeMap must be squares, but we got ${i}×${s}!`);if(0===this._width)this._width=i,this._height=s;else if(this._width!==i||this._height!==s)throw Error(`Images in a CubeMap must all have the same size, but we got ${this._width}×${this._height} and ${i}×${s}!`);const{context:n,texture:r}=this,{gl:o}=n;o.bindTexture(o.TEXTURE_CUBE_MAP,r),o.pixelStorei(o.UNPACK_FLIP_Y_WEBGL,e instanceof Image),o.texImage2D(t,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,e),this.numberOfImagesToLoad--,0===this.numberOfImagesToLoad&&(console.log("All images have been loaded!"),console.log(this.width,this.height),o.generateMipmap(o.TEXTURE_CUBE_MAP),o.texParameteri(o.TEXTURE_CUBE_MAP,o.TEXTURE_MIN_FILTER,o.LINEAR_MIPMAP_LINEAR),n.paint())}}class I extends p{constructor(t){super(),this.context=t}actualCreate(t,e){return new R(this.context,e,t)}actualDelete(t){t instanceof R&&t.delete()}}class S extends p{constructor(t){super(),this.context=t}actualCreate(t){return new z(this.context,t)}actualDelete(t){t instanceof z&&t.delete()}}class C{constructor(t,e,i){var s,n;this.gl=t;const r=t.createBuffer();if(!r)throw Error("Unable to create WebGLBuffer!");this._target=null!==(s=null==i?void 0:i.target)&&void 0!==s?s:"ARRAY_BUFFER",this._usage=null!==(n=null==i?void 0:i.usage)&&void 0!==n?n:"STATIC_DRAW",this.buffer=r,e&&this.bufferData(e,i)}get target(){return this._target}bind(t){const{gl:e,buffer:i}=this;this._target=null!=t?t:this._target,e.bindBuffer(e[this._target],i)}bufferData(t,e={}){var i;const{gl:s}=this;this.bind(e.target),this._usage=null!==(i=e.usage)&&void 0!==i?i:this._usage,s.bufferData(s[this._target],t,s[this._usage])}delete(){const{gl:t,buffer:e}=this;t.deleteBuffer(e)}}class L{constructor(t,e,i,s){this.gl=t,this.drawBuffers=[],this.elemBuffer=null;const n=t.createVertexArray();if(!n)throw Error("Unable to create VertexArrayObject!");if(this.vao=n,e&&i){if(t.bindVertexArray(n),this.drawBuffers=i.map((i=>{const s=new C(t,i.dataView,{target:i.target,usage:i.usage});return s.bind(),i.defineAttributes(t,e),s})),s){const e=new C(t,s,{target:"ELEMENT_ARRAY_BUFFER"});e.bind(),this.elemBuffer=e}t.bindVertexArray(null)}}bind(){this.gl.bindVertexArray(this.vao)}unbind(){this.gl.bindVertexArray(null)}delete(){const{gl:t,vao:e,drawBuffers:i,elemBuffer:s}=this;t.deleteVertexArray(e),i.forEach((t=>t.delete())),s&&s.delete()}}class X{constructor(){this.keysDown=new Set,this.keysUp=new Set,this.attached=!1,this.handleKeyDown=t=>{this.keysDown.add(t.key),this.keysUp.delete(t.key)},this.handleKeyUp=t=>{this.keysDown.delete(t.key),this.keysUp.add(t.key)},document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("keyup",this.handleKeyUp),this.attached=!0}detach(){this.attached&&(document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("keyup",this.handleKeyUp),this.attached=!1)}isDown(...t){for(const e of t)if(!this.keysDown.has(e))return!1;return!0}hasClicked(t){return!!this.keysUp.has(t)&&(this.keysUp.delete(t),!0)}}class D{constructor(t){this.canvas=t,this.eventMoveStart=new P,this.eventMove=new P,this.eventMoveEnd=new P,this.eventZoom=new P,this.inertia=0,this.start={x:0,y:0,t:0,fingersCount:1},this.current={x:0,y:0,t:0,fingersCount:1},this.previous={x:0,y:0,t:0,fingersCount:1},this.active=!1,this.canvasX=0,this.canvasY=0,this.screenX=0,this.screenY=0,this.inertiaDirX=0,this.inertiaDirY=0,this.inertiaStop=!0,this.inertiaRunning=!1,this.inertiaTimeStamp=0,this.inertiaLastRefresh=0,this.handleCanvasWheel=t=>{let e=t.deltaX+t.deltaY+t.deltaZ;e=e>0?1:-1,this.eventZoom.dispatch({current:this.getPoint(t),direction:e,preventDefault:()=>t.preventDefault()})},this.handleCanvasPointerDown=t=>{t.isPrimary&&(this.canvasX=t.clientX,this.canvasY=t.clientY,this.active=!0,this.inertiaStop=!0)},this.handlePointerDown=t=>{if(!t.isPrimary||!this.active)return;this.screenX=t.clientX,this.screenY=t.clientY;const e=this.getPoint(t);this.start=this.current=this.previous=e,this.eventMoveStart.dispatch({start:e})},this.handlePointerMove=t=>{t.isPrimary&&this.active&&this.canvas&&(this.previous=this.current,this.current=this.getPoint(t),this.eventMove.dispatch({start:this.start,current:this.current,previous:this.previous}))},this.handlePointerUp=t=>{if(!t.isPrimary||!this.active)return;this.current=this.getPoint(t),this.eventMoveEnd.dispatch({start:this.start,current:this.current,previous:this.previous}),this.active=!1,this.inertiaStop=!1,this.inertiaRunning=!1;const e=this.current.t-this.previous.t,i=e>0?1/e:0;this.inertiaDirX=i*(this.current.x-this.previous.x),this.inertiaDirY=i*(this.current.y-this.previous.y),window.requestAnimationFrame(this.simulateInertia)},this.simulateInertia=t=>{if(this.inertia<=0||this.inertiaStop)return;this.inertiaRunning||(this.inertiaTimeStamp=t,this.inertiaLastRefresh=t,this.inertiaRunning=!0);const e=t-this.inertiaTimeStamp,i=1-e/this.inertia;if(i<=0||i>1)return;const s=e-this.inertiaLastRefresh;this.inertiaLastRefresh=e;const n=this.inertiaDirX*s*i,r=this.inertiaDirY*s*i;this.previous=Object.assign({},this.current),this.current.t=this.previous.t+s,this.current.x+=n,this.current.y+=r;const{current:o,previous:a,start:h}=this;this.eventMove.dispatch({current:o,previous:a,start:h}),window.requestAnimationFrame(this.simulateInertia)},t.addEventListener("pointerdown",this.handleCanvasPointerDown,!0),t.addEventListener("wheel",this.handleCanvasWheel),document.addEventListener("pointerdown",this.handlePointerDown),document.addEventListener("pointermove",this.handlePointerMove),document.addEventListener("pointerup",this.handlePointerUp)}detach(){const{canvas:t}=this;t&&(t.removeEventListener("pointerdown",this.handleCanvasPointerDown),t.removeEventListener("wheel",this.handleCanvasWheel),document.removeEventListener("pointerdown",this.handlePointerDown),document.removeEventListener("pointermove",this.handlePointerMove),document.removeEventListener("pointerup",this.handlePointerUp))}getPoint(t){const{left:e,top:i,width:s,height:n}=this.canvas.getBoundingClientRect();return{x:2*((this.canvasX+t.clientX-this.screenX-e)/s-.5),y:-2*((this.canvasY+t.clientY-this.screenY-i)/n-.5),t:t.timeStamp,fingersCount:1}}}class B{constructor(t){this.canvas=t,this._keyboard=null,this._pointer=null}get keyboard(){return this._keyboard||(this._keyboard=new X),this._keyboard}get pointer(){return this._pointer||(this._pointer=new D(this.canvas)),this._pointer}}class Z{constructor(t,e={}){var i;this.canvas=t,this._texturesCube=null,this.isPlaying=!1,this.requestAnimationFrame=-1,this.lastTime=-1,this.paint=()=>{window.cancelAnimationFrame(this.requestAnimationFrame),this.requestAnimationFrame=window.requestAnimationFrame(this.actualPaint)},this.actualPaint=t=>{const{lastTime:e,gl:i}=this;if(e<0)return this.lastTime=t,void this.paint();const s=t-this.lastTime;this.lastTime=t,this.camera.screenWidth=i.drawingBufferWidth,this.camera.screenHeight=i.drawingBufferHeight,this.painters.paint(t,s),this.isPlaying&&this.paint()};const s=t.getContext("webgl2",e);if(!s)throw Error("Unable to create a WebGL2 context!");this.gl=s,this.programs=new b(s),this.textures2D=new I(this);const n=null!==(i=e.onResize)&&void 0!==i?i:F;this.observer=new ResizeObserver((()=>{n(s,t.clientWidth,t.clientHeight)})),this.observer.observe(t),this.inputs=new B(t),this.camera=new d,this.painters=new f,t.style.touchAction="none"}get texturesCube(){return this._texturesCube||(this._texturesCube=new S(this)),this._texturesCube}get onEnter(){return this.painters.onEnter}set onEnter(t){this.painters.onEnter=t}get onExit(){return this.painters.onExit}set onExit(t){this.painters.onExit=t}get width(){return this.gl.drawingBufferWidth}get height(){return this.gl.drawingBufferHeight}get playing(){return this.isPlaying}set playing(t){t!==this.isPlaying&&(t&&this.paint(),this.isPlaying=t)}play(){this.playing=!0}pause(){this.playing=!1}has(t){return this.painters.has(t)}add(...t){this.painters.add(...t)}remove(...t){this.painters.remove(...t)}removeAll(){this.painters.removeAll()}createBuffer(t,e){return new C(this.gl,t,e)}createVAO(t,e,i){return new L(this.gl,t,e,i)}destroy(){window.cancelAnimationFrame(this.requestAnimationFrame),this.playing=!1,this.painters.delete(),this.observer.unobserve(this.canvas)}}function F(t,e,i){const s=t.canvas;s.width=e,s.height=i,t.viewport(0,0,e,i)}class N{constructor(t,{speedZoom:e=1,speedOrbit:i=1}={}){this.context=t,this.enabled=!0,this.speedZoom=1,this.speedOrbit=1,this.eventZoomChange=new P,this.eventOrbitChange=new P,this.handleMove=t=>{if(!this.enabled)return;const{context:e}=this;if(t.current.t-t.previous.t<=0)return;const{keyboard:i}=e.inputs;if(i.isDown("z")){const i=t.previous.x,s=t.previous.y;if(Math.abs(i)+Math.abs(s)===0)return;const n=t.current.x,r=t.current.y;if(Math.abs(n)+Math.abs(r)===0)return;const o=i*n+s*r,a=i*r-s*n,h=Math.atan2(a,o)*this.speedOrbit;return e.camera.orbitAroundZ(-h),void this.fireOrbitChange()}const s=3*(i.isDown("Shift")?.1:1)*this.speedOrbit,n=(t.current.x-t.previous.x)*s,r=(t.current.y-t.previous.y)*s;i.isDown("x")||e.camera.orbitAroundY(-n),i.isDown("y")||e.camera.orbitAroundX(r),this.fireOrbitChange()},this.handleZoom=t=>{if(!this.enabled)return;const{camera:e}=this.context;let i=.05*this.speedZoom;this.context.inputs.keyboard.isDown("Shift")&&(i*=.1);const s=-t.direction*i;e.zoom=Math.max(1e-5,e.zoom+s),t.preventDefault(),this.fireZoomChange()};const{inputs:s}=t;s.pointer.eventMove.addListener(this.handleMove),s.pointer.eventZoom.addListener(this.handleZoom),this.speedOrbit=i,this.speedZoom=e}detach(){const{inputs:t}=this.context;t.pointer.eventMove.removeListener(this.handleMove),t.pointer.eventZoom.removeListener(this.handleZoom)}fireOrbitChange(){this.eventOrbitChange.dispatch(this),this.context.paint()}fireZoomChange(){this.eventZoomChange.dispatch(this),this.context.paint()}}class Y{constructor(t,e={}){var i,s,n;this.data=null,this.count=0,this.target=null!==(i=e.target)&&void 0!==i?i:"ARRAY_BUFFER",this.usage=null!==(s=e.usage)&&void 0!==s?s:"STATIC_DRAW";const r=null!==(n=e.divisor)&&void 0!==n?n:0;let o=0;const a={},h={};for(const e of Object.keys(t)){const i=e;a[e]=new ArrayBuffer(0);const s={dimension:O[t[i]],bytesOffset:o,bytesPerElement:Float32Array.BYTES_PER_ELEMENT,divisor:r,getter:(t,e)=>(e>=t.byteLength&&(e%=t.byteLength),t.getFloat32(e)),setter(t,e,i){t.setFloat32(e,i)}};h[e]=s,o+=s.bytesPerElement*s.dimension}this.dataPerAttribute=a,this.definitions=h,this.stride=o}set(t,e){var i;if((i=e)&&"object"==typeof i&&e.buffer instanceof ArrayBuffer&&(e=e.buffer),this.dataPerAttribute[t]===e)return;this.dataPerAttribute[t]=e;const{bytesPerElement:s,dimension:n}=this.definitions[t];this.count=Math.max(this.count,Math.ceil(e.byteLength/(s*n))),this.data=null}get(t){var e;return null!==(e=this.dataPerAttribute[t])&&void 0!==e?e:new ArrayBuffer(0)}get dataView(){if(!this.data){const t=new ArrayBuffer(this.stride*this.count),e=new DataView(t);let i=0;const{dataPerAttribute:s,definitions:n}=this;for(let t=0;t<this.count;t++)for(const r of Object.keys(n)){const o=n[r],a=s[r],h=new DataView(a);let c=o.bytesPerElement*o.dimension*t;for(let t=0;t<o.dimension;t++)o.setter(e,i,o.getter(h,c)),c+=o.bytesPerElement,i+=o.bytesPerElement}this.data=new DataView(t)}return this.data}defineAttributes(t,e){let i=0;const{definitions:s}=this;for(const n of Object.keys(s)){const r=s[n],o=e.getAttribLocation(n);t.enableVertexAttribArray(o),t.vertexAttribPointer(o,r.dimension,t.FLOAT,!1,this.stride,i),t.vertexAttribDivisor(o,r.divisor),i+=r.dimension*r.bytesPerElement}}}const O={float:1,vec2:2,vec3:3,vec4:4};class j extends g{constructor(t,{x:e=0,y:i=0,z:s=0,scale:n=1}={}){super(),this.context=t;const o=t.programs.create({vert:"#version 300 es\n\nprecision mediump float;\n\nuniform vec4 uniTS;\nuniform mat4 uniModelViewMatrix;\nuniform mat4 uniProjectionMatrix;\n\nin vec3 attPos;\nin vec4 attColor;\n\nout vec4 varColor;\n\nvoid main() {\n varColor = attColor;\n vec3 translate = uniTS.xyz;\n float scale = uniTS.w;\n gl_Position = uniProjectionMatrix \n * uniModelViewMatrix \n * vec4(attPos * scale + translate, 1.0);\n}\n",frag:"#version 300 es\n\nprecision mediump float;\n\nin vec4 varColor;\n\nout vec4 FragColor;\n\nvoid main() {\n FragColor = varColor;\n}"});this.prg=o;const a=new Y({attPos:"vec3",attColor:"vec4"});a.set("attPos",new Float32Array([0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,-1,-0,-0,0,0,0,-0,-1,-0,0,0,0,-0,-0,-1]));const h=.25;a.set("attColor",new Float32Array([1,0,0,1,1,0,0,1,0,1,0,1,0,1,0,1,0,0,1,1,0,0,1,1,h,0,0,1,h,0,0,1,0,h,0,1,0,h,0,1,0,0,h,1,0,0,h,1])),this.vao=t.createVAO(o,[a]),this.translateAndScale=new r(e,i,s,n)}get x(){return this.translateAndScale.x}set x(t){this.translateAndScale.x=t}get y(){return this.translateAndScale.y}set y(t){this.translateAndScale.y=t}get z(){return this.translateAndScale.z}set z(t){this.translateAndScale.z=t}get scale(){return this.translateAndScale.w}set scale(t){this.translateAndScale.w=t}delete(){this.vao.delete()}paint(t,e){const{context:i,prg:s,vao:n,translateAndScale:r}=this,{gl:o,camera:a}=i;s.use(),s.uniform4fv("uniTS",r),s.uniformMatrix4fv("uniModelViewMatrix",a.matrixViewModel),s.uniformMatrix4fv("uniProjectionMatrix",a.matrixProjection),n.bind(),o.drawArrays(o.LINES,0,12)}}class V extends g{constructor(t,e,{x:i=0,y:s=0,z:n=1,zoom:r=1}={}){super(),this.context=t,this.zoom=1,this.x=0,this.y=0,this.z=1,this.x=i,this.y=s,this.z=n,this.zoom=r,this.texture=e,this.program=t.programs.create({vert:"#version 300 es\n\nuniform float uniZoom;\nuniform vec2 uniScale;\nuniform vec2 uniScroll;\nuniform float uniZ;\nin vec2 attPoint;\nin vec2 attUV;\nout vec2 varUV;\n\nvoid main() {\n varUV = (attUV + uniScroll) * uniZoom;\n float x = uniScale.x * attPoint.x;\n float y = uniScale.y * attPoint.y;\n gl_Position = vec4(x, y, uniZ, 1.0);\n}",frag:"#version 300 es\n\nprecision mediump float;\n\nuniform sampler2D uniTexture;\nin vec2 varUV;\nout vec4 FragColor;\n\nvoid main() {\n FragColor = texture(uniTexture, varUV);\n}"});const o=new Y({attPoint:"vec2",attUV:"vec2"});o.set("attPoint",new Float32Array([-1,1,1,1,-1,-1,1,-1])),o.set("attUV",new Float32Array([0,0,1,0,0,1,1,1])),this.vao=t.createVAO(this.program,[o])}delete(){const{vao:t}=this;t.delete}paint(t,e){const{gl:i}=this.context,{vao:s,program:n,texture:r,zoom:o,x:a,y:h,z:c}=this;n.use();const{width:u,height:m}=this.context,l=r.width*m>r.height*u,d=l?r.width*m/(u*r.height):1,g=l?1:r.height*u/(m*r.width);n.uniform2f("uniScale",d,g),n.uniform2f("uniScroll",a,h),n.uniform1f("uniZoom",1/o),n.uniform1f("uniZ",c),r.activate(n,"uniTexture"),s.bind(),i.drawArrays(i.TRIANGLE_STRIP,0,4)}}class k{constructor(t,e={}){var i,s;this.context=t,this.clearMask=0,this.red=1,this.green=.7,this.blue=0,this.alpha=1,this.depth=1;const{gl:n}=t,r=null!==(i=e.color)&&void 0!==i?i:[0,0,0,1],o=null!==(s=e.depth)&&void 0!==s?s:1;this.clearMask=0;let a=!1;if(e.color&&(this.clearMask|=n.COLOR_BUFFER_BIT,a=!0),"number"==typeof e.depth&&(this.clearMask|=n.DEPTH_BUFFER_BIT,a=!0),!a)throw Error("[TgdPainterClear] You must give at least a color or a depth in the constructor!");[this.red,this.green,this.blue,this.alpha]=r,this.depth=o}delete(){}paint(t,e){const{clearMask:i,context:s,red:n,green:r,blue:o,alpha:a,depth:h}=this,{gl:c}=s;c.clearColor(n,r,o,a),c.clearDepth(h),c.clear(i)}update(t,e){}}class W extends g{constructor(t,{enabled:e=!0,func:i="LESS",mask:s=!0,rangeMin:n=0,rangeMax:r=1}={}){super(),this.context=t,this.enabled=e,this.func=i,this.mask=s,this.rangeMin=n,this.rangeMax=r}delete(){}paint(){const{gl:t}=this.context,{enabled:e}=this;if(!e)return void t.disable(t.DEPTH_TEST);const{func:i,mask:s,rangeMin:n,rangeMax:r}=this;t.enable(t.DEPTH_TEST),t.depthFunc(t[i]),t.depthMask(s),t.depthRange(n,r)}update(){}}class G extends g{constructor(t){super(),this.logicFunction=t}delete(){}paint(t,e){this.logicFunction(t,e)}}class H extends g{constructor(t,e,{roundness:i=3,minRadius:s=0}={}){if(super(),this.context=t,this.minRadius=0,this.radiusMultiplier=1,this.light=1,this.shiftZ=0,this.minRadius=s,i>125)throw Error("[TgdPainterSegments] Max roundness is 125!");if(i<0)throw Error("[TgdPainterSegments] Min roundness is 0!");const n=t.textures2D.create({magFilter:"NEAREST",minFilter:"NEAREST",wrapR:"CLAMP_TO_EDGE",wrapS:"CLAMP_TO_EDGE",wrapT:"CLAMP_TO_EDGE"});n.makePalette(["#f00","#0f0","#00f"]),this.colorTexture=n;const r=t.programs.create({vert:"#version 300 es\n\nprecision mediump float;\n\nuniform sampler2D uniTexture;\nuniform mat4 uniModelViewMatrix;\nuniform mat4 uniProjectionMatrix;\n// camera.zoom\nuniform float uniCameraZoom;\n// Minimal value for the radius.\nuniform float uniMinRadius;\n// Multiply all radii by this value.\nuniform float uniRadiusMultiplier;\n// Multiply the color by this value;\nuniform float uniLight;\n// Push the segments away from camera of `uniShiftZ`.\n// This can be used if you want contours on the segments:\n// just increase `uniRadiusMultiplier`, set a low `uniLight`,\n// and set a small positive `uniShiftZ`.\nuniform float uniShiftZ;\n\n//===================\n// Vertex attributes\n//-------------------\n\n// Position of the vertex, relative to\n// the current center and assuming a\n// radius of 1.\n// Z tells you what tip is your center: 0 for A and 1 for B.\nin vec3 attOffset;\n\n//=====================\n// Instance attributes\n//---------------------\n\n// Coords and radious of tip A.\nin vec4 attAxyzr;\n// Coords and radious of tip B.\nin vec4 attBxyzr;\n// // The color is taken from a texture.\nin vec2 attAuv;\nin vec2 attBuv;\n\n\nout vec4 varColor;\n\n\nvec3 worldToCamera(vec3 v);\nfloat getRadius(float tip);\nmat3 getTransfoMatrix(float tip, vec3 camA, vec3 camB);\n\nvoid main() {\n vec3 camA = worldToCamera(attAxyzr.xyz);\n vec3 camB = worldToCamera(attBxyzr.xyz);\n float tip = attOffset.z;\n varColor = texture(uniTexture, mix(attAuv, attBuv, tip))\n * vec4(uniLight, uniLight, uniLight, 1.0);\n float radius = getRadius(tip);\n mat3 transfo = getTransfoMatrix(tip, camA, camB);\n vec3 point = transfo * vec3(attOffset.xy * radius, 1.0);\n point.z -= uniShiftZ;\n gl_Position = \n uniProjectionMatrix \n * vec4(point, 1);\n}\n\nfloat getRadius(float tip) {\n float radius = mix(\n attAxyzr.w,\n attBxyzr.w,\n tip\n ) * uniRadiusMultiplier;\n return max(uniMinRadius, radius * uniCameraZoom);\n}\n\nvec3 worldToCamera(vec3 v) {\n vec4 result = uniModelViewMatrix * vec4(v, 1.0);\n return result.xyz;\n}\n\nmat3 getTransfoMatrix(float tip, vec3 camA, vec3 camB) {\n // What is the current tip?\n vec3 camO = mix(camA, camB, tip);\n vec2 A = camA.xy;\n vec2 B = camB.xy;\n vec3 Y = vec3(\n A == B ? vec2(0, 1) : normalize(A - B),\n 0\n );\n vec3 X = vec3(Y.y, -Y.x, 0);\n return mat3(X, Y, camO);\n}",frag:"#version 300 es\n\nprecision mediump float;\n\nin vec4 varColor;\nout vec4 FragColor;\n\n\nvoid main() {\n FragColor = varColor;\n}\n"});this.prg=r;const{capsule:o,elements:a}=function(t){const e=[0,0,0,1,0,0,-1,0,0,0,0,1,1,0,1,-1,0,1],i=[0,3,1,3,4,1,0,2,5,3,0,5];if(t>0){const s=(t,s,n,r)=>{const o=3*i[s],a=3*i[n],h=3*i[r];console.log(t,`(${e[o]}, ${e[o+1]}, ${e[o+2]}) (${e[a]}, ${e[a+1]}, ${e[a+2]}) (${e[h]}, ${e[h+1]}, ${e[h+2]})`)};let n=1,r=4,o=6;for(let a=0;a<t;a++){const h=Math.PI*(a+1)/(t+1),c=Math.cos(h),u=Math.sin(h);e.push(c,u,0),s("A",0,n,o),i.push(0,n,o),n=o,o++,e.push(c,-u,1),s("B",3,o,r),i.push(3,o,r),r=o,o++}i.push(0,n,2),i.push(3,5,r)}const s=new Y({attOffset:"vec3"});return s.set("attOffset",new Float32Array(e)),{capsule:s,elements:new Uint8Array(i)}}(i),h=e.makeDataset();this.vao=t.createVAO(r,[o,h],a),this.vertexCount=a.length,this.instanceCount=h.count}delete(){throw new Error("Method not implemented.")}paint(t,e){const{context:i,prg:s,vao:n,colorTexture:r,vertexCount:o,instanceCount:a,light:h,radiusMultiplier:c,shiftZ:u}=this,{gl:m,camera:d}=i;s.use();let g=this.minRadius;d instanceof l&&(g*=d.spaceHeight/d.screenHeight),s.uniform1f("uniMinRadius",g),s.uniform1f("uniLight",h),s.uniform1f("uniShiftZ",u),s.uniform1f("uniRadiusMultiplier",c),r.activate(s,"uniTexture"),s.uniform1f("uniCameraZoom",d.zoom),s.uniformMatrix4fv("uniModelViewMatrix",d.matrixViewModel),s.uniformMatrix4fv("uniProjectionMatrix",d.matrixProjection),n.bind(),m.drawElementsInstanced(m.TRIANGLES,o,m.UNSIGNED_BYTE,0,a)}}class ${constructor(){this._count=0,this.attAxyzr=[],this.attAuv=[],this.attBxyzr=[],this.attBuv=[]}get count(){return this._count}add([t,e,i,s],[n,r],[o,a,h,c],[u,m]){this.attAxyzr.push(t,e,i,s),this.attAuv.push(n,r),this.attBxyzr.push(o,a,h,c),this.attBuv.push(u,m),this._count++}makeDataset(){const t=new Y({attAxyzr:"vec4",attAuv:"vec2",attBxyzr:"vec4",attBuv:"vec2"},{divisor:1});return t.set("attAxyzr",new Float32Array(this.attAxyzr)),t.set("attAuv",new Float32Array(this.attAuv)),t.set("attBxyzr",new Float32Array(this.attBxyzr)),t.set("attBuv",new Float32Array(this.attBuv)),t}}class q extends g{constructor(t,e){var i;super(),this.context=t,this.matrix=new n,this.tmpMat=new n,this.camera=null!==(i=e.camera)&&void 0!==i?i:new d,this.texture=t.texturesCube.create(e),this.program=t.programs.create({vert:"#version 300 es\n\nin vec4 attPoint;\n\nout vec4 varPoint;\n\nvoid main() {\n varPoint = attPoint;\n gl_Position = vec4(attPoint.xy, 0.99999, 1.0);\n}",frag:"#version 300 es\n\nprecision highp float;\n\nuniform samplerCube uniTexture;\nuniform mat4 uniMatrix;\n\nin vec4 varPoint;\n\nout vec4 FragColor;\n\nvoid main() {\n vec4 t = uniMatrix * varPoint;\n FragColor = texture(uniTexture, normalize(t.xyz / t.w));\n}"});const s=new Y({attPoint:"vec2"});s.set("attPoint",new Float32Array([-1,1,1,1,-1,-1,1,-1])),this.vao=t.createVAO(this.program,[s])}delete(){const{vao:t}=this;t.delete}paint(t,e){const{context:i,vao:s,program:n,texture:r}=this,{gl:o}=i;n.use(),n.uniformMatrix4fv("uniMatrix",this.matrix),r.activate(n,"uniTexture"),s.bind(),o.drawArrays(o.TRIANGLE_STRIP,0,4);const{camera:a,matrix:h,tmpMat:c}=this;a!==i.camera&&a.copyOrientationFrom(i.camera),h.from(a.matrixProjection),c.fromMat3(a.matrixViewModel),c.m30=0,c.m31=0,c.m32=0,c.m33=1,c.m03=0,c.m13=0,c.m23=0,h.multiply(c).invert()}}class K{constructor(){this.name="Mesh",this.attPosition=[],this.attNormal=[],this.attUV=[],this.elements=[],this.elementIndex=0,this.vertices=[],this.normals=[],this.uvs=[],this.map=new Map,this.onObject=t=>{this.name=t},this.onVertex=(t,e,i)=>{this.vertices.push([t,e,i])},this.onNormal=(t,e,i)=>{this.normals.push([t,e,i])},this.onTexture=(t,e)=>{this.uvs.push([t,e])},this.onFace=t=>{if(3!==t.length)throw Error("We can only deal with triangles!");t.forEach((t=>this.elements.push(this.getElem(t))))}}parse(t){this.reset();const{onVertex:e,onNormal:i,onTexture:s,onFace:n,onObject:r,name:o,elements:a}=this;!function(t,e={}){const{onVertex:i,onNormal:s,onTexture:n,onFace:r,onObject:o}=e;for(const e of function*(t){const e=t.length;let i=0,s=0;for(;i>-1&&i<e&&(i=t.indexOf("\n",s),!(i<0));)yield t.substring(s,i).trim(),s=i+1;return t.substring(s).trim()}(t)){const t=e.trimStart();if(i&&t.startsWith("v ")){const e=t.substring(2).split(" ").map((t=>Number(t)));Q(e)&&i(...e)}else if(r&&t.startsWith("f "))r(t.substring(2).split(" ").map((t=>{const[e,i,s]=t.split("/");return{vertex:Number(e)-1,normal:s?Number(s)-1:void 0,uv:i?Number(i)-1:void 0}})));else if(s&&t.startsWith("vn ")){const e=t.substring(3).split(" ").map((t=>Number(t)));Q(e)&&s(...e)}else if(n&&t.startsWith("vt ")){const[e,i,s]=t.substring(3).split(" ").map((t=>Number(t)));n(e,i,s)}else o&&t.startsWith("o ")&&o(t.substring(2))}}(t,{onVertex:e,onNormal:i,onTexture:s,onFace:n,onObject:r});const h={name:o,count:Math.floor(a.length/3),attPosition:new Float32Array(this.attPosition)};this.attNormal.length>0&&(h.attNormal=new Float32Array(this.attNormal)),this.attUV.length>0&&(h.attUV=new Float32Array(this.attUV)),console.log("🚀 [wavefront] this.attUV = ",this.attUV);const{elementIndex:c}=this;return c<=256?(console.log("UNSIGNED_BYTE"),Object.assign(Object.assign({},h),{type:"UNSIGNED_BYTE",elements:new Uint8Array(a)})):c<=65536?(console.log("UNSIGNED_SHORT"),Object.assign(Object.assign({},h),{type:"UNSIGNED_SHORT",elements:new Uint16Array(a)})):(console.log("UNSIGNED_INT"),Object.assign(Object.assign({},h),{type:"UNSIGNED_INT",elements:new Uint32Array(a)}))}reset(){this.name="Mesh",this.attPosition=[],this.attNormal=[],this.attUV=[],this.elements=[],this.elementIndex=0,this.vertices=[],this.normals=[],this.uvs=[],this.map.clear()}getElem(t){var e;const i=this.key(t),s=null!==(e=this.map.get(i))&&void 0!==e?e:-1;if(s>-1)return s;const[n,r,o]=this.vertices[t.vertex];if(this.attPosition.push(n,r,o),"number"==typeof t.normal){const[e,i,s]=this.normals[t.normal];this.attNormal.push(e,i,s)}if("number"==typeof t.uv){const[e,i]=this.uvs[t.uv];this.attUV.push(e,i)}return this.map.set(i,this.elementIndex),this.elementIndex++}key(t){return`${t.vertex}/${t.normal}`}}function Q(t){return 3===t.length}var J=e.Ev,tt=e.ch,et=e.op,it=e._G,st=e.ED,nt=e.sT,rt=e.CM,ot=e.WG,at=e.EL,ht=e.U1,ct=e.wB,ut=e.gR,mt=e.Ku,lt=e.ck,dt=e.Wk,gt=e.kV,ft=e.Yv,xt=e.cL,pt=e.Se,vt=e.Hq,yt=e.ML,wt=e.mI,Et=e.aW,At=e.W0,bt=e.CV,Tt=e.S6,_t=e.aS,Pt=e.yo,Mt=e.qM,Ut=e.y0,Rt=e.kH;export{J as TgdCamera,tt as TgdCameraOrthographic,et as TgdCameraPerspective,it as TgdContext,st as TgdControllerCameraOrbit,nt as TgdDataset,rt as TgdEvent,ot as TgdInputKeyboardImpl,at as TgdInputPointerImpl,ht as TgdInputs,ct as TgdMat4,ut as TgdPainter,mt as TgdPainterAxis,lt as TgdPainterBackground,dt as TgdPainterClear,gt as TgdPainterDepth,ft as TgdPainterGroup,xt as TgdPainterLogic,pt as TgdPainterSegments,vt as TgdPainterSegmentsData,yt as TgdPainterSkybox,wt as TgdParserMeshWavefront,Et as TgdQuat,At as TgdResource,bt as TgdResourceProgram,Tt as TgdResourceTexture2D,_t as TgdResourceTextureCube,Pt as TgdVec3,Mt as TgdVec4,Ut as TgdVertexArray,Rt as tgdCreateCanvas2D};
|
|
2
|
-
|
|
1
|
+
export * from "./camera/index.js";
|
|
2
|
+
export * from "./canvas/index.js";
|
|
3
|
+
export * from "./color/index.js";
|
|
4
|
+
export * from "./context/index.js";
|
|
5
|
+
export * from "./controller/index.js";
|
|
6
|
+
export * from "./dataset/index.js";
|
|
7
|
+
export * from "./event/index.js";
|
|
8
|
+
export * from "./filter/index.js";
|
|
9
|
+
export * from "./geometry/index.js";
|
|
10
|
+
export * from "./input/index.js";
|
|
11
|
+
export * from "./light/index.js";
|
|
12
|
+
export * from "./material/index.js";
|
|
13
|
+
export * from "./math/index.js";
|
|
14
|
+
export * from "./painter/index.js";
|
|
15
|
+
export * from "./painter/painter.js";
|
|
16
|
+
export * from "./parser/index.js";
|
|
17
|
+
export * from "./resource/index.js";
|
|
18
|
+
export * from "./utils/index.js";
|
|
19
|
+
export * from "./vao/index.js";
|
|
20
|
+
export * from "./types/index.js";
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLE9BQU8sQ0FBQTtBQUVyQixjQUFjLFNBQVMsQ0FBQSJ9
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./inputs.js";
|
|
2
|
+
export * from "./keyboard.js";
|
|
3
|
+
export * from "./pointer.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5wdXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxXQUFXLENBQUEifQ==
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/input/inputs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/input/inputs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,qBAAa,SAAS;IAIN,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,QAAQ,CAA+B;gBAElB,MAAM,EAAE,iBAAiB;IAEtD,IAAI,QAAQ,IAAI,gBAAgB,CAK/B;IAED,IAAI,OAAO,IAAI,eAAe,CAK7B;CACJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TgdInputKeyboardImpl } from "./keyboard.js";
|
|
2
|
+
import { TgdInputPointerImpl } from "./pointer.js";
|
|
3
|
+
export class TgdInputs {
|
|
4
|
+
canvas;
|
|
5
|
+
_keyboard = null;
|
|
6
|
+
_pointer = null;
|
|
7
|
+
constructor(canvas) {
|
|
8
|
+
this.canvas = canvas;
|
|
9
|
+
}
|
|
10
|
+
get keyboard() {
|
|
11
|
+
if (!this._keyboard) {
|
|
12
|
+
this._keyboard = new TgdInputKeyboardImpl();
|
|
13
|
+
}
|
|
14
|
+
return this._keyboard;
|
|
15
|
+
}
|
|
16
|
+
get pointer() {
|
|
17
|
+
if (!this._pointer) {
|
|
18
|
+
this._pointer = new TgdInputPointerImpl(this.canvas);
|
|
19
|
+
}
|
|
20
|
+
return this._pointer;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2lucHV0L2lucHV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUl4RCxNQUFNLE9BQU8sU0FBUztJQUlXO0lBSHJCLFNBQVMsR0FBNEIsSUFBSSxDQUFBO0lBQ3pDLFFBQVEsR0FBMkIsSUFBSSxDQUFBO0lBRS9DLFlBQTZCLE1BQXlCO1FBQXpCLFdBQU0sR0FBTixNQUFNLENBQW1CO0lBQUcsQ0FBQztJQUUxRCxJQUFJLFFBQVE7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFBO1FBQy9DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3hCLENBQUM7Q0FDSiJ9
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { TgdInputKeyboard } from "../types/input-keyboard";
|
|
2
|
+
import { TgdEvent } from "../event";
|
|
2
3
|
export declare class TgdInputKeyboardImpl implements TgdInputKeyboard {
|
|
4
|
+
readonly eventKeyPress: TgdEvent<KeyboardEvent>;
|
|
3
5
|
private readonly keysDown;
|
|
4
6
|
private readonly keysUp;
|
|
5
7
|
private attached;
|
|
6
8
|
constructor();
|
|
7
9
|
detach(): void;
|
|
10
|
+
isUp(...keys: string[]): boolean;
|
|
8
11
|
isDown(...keys: string[]): boolean;
|
|
9
12
|
hasClicked(key: string): boolean;
|
|
10
13
|
private readonly handleKeyDown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/input/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/input/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnC,qBAAa,oBAAqB,YAAW,gBAAgB;IACzD,SAAgB,aAAa,0BAAgC;IAE7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAQ;;IAQxB,MAAM;IAQN,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO;IAIhC,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO;IAOlC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQhC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG7B;IAED,OAAO,CAAC,QAAQ,CAAC,WAAW,CAI3B;CACJ"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { TgdEvent } from "../event/index.js";
|
|
2
|
+
export class TgdInputKeyboardImpl {
|
|
3
|
+
eventKeyPress = new TgdEvent();
|
|
4
|
+
keysDown = new Set();
|
|
5
|
+
keysUp = new Set();
|
|
6
|
+
attached = false;
|
|
7
|
+
constructor() {
|
|
8
|
+
document.addEventListener("keydown", this.handleKeyDown);
|
|
9
|
+
document.addEventListener("keyup", this.handleKeyUp);
|
|
10
|
+
this.attached = true;
|
|
11
|
+
}
|
|
12
|
+
detach() {
|
|
13
|
+
if (!this.attached)
|
|
14
|
+
return;
|
|
15
|
+
document.removeEventListener("keydown", this.handleKeyDown);
|
|
16
|
+
document.removeEventListener("keyup", this.handleKeyUp);
|
|
17
|
+
this.attached = false;
|
|
18
|
+
}
|
|
19
|
+
isUp(...keys) {
|
|
20
|
+
return !this.isDown(...keys);
|
|
21
|
+
}
|
|
22
|
+
isDown(...keys) {
|
|
23
|
+
for (const key of keys) {
|
|
24
|
+
if (!this.keysDown.has(key))
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
hasClicked(key) {
|
|
30
|
+
if (this.keysUp.has(key)) {
|
|
31
|
+
this.keysUp.delete(key);
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
handleKeyDown = (evt) => {
|
|
37
|
+
this.keysDown.add(evt.key);
|
|
38
|
+
this.keysUp.delete(evt.key);
|
|
39
|
+
};
|
|
40
|
+
handleKeyUp = (evt) => {
|
|
41
|
+
this.keysDown.delete(evt.key);
|
|
42
|
+
this.keysUp.add(evt.key);
|
|
43
|
+
this.eventKeyPress.dispatch(evt);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5wdXQva2V5Ym9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVuQyxNQUFNLE9BQU8sb0JBQW9CO0lBQ2IsYUFBYSxHQUFHLElBQUksUUFBUSxFQUFpQixDQUFBO0lBRTVDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO0lBQzVCLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO0lBQ25DLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFFeEI7UUFDSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUN4RCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU07UUFFMUIsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDM0QsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFDekIsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLElBQWM7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsSUFBYztRQUNwQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUE7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUN2QixPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0lBRWdCLGFBQWEsR0FBRyxDQUFDLEdBQWtCLEVBQUUsRUFBRTtRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9CLENBQUMsQ0FBQTtJQUVnQixXQUFXLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEVBQUU7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNwQyxDQUFDLENBQUE7Q0FDSiJ9
|
|
@@ -1,48 +1,32 @@
|
|
|
1
1
|
import { TgdEvent } from "../event";
|
|
2
|
-
import { TgdInputPointer,
|
|
2
|
+
import { TgdInputPointer, TgdInputPointerEventMove, TgdInputPointerEventTap, TgdInputPointerEventZoom } from "../types";
|
|
3
3
|
export declare class TgdInputPointerImpl implements TgdInputPointer {
|
|
4
4
|
private readonly canvas;
|
|
5
|
-
readonly
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
readonly
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
start: TgdInputPointerEvent;
|
|
17
|
-
}>;
|
|
18
|
-
readonly eventZoom: TgdEvent<{
|
|
19
|
-
current: TgdInputPointerEvent;
|
|
20
|
-
direction: number;
|
|
21
|
-
preventDefault: () => void;
|
|
22
|
-
}>;
|
|
23
|
-
inertia: number;
|
|
5
|
+
readonly eventTap: TgdEvent<Readonly<TgdInputPointerEventTap>>;
|
|
6
|
+
readonly eventMoveStart: TgdEvent<Readonly<TgdInputPointerEventMove>>;
|
|
7
|
+
readonly eventMove: TgdEvent<Readonly<TgdInputPointerEventMove>>;
|
|
8
|
+
readonly eventMoveEnd: TgdEvent<Readonly<TgdInputPointerEventMove>>;
|
|
9
|
+
readonly eventZoom: TgdEvent<Readonly<TgdInputPointerEventZoom>>;
|
|
10
|
+
/**
|
|
11
|
+
* This is a tap only of the pointer touched for less that
|
|
12
|
+
* `tapDelay` milliseconds.
|
|
13
|
+
*/
|
|
14
|
+
tapDelay: number;
|
|
15
|
+
private controlKeys;
|
|
24
16
|
private start;
|
|
25
17
|
private current;
|
|
26
18
|
private previous;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
private screenY;
|
|
32
|
-
private inertiaDirX;
|
|
33
|
-
private inertiaDirY;
|
|
34
|
-
private inertiaStop;
|
|
35
|
-
private inertiaRunning;
|
|
36
|
-
private inertiaTimeStamp;
|
|
37
|
-
private inertiaLastRefresh;
|
|
19
|
+
/**
|
|
20
|
+
* If not null, the pointer is touching.
|
|
21
|
+
*/
|
|
22
|
+
private pointerEvent;
|
|
38
23
|
constructor(canvas: HTMLCanvasElement);
|
|
39
24
|
detach(): void;
|
|
25
|
+
private readonly handleContextMenu;
|
|
40
26
|
private readonly handleCanvasWheel;
|
|
41
|
-
private readonly handleCanvasPointerDown;
|
|
42
27
|
private readonly handlePointerDown;
|
|
43
28
|
private readonly handlePointerMove;
|
|
44
29
|
private readonly handlePointerUp;
|
|
45
30
|
private getPoint;
|
|
46
|
-
private readonly simulateInertia;
|
|
47
31
|
}
|
|
48
32
|
//# sourceMappingURL=pointer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../src/input/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../src/input/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EACH,eAAe,EACf,wBAAwB,EAExB,uBAAuB,EACvB,wBAAwB,EAC3B,MAAM,YAAY,CAAA;AAInB,qBAAa,mBAAoB,YAAW,eAAe;IAyC3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAxCnC,QAAQ,CAAC,QAAQ,8CAAoD;IACrE,QAAQ,CAAC,cAAc,+CAAqD;IAC5E,QAAQ,CAAC,SAAS,+CAAqD;IACvE,QAAQ,CAAC,YAAY,+CAAqD;IAC1E,QAAQ,CAAC,SAAS,+CAAqD;IACvE;;;OAGG;IACI,QAAQ,SAAM;IAErB,OAAO,CAAC,WAAW,CAKlB;IACD,OAAO,CAAC,KAAK,CAKZ;IACD,OAAO,CAAC,OAAO,CAKd;IACD,OAAO,CAAC,QAAQ,CAKf;IACD;;OAEG;IACH,OAAO,CAAC,YAAY,CAA4B;gBAEnB,MAAM,EAAE,iBAAiB;IAQtD,MAAM;IAWN,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAIjC;IAED,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAUjC;IAED,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAejC;IAED,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAWjC;IAED,OAAO,CAAC,QAAQ,CAAC,eAAe,CAmB/B;IAED,OAAO,CAAC,QAAQ;CAcnB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { TgdEvent } from "./../event/index.js";
|
|
2
|
+
const MOUSE_BUTTON_RIGHT = 2;
|
|
3
|
+
export class TgdInputPointerImpl {
|
|
4
|
+
canvas;
|
|
5
|
+
eventTap = new TgdEvent();
|
|
6
|
+
eventMoveStart = new TgdEvent();
|
|
7
|
+
eventMove = new TgdEvent();
|
|
8
|
+
eventMoveEnd = new TgdEvent();
|
|
9
|
+
eventZoom = new TgdEvent();
|
|
10
|
+
/**
|
|
11
|
+
* This is a tap only of the pointer touched for less that
|
|
12
|
+
* `tapDelay` milliseconds.
|
|
13
|
+
*/
|
|
14
|
+
tapDelay = 300;
|
|
15
|
+
controlKeys = {
|
|
16
|
+
altKey: false,
|
|
17
|
+
ctrlKey: false,
|
|
18
|
+
metaKey: false,
|
|
19
|
+
shiftKey: false,
|
|
20
|
+
};
|
|
21
|
+
start = {
|
|
22
|
+
x: 0,
|
|
23
|
+
y: 0,
|
|
24
|
+
t: 0,
|
|
25
|
+
fingersCount: 1,
|
|
26
|
+
};
|
|
27
|
+
current = {
|
|
28
|
+
x: 0,
|
|
29
|
+
y: 0,
|
|
30
|
+
t: 0,
|
|
31
|
+
fingersCount: 1,
|
|
32
|
+
};
|
|
33
|
+
previous = {
|
|
34
|
+
x: 0,
|
|
35
|
+
y: 0,
|
|
36
|
+
t: 0,
|
|
37
|
+
fingersCount: 1,
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* If not null, the pointer is touching.
|
|
41
|
+
*/
|
|
42
|
+
pointerEvent = null;
|
|
43
|
+
constructor(canvas) {
|
|
44
|
+
this.canvas = canvas;
|
|
45
|
+
canvas.addEventListener("pointerdown", this.handlePointerDown, true);
|
|
46
|
+
canvas.addEventListener("wheel", this.handleCanvasWheel);
|
|
47
|
+
canvas.addEventListener("contextmenu", this.handleContextMenu);
|
|
48
|
+
canvas.addEventListener("pointermove", this.handlePointerMove);
|
|
49
|
+
canvas.addEventListener("pointerup", this.handlePointerUp);
|
|
50
|
+
}
|
|
51
|
+
detach() {
|
|
52
|
+
const { canvas } = this;
|
|
53
|
+
if (!canvas)
|
|
54
|
+
return;
|
|
55
|
+
canvas.removeEventListener("pointerdown", this.handlePointerDown);
|
|
56
|
+
canvas.removeEventListener("wheel", this.handleCanvasWheel);
|
|
57
|
+
canvas.removeEventListener("contextmenu", this.handleContextMenu);
|
|
58
|
+
canvas.removeEventListener("pointermove", this.handlePointerMove);
|
|
59
|
+
canvas.removeEventListener("pointerup", this.handlePointerUp);
|
|
60
|
+
}
|
|
61
|
+
handleContextMenu = (evt) => {
|
|
62
|
+
evt.preventDefault();
|
|
63
|
+
};
|
|
64
|
+
handleCanvasWheel = (evt) => {
|
|
65
|
+
let delta = evt.deltaX + evt.deltaY + evt.deltaZ;
|
|
66
|
+
if (delta > 0)
|
|
67
|
+
delta = 1;
|
|
68
|
+
else
|
|
69
|
+
delta = -1;
|
|
70
|
+
this.eventZoom.dispatch({
|
|
71
|
+
current: this.getPoint(evt),
|
|
72
|
+
direction: delta,
|
|
73
|
+
preventDefault: () => evt.preventDefault(),
|
|
74
|
+
...this.controlKeys,
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
handlePointerDown = (evt) => {
|
|
78
|
+
if (!evt.isPrimary)
|
|
79
|
+
return;
|
|
80
|
+
this.canvas.setPointerCapture(evt.pointerId);
|
|
81
|
+
evt.preventDefault();
|
|
82
|
+
evt.stopPropagation();
|
|
83
|
+
this.pointerEvent = evt;
|
|
84
|
+
const point = this.getPoint(evt);
|
|
85
|
+
this.start = this.current = this.previous = point;
|
|
86
|
+
this.eventMoveStart.dispatch({
|
|
87
|
+
start: point,
|
|
88
|
+
current: point,
|
|
89
|
+
previous: point,
|
|
90
|
+
...this.controlKeys,
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
handlePointerMove = (evt) => {
|
|
94
|
+
if (!evt.isPrimary || !this.pointerEvent || !this.canvas)
|
|
95
|
+
return;
|
|
96
|
+
this.previous = this.current;
|
|
97
|
+
this.current = this.getPoint(evt);
|
|
98
|
+
this.eventMove.dispatch({
|
|
99
|
+
start: this.start,
|
|
100
|
+
current: this.current,
|
|
101
|
+
previous: this.previous,
|
|
102
|
+
...this.controlKeys,
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
handlePointerUp = (evt) => {
|
|
106
|
+
if (!evt.isPrimary || !this.pointerEvent)
|
|
107
|
+
return;
|
|
108
|
+
evt.preventDefault();
|
|
109
|
+
this.current = this.getPoint(evt);
|
|
110
|
+
this.eventMoveEnd.dispatch({
|
|
111
|
+
start: this.start,
|
|
112
|
+
current: this.current,
|
|
113
|
+
previous: this.previous,
|
|
114
|
+
...this.controlKeys,
|
|
115
|
+
});
|
|
116
|
+
this.pointerEvent = null;
|
|
117
|
+
// Tap event.
|
|
118
|
+
if (evt.timeStamp - this.start.t < this.tapDelay) {
|
|
119
|
+
this.eventTap.dispatch({
|
|
120
|
+
...this.start,
|
|
121
|
+
...this.controlKeys,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
getPoint(evt) {
|
|
126
|
+
this.controlKeys = {
|
|
127
|
+
altKey: evt.altKey || evt.buttons === MOUSE_BUTTON_RIGHT,
|
|
128
|
+
ctrlKey: evt.ctrlKey,
|
|
129
|
+
metaKey: evt.metaKey,
|
|
130
|
+
shiftKey: evt.shiftKey,
|
|
131
|
+
};
|
|
132
|
+
const { left, top, width, height } = this.canvas.getBoundingClientRect();
|
|
133
|
+
const x = 2 * ((evt.clientX - left) / width - 0.5);
|
|
134
|
+
const y = -2 * ((evt.clientY - top) / height - 0.5);
|
|
135
|
+
return { x, y, t: evt.timeStamp, fingersCount: 1 };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnB1dC9wb2ludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFTckMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUE7QUFFNUIsTUFBTSxPQUFPLG1CQUFtQjtJQXlDQztJQXhDcEIsUUFBUSxHQUFHLElBQUksUUFBUSxFQUFxQyxDQUFBO0lBQzVELGNBQWMsR0FBRyxJQUFJLFFBQVEsRUFBc0MsQ0FBQTtJQUNuRSxTQUFTLEdBQUcsSUFBSSxRQUFRLEVBQXNDLENBQUE7SUFDOUQsWUFBWSxHQUFHLElBQUksUUFBUSxFQUFzQyxDQUFBO0lBQ2pFLFNBQVMsR0FBRyxJQUFJLFFBQVEsRUFBc0MsQ0FBQTtJQUN2RTs7O09BR0c7SUFDSSxRQUFRLEdBQUcsR0FBRyxDQUFBO0lBRWIsV0FBVyxHQUFHO1FBQ2xCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxLQUFLO0tBQ2xCLENBQUE7SUFDTyxLQUFLLEdBQStCO1FBQ3hDLENBQUMsRUFBRSxDQUFDO1FBQ0osQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsQ0FBQztRQUNKLFlBQVksRUFBRSxDQUFDO0tBQ2xCLENBQUE7SUFDTyxPQUFPLEdBQStCO1FBQzFDLENBQUMsRUFBRSxDQUFDO1FBQ0osQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsQ0FBQztRQUNKLFlBQVksRUFBRSxDQUFDO0tBQ2xCLENBQUE7SUFDTyxRQUFRLEdBQStCO1FBQzNDLENBQUMsRUFBRSxDQUFDO1FBQ0osQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsQ0FBQztRQUNKLFlBQVksRUFBRSxDQUFDO0tBQ2xCLENBQUE7SUFDRDs7T0FFRztJQUNLLFlBQVksR0FBd0IsSUFB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/light/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TgdVec3, TgdVec4 } from "../math";
|
|
2
|
+
export interface TgdLightOptions {
|
|
3
|
+
color: TgdVec4;
|
|
4
|
+
direction: TgdVec3;
|
|
5
|
+
}
|
|
6
|
+
export declare class TgdLight {
|
|
7
|
+
/**
|
|
8
|
+
* The alpha channel is the intensity of the light.
|
|
9
|
+
*/
|
|
10
|
+
color: TgdVec4;
|
|
11
|
+
private readonly _direction;
|
|
12
|
+
constructor(options?: Partial<TgdLightOptions>);
|
|
13
|
+
get direction(): TgdVec3;
|
|
14
|
+
set direction(v: TgdVec3);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=light.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/light/light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;CACrB;AAED,qBAAa,QAAQ;IACjB;;OAEG;IACI,KAAK,EAAE,OAAO,CAAA;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;gBAE/B,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM;IAKlD,IAAI,SAAS,IAGI,OAAO,CADvB;IACD,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,EAEvB;CACJ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TgdVec3, TgdVec4 } from "./../math/index.js";
|
|
2
|
+
export class TgdLight {
|
|
3
|
+
/**
|
|
4
|
+
* The alpha channel is the intensity of the light.
|
|
5
|
+
*/
|
|
6
|
+
color;
|
|
7
|
+
_direction = new TgdVec3();
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
this.color = options.color ?? new TgdVec4(0.8, 0.8, 0.8, 1);
|
|
10
|
+
this.direction = options.direction ?? new TgdVec3(0, 0, -1);
|
|
11
|
+
}
|
|
12
|
+
get direction() {
|
|
13
|
+
return this._direction;
|
|
14
|
+
}
|
|
15
|
+
set direction(v) {
|
|
16
|
+
this._direction.from(v).normalize();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGlnaHQvbGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFPNUMsTUFBTSxPQUFPLFFBQVE7SUFDakI7O09BRUc7SUFDSSxLQUFLLENBQVM7SUFFSixVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtJQUUzQyxZQUFZLFVBQW9DLEVBQUU7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0QsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUMxQixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBVTtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUN2QyxDQUFDO0NBQ0oifQ==
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export declare class TgdLoaderImage {
|
|
2
|
+
/**
|
|
3
|
+
* Try to load an image and return `null` in case of failure.
|
|
4
|
+
* @param url URL of the image to load.
|
|
5
|
+
*/
|
|
2
6
|
static image(url: string): Promise<HTMLImageElement | null>;
|
|
3
7
|
static canvas(url: string): Promise<HTMLCanvasElement | null>;
|
|
4
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/loader/image.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/loader/image.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACvB;;;OAGG;WACU,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;WAYpD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAatE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export class TgdLoaderImage {
|
|
2
|
+
/**
|
|
3
|
+
* Try to load an image and return `null` in case of failure.
|
|
4
|
+
* @param url URL of the image to load.
|
|
5
|
+
*/
|
|
6
|
+
static async image(url) {
|
|
7
|
+
return new Promise(resolve => {
|
|
8
|
+
const img = new Image();
|
|
9
|
+
img.onload = () => resolve(img);
|
|
10
|
+
img.onerror = () => {
|
|
11
|
+
console.error("Unable to load image: ", url);
|
|
12
|
+
resolve(null);
|
|
13
|
+
};
|
|
14
|
+
img.src = url;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
static async canvas(url) {
|
|
18
|
+
const img = await TgdLoaderImage.image(url);
|
|
19
|
+
if (!img)
|
|
20
|
+
return null;
|
|
21
|
+
const canvas = document.createElement("canvas");
|
|
22
|
+
canvas.width = img.naturalWidth;
|
|
23
|
+
canvas.height = img.naturalHeight;
|
|
24
|
+
const ctx = canvas.getContext("2d");
|
|
25
|
+
if (!ctx)
|
|
26
|
+
throw Error("Unable to get a 2D context!");
|
|
27
|
+
ctx.drawImage(img, 0, 0);
|
|
28
|
+
return canvas;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9hZGVyL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQVc7UUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1lBQ3ZCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQy9CLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQixDQUFDLENBQUE7WUFDRCxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFXO1FBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMzQyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRXJCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDL0MsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQTtRQUNqQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25DLElBQUksQ0FBQyxHQUFHO1lBQUUsTUFBTSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtRQUVwRCxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDeEIsT0FBTyxNQUFNLENBQUE7SUFDakIsQ0FBQztDQUNKIn0=
|
|
File without changes
|
|
File without changes
|