@tolokoban/tgd 2.0.0 → 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 +14 -12
- 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 +20 -16
- 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 +95 -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 +111 -12
- 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 +88 -8
- 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 +80 -11
- 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 +2 -0
- package/lib/dist/event/index.d.ts.map +1 -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 +9 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +21 -1
- package/lib/dist/input/index.d.ts +2 -0
- package/lib/dist/input/index.d.ts.map +1 -1
- package/lib/dist/input/index.js +4 -0
- package/lib/dist/input/inputs.d.ts +11 -0
- package/lib/dist/input/inputs.d.ts.map +1 -0
- package/lib/dist/input/inputs.js +23 -0
- package/lib/dist/input/keyboard.d.ts +6 -2
- 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 +24 -40
- 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 +26 -12
- 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 +26 -0
- package/lib/dist/painter/axis/axis.d.ts.map +1 -0
- 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 +2 -0
- package/lib/dist/painter/axis/index.d.ts.map +1 -0
- package/lib/dist/painter/axis/index.js +2 -0
- package/lib/dist/painter/background/background.d.ts +11 -8
- 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 +15 -10
- 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 +22 -0
- package/lib/dist/painter/depth.d.ts.map +1 -0
- 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 +16 -4
- 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 +10 -5
- 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 +4 -2
- 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 -1
- 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 +2 -0
- package/lib/dist/painter/segments/index.d.ts.map +1 -0
- package/lib/dist/painter/segments/index.js +2 -0
- package/lib/dist/painter/segments/segments.d.ts +85 -0
- package/lib/dist/painter/segments/segments.d.ts.map +1 -0
- 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 +11 -17
- 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 +17 -2
- 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 +2 -2
- 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 +10 -4
- 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 +8 -9
- 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 +7 -9
- 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 +14 -9
- 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 +4 -5
- 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 +25 -0
- package/lib/dist/types/context.d.ts.map +1 -0
- 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 +5 -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 +8 -0
- package/lib/dist/types/input-keyboard.d.ts.map +1 -0
- package/lib/dist/types/input-keyboard.js +2 -0
- package/lib/dist/types/input-pointer.d.ts +42 -0
- package/lib/dist/types/input-pointer.d.ts.map +1 -0
- 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 +2 -0
- package/lib/dist/types/painter.d.ts.map +1 -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 +20 -8
- 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 +42 -3
- 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 -0
- 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 +13 -0
- package/lib/dist/utils/canvas.d.ts.map +1 -0
- 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 +6 -0
- package/lib/dist/utils/index.d.ts.map +1 -0
- 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 +7 -3
- package/lib/dist/vao/vao.d.ts.map +1 -1
- package/lib/dist/vao/vao.js +67 -0
- package/package.json +6 -5
- package/lib/dist/mesh/mesh.d.ts +0 -11
- package/lib/dist/mesh/mesh.d.ts.map +0 -1
- package/lib/dist/painter/isometric/isometric.frag.d.ts +0 -3
- package/lib/dist/painter/isometric/isometric.frag.d.ts.map +0 -1
- package/lib/dist/painter/isometric/isometric.vert.d.ts +0 -3
- package/lib/dist/painter/isometric/isometric.vert.d.ts.map +0 -1
- package/lib/dist/painter/primitive/primitive.frag.d.ts +0 -3
- package/lib/dist/painter/primitive/primitive.frag.d.ts.map +0 -1
- package/lib/dist/painter/primitive/primitive.vert.d.ts +0 -3
- package/lib/dist/painter/primitive/primitive.vert.d.ts.map +0 -1
- package/lib/dist/painter/sprites/sprites-painter.frag.d.ts +0 -3
- package/lib/dist/painter/sprites/sprites-painter.frag.d.ts.map +0 -1
- package/lib/dist/painter/sprites/sprites-painter.vert.d.ts +0 -3
- package/lib/dist/painter/sprites/sprites-painter.vert.d.ts.map +0 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { TgdPainter } from "./../painter.js";
|
|
2
|
+
import { TgdDataset } from "./../../dataset/dataset.js";
|
|
3
|
+
import { TgdCameraPerspective } from "./../../camera/index.js";
|
|
4
|
+
import { TgdMat4 } from "./../../math/index.js";
|
|
5
|
+
import VERT from "./skybox.vert";
|
|
6
|
+
import FRAG from "./skybox.frag";
|
|
7
|
+
export class TgdPainterSkybox extends TgdPainter {
|
|
8
|
+
context;
|
|
9
|
+
camera;
|
|
10
|
+
texture;
|
|
11
|
+
program;
|
|
12
|
+
vao;
|
|
13
|
+
matrix = new TgdMat4();
|
|
14
|
+
tmpMat = new TgdMat4();
|
|
15
|
+
constructor(context, options) {
|
|
16
|
+
super();
|
|
17
|
+
this.context = context;
|
|
18
|
+
this.camera = options.camera ?? new TgdCameraPerspective();
|
|
19
|
+
this.texture = context.texturesCube.create(options);
|
|
20
|
+
this.program = context.programs.create({
|
|
21
|
+
vert: VERT,
|
|
22
|
+
frag: FRAG,
|
|
23
|
+
});
|
|
24
|
+
const dataset = new TgdDataset({
|
|
25
|
+
attPoint: "vec2",
|
|
26
|
+
});
|
|
27
|
+
dataset.set("attPoint", new Float32Array([-1, +1, +1, +1, -1, -1, +1, -1]));
|
|
28
|
+
this.vao = context.createVAO(this.program, [dataset]);
|
|
29
|
+
}
|
|
30
|
+
delete() {
|
|
31
|
+
const { vao } = this;
|
|
32
|
+
vao.delete();
|
|
33
|
+
}
|
|
34
|
+
paint() {
|
|
35
|
+
const { context, vao, program, texture } = this;
|
|
36
|
+
const { gl } = context;
|
|
37
|
+
program.use();
|
|
38
|
+
program.uniformMatrix4fv("uniMatrix", this.matrix);
|
|
39
|
+
texture.activate(program, "uniTexture");
|
|
40
|
+
vao.bind();
|
|
41
|
+
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
42
|
+
// Compute matrix for the next frame.
|
|
43
|
+
const { camera, matrix, tmpMat } = this;
|
|
44
|
+
if (camera !== context.camera) {
|
|
45
|
+
camera.orientation = context.camera.orientation;
|
|
46
|
+
}
|
|
47
|
+
matrix.from(camera.matrixProjection);
|
|
48
|
+
tmpMat.fromMat3(camera.matrixModelView);
|
|
49
|
+
tmpMat.m30 = 0;
|
|
50
|
+
tmpMat.m31 = 0;
|
|
51
|
+
tmpMat.m32 = 0;
|
|
52
|
+
tmpMat.m33 = 1;
|
|
53
|
+
tmpMat.m03 = 0;
|
|
54
|
+
tmpMat.m13 = 0;
|
|
55
|
+
tmpMat.m23 = 0;
|
|
56
|
+
matrix.multiply(tmpMat).invert();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5Ym94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhaW50ZXIvc2t5Ym94L3NreWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWpELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRW5DLE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLElBQUksTUFBTSxlQUFlLENBQUE7QUFNaEMsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFVBQVU7SUFVdkI7SUFUZCxNQUFNLENBQXNCO0lBRWxCLE9BQU8sQ0FBZ0I7SUFDdkIsT0FBTyxDQUFZO0lBQ25CLEdBQUcsQ0FBZ0I7SUFDbkIsTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7SUFDdEIsTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7SUFFdkMsWUFDcUIsT0FBbUIsRUFDcEMsT0FBZ0M7UUFFaEMsS0FBSyxFQUFFLENBQUE7UUFIVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBSXBDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLG9CQUFvQixFQUFFLENBQUE7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ25DLElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUE7UUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMzQixRQUFRLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsR0FBRyxDQUNQLFVBQVUsRUFDVixJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDckQsQ0FBQTtRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsTUFBTTtRQUNGLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDcEIsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ2hCLENBQUM7SUFFRCxLQUFLO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUMvQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBRXRCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUNiLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ3ZDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNWLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFdEMscUNBQXFDO1FBQ3JDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUN2QyxJQUFJLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQTtRQUNuRCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUNwQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUN2QyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ2QsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDZCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ2QsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDZCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDcEMsQ0FBQztDQUNKIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-each-line.d.ts","sourceRoot":"","sources":["../../src/parser/for-each-line.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"for-each-line.d.ts","sourceRoot":"","sources":["../../src/parser/for-each-line.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,WAAW,YAAuB,MAAM,uCAYpD,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generator to iterate on each lines of a big string content.
|
|
3
|
+
*/
|
|
4
|
+
export const forEachLine = function* (content) {
|
|
5
|
+
const len = content.length;
|
|
6
|
+
let index = 0;
|
|
7
|
+
let cursor = 0;
|
|
8
|
+
while (index > -1 && index < len) {
|
|
9
|
+
index = content.indexOf("\n", cursor);
|
|
10
|
+
if (index < 0)
|
|
11
|
+
break;
|
|
12
|
+
yield content.substring(cursor, index).trim();
|
|
13
|
+
cursor = index + 1;
|
|
14
|
+
}
|
|
15
|
+
return content.substring(cursor).trim();
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWVhY2gtbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXIvZm9yLWVhY2gtbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsRUFBRSxPQUFlO0lBQ2pELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFDMUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ2IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQ2QsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQy9CLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNyQyxJQUFJLEtBQUssR0FBRyxDQUFDO1lBQUUsTUFBSztRQUVwQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzdDLE1BQU0sR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDM0MsQ0FBQyxDQUFBIn0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { TgdDataset } from "../../dataset";
|
|
2
|
+
import { TgdFormatGltf, TgdFormatGltfAccessor, TgdFormatGltfMaterial, TgdFormatGltfMesh, TgdFormatGltfNode, TgdFormatGltfScene } from "../../types/gltf";
|
|
3
|
+
import { TgdTexture2DOptions } from "../../types";
|
|
4
|
+
export declare class TgdParserGLTransfertFormatBinary {
|
|
5
|
+
readonly gltf: Readonly<TgdFormatGltf>;
|
|
6
|
+
private readonly chunks;
|
|
7
|
+
private readonly cacheImages;
|
|
8
|
+
private readonly cacheImageURLs;
|
|
9
|
+
private readonly cacheBufferViewDatas;
|
|
10
|
+
constructor(content: ArrayBuffer);
|
|
11
|
+
getScenes(): TgdFormatGltfScene[];
|
|
12
|
+
getScene(sceneIndex: number): TgdFormatGltfScene;
|
|
13
|
+
getNode(nodeIndex: number): TgdFormatGltfNode;
|
|
14
|
+
getAccessor(accessorIndex?: number): TgdFormatGltfAccessor;
|
|
15
|
+
getMaterial(materialIndex: number): TgdFormatGltfMaterial;
|
|
16
|
+
getMesh(meshIndex?: number): TgdFormatGltfMesh;
|
|
17
|
+
getMeshPrimitive(meshIndex?: number, primitiveIndex?: number): {
|
|
18
|
+
attributes: Record<string, number>;
|
|
19
|
+
indices?: number | undefined;
|
|
20
|
+
mode?: number | undefined;
|
|
21
|
+
material?: number | undefined;
|
|
22
|
+
};
|
|
23
|
+
getMeshPrimitiveIndices(meshIndex?: number, primitiveIndex?: number): {
|
|
24
|
+
type: number;
|
|
25
|
+
buff: BufferSource;
|
|
26
|
+
elemCount: number;
|
|
27
|
+
};
|
|
28
|
+
getTexture2DOptions(textureIndex: number): TgdTexture2DOptions;
|
|
29
|
+
loadImage(imageIndex: number): Promise<HTMLImageElement | undefined>;
|
|
30
|
+
getImageURL(imageIndex: number): string | undefined;
|
|
31
|
+
getBufferViewData(bufferViewIndex: number): ArrayBuffer;
|
|
32
|
+
setAttrib(dataset: TgdDataset, attribName: string, meshIndex?: number, primitiveIndex?: number, primitiveAttribName?: string): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=gltf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/gltf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhD,qBAAa,gCAAgC;IACzC,SAAgB,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAE7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGzB;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAiC;gBAE1D,OAAO,EAAE,WAAW;IAYhC,SAAS,IAAI,kBAAkB,EAAE;IAIjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAShD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAS7C,WAAW,CAAC,aAAa,SAAI,GAAG,qBAAqB;IASrD,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB;IASzD,OAAO,CAAC,SAAS,SAAI,GAAG,iBAAiB;IASzC,gBAAgB,CAAC,SAAS,SAAI,EAAE,cAAc,SAAI;;;;;;IAYlD,uBAAuB,CACnB,SAAS,SAAI,EACb,cAAc,SAAI,GACnB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAW1D,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB;IAexD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA2B1E,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAsBnD,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW;IAmBvD,SAAS,CACL,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAI,EACb,cAAc,SAAI,EAClB,mBAAmB,CAAC,EAAE,MAAM;CA4BnC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { parseGLB } from "./parser.js";
|
|
2
|
+
export class TgdParserGLTransfertFormatBinary {
|
|
3
|
+
gltf;
|
|
4
|
+
chunks;
|
|
5
|
+
cacheImages = new Map();
|
|
6
|
+
cacheImageURLs = new Map();
|
|
7
|
+
cacheBufferViewDatas = new Map();
|
|
8
|
+
constructor(content) {
|
|
9
|
+
try {
|
|
10
|
+
const data = parseGLB(content);
|
|
11
|
+
this.gltf = data.gltf;
|
|
12
|
+
this.chunks = data.chunks;
|
|
13
|
+
}
|
|
14
|
+
catch (ex) {
|
|
15
|
+
const message = ex instanceof Error ? ex.message : JSON.stringify(ex);
|
|
16
|
+
throw Error(`[TgdParserGLTransfertFormatBinary] ${message}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
getScenes() {
|
|
20
|
+
return this.gltf.scenes ?? [];
|
|
21
|
+
}
|
|
22
|
+
getScene(sceneIndex) {
|
|
23
|
+
const scene = this.gltf.scenes?.[sceneIndex];
|
|
24
|
+
if (!scene) {
|
|
25
|
+
throw Error(`Asset has no scene with index #${sceneIndex}!`);
|
|
26
|
+
}
|
|
27
|
+
return scene;
|
|
28
|
+
}
|
|
29
|
+
getNode(nodeIndex) {
|
|
30
|
+
const node = this.gltf.nodes?.[nodeIndex];
|
|
31
|
+
if (!node) {
|
|
32
|
+
throw Error(`Asset has no node with index #${nodeIndex}!`);
|
|
33
|
+
}
|
|
34
|
+
return node;
|
|
35
|
+
}
|
|
36
|
+
getAccessor(accessorIndex = 0) {
|
|
37
|
+
const accessor = this.gltf.accessors?.[accessorIndex];
|
|
38
|
+
if (!accessor) {
|
|
39
|
+
throw Error(`Asset has no accessor with index #${accessorIndex}!`);
|
|
40
|
+
}
|
|
41
|
+
return accessor;
|
|
42
|
+
}
|
|
43
|
+
getMaterial(materialIndex) {
|
|
44
|
+
const material = this.gltf.materials?.[materialIndex];
|
|
45
|
+
if (!material) {
|
|
46
|
+
throw Error(`Asset has no material with index #${materialIndex}!`);
|
|
47
|
+
}
|
|
48
|
+
return material;
|
|
49
|
+
}
|
|
50
|
+
getMesh(meshIndex = 0) {
|
|
51
|
+
const mesh = this.gltf.meshes?.[meshIndex];
|
|
52
|
+
if (!mesh) {
|
|
53
|
+
throw Error(`Asset has no mesh with index #${meshIndex}!`);
|
|
54
|
+
}
|
|
55
|
+
return mesh;
|
|
56
|
+
}
|
|
57
|
+
getMeshPrimitive(meshIndex = 0, primitiveIndex = 0) {
|
|
58
|
+
const mesh = this.getMesh(meshIndex);
|
|
59
|
+
const primitive = mesh.primitives[primitiveIndex];
|
|
60
|
+
if (!primitive) {
|
|
61
|
+
throw Error(`Asset has no primitive #${primitiveIndex} in mesh #${meshIndex}!`);
|
|
62
|
+
}
|
|
63
|
+
return primitive;
|
|
64
|
+
}
|
|
65
|
+
getMeshPrimitiveIndices(meshIndex = 0, primitiveIndex = 0) {
|
|
66
|
+
const primitive = this.getMeshPrimitive(meshIndex, primitiveIndex);
|
|
67
|
+
const accessor = this.getAccessor(primitive.indices ?? 0);
|
|
68
|
+
const buffer = this.getBufferViewData(accessor.bufferView ?? 0);
|
|
69
|
+
return {
|
|
70
|
+
type: accessor.componentType,
|
|
71
|
+
buff: buffer,
|
|
72
|
+
elemCount: accessor.count,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
getTexture2DOptions(textureIndex) {
|
|
76
|
+
const texture = this.gltf.textures?.[textureIndex];
|
|
77
|
+
if (!texture) {
|
|
78
|
+
throw Error(`Asset has no texture with index #${textureIndex}!`);
|
|
79
|
+
}
|
|
80
|
+
const source = texture.source ?? texture.extensions?.EXT_texture_webp?.source ?? 0;
|
|
81
|
+
const url = this.getImageURL(source);
|
|
82
|
+
const options = {
|
|
83
|
+
image: url,
|
|
84
|
+
};
|
|
85
|
+
return options;
|
|
86
|
+
}
|
|
87
|
+
async loadImage(imageIndex) {
|
|
88
|
+
const fromCache = this.cacheImages.get(imageIndex);
|
|
89
|
+
if (fromCache)
|
|
90
|
+
return fromCache;
|
|
91
|
+
const url = this.getImageURL(imageIndex);
|
|
92
|
+
if (!url)
|
|
93
|
+
return;
|
|
94
|
+
const promise = new Promise((resolve, reject) => {
|
|
95
|
+
const img = new Image();
|
|
96
|
+
img.src = url;
|
|
97
|
+
img.onload = () => {
|
|
98
|
+
resolve(img);
|
|
99
|
+
};
|
|
100
|
+
img.onerror = () => {
|
|
101
|
+
console.error(`Unable to load image #${imageIndex}!`, this.gltf.images?.[imageIndex]);
|
|
102
|
+
reject();
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
this.cacheImages.set(imageIndex, promise);
|
|
106
|
+
return promise;
|
|
107
|
+
}
|
|
108
|
+
getImageURL(imageIndex) {
|
|
109
|
+
const fromCache = this.cacheImageURLs.get(imageIndex);
|
|
110
|
+
if (fromCache)
|
|
111
|
+
return fromCache;
|
|
112
|
+
const { gltf } = this;
|
|
113
|
+
const image = gltf.images?.[imageIndex];
|
|
114
|
+
if (!image)
|
|
115
|
+
return;
|
|
116
|
+
if (image.uri)
|
|
117
|
+
return image.uri;
|
|
118
|
+
if (typeof image.bufferView !== "number")
|
|
119
|
+
return;
|
|
120
|
+
const buffer = this.getBufferViewData(image.bufferView);
|
|
121
|
+
if (!buffer)
|
|
122
|
+
return;
|
|
123
|
+
const blob = new Blob([buffer], {
|
|
124
|
+
type: image.mimeType,
|
|
125
|
+
});
|
|
126
|
+
const url = URL.createObjectURL(blob);
|
|
127
|
+
this.cacheImageURLs.set(imageIndex, url);
|
|
128
|
+
return url;
|
|
129
|
+
}
|
|
130
|
+
getBufferViewData(bufferViewIndex) {
|
|
131
|
+
const fromCache = this.cacheBufferViewDatas.get(bufferViewIndex);
|
|
132
|
+
if (fromCache)
|
|
133
|
+
return fromCache;
|
|
134
|
+
const { gltf } = this;
|
|
135
|
+
const bufferView = gltf.bufferViews?.[bufferViewIndex];
|
|
136
|
+
if (!bufferView)
|
|
137
|
+
throw Error(`No bufferView with index #${bufferViewIndex}!`);
|
|
138
|
+
const buffer = this.chunks[bufferView.buffer];
|
|
139
|
+
const byteOffset = bufferView.byteOffset ?? 0;
|
|
140
|
+
const data = buffer.slice(byteOffset, byteOffset + bufferView.byteLength);
|
|
141
|
+
this.cacheBufferViewDatas.set(bufferViewIndex, data);
|
|
142
|
+
return data;
|
|
143
|
+
}
|
|
144
|
+
setAttrib(dataset, attribName, meshIndex = 0, primitiveIndex = 0, primitiveAttribName) {
|
|
145
|
+
const { gltf } = this;
|
|
146
|
+
const accessorIndex = gltf.meshes?.[meshIndex].primitives[primitiveIndex].attributes[primitiveAttribName ?? attribName] ?? -1;
|
|
147
|
+
const accessor = gltf.accessors?.[accessorIndex];
|
|
148
|
+
if (!accessor) {
|
|
149
|
+
throw Error(`No attribute "${primitiveAttribName ?? attribName}" for primitive #${primitiveIndex} of mesh #${meshIndex}!`);
|
|
150
|
+
}
|
|
151
|
+
const bufferViewIndex = accessor.bufferView ?? 0;
|
|
152
|
+
const bufferView = gltf.bufferViews?.[bufferViewIndex];
|
|
153
|
+
if (!bufferView) {
|
|
154
|
+
throw Error(`No bufferView with index #${bufferViewIndex}!`);
|
|
155
|
+
}
|
|
156
|
+
const buffer = this.getBufferViewData(bufferViewIndex);
|
|
157
|
+
dataset.set(attribName, buffer, {
|
|
158
|
+
byteStride: bufferView.byteStride,
|
|
159
|
+
byteOffset: accessor.byteOffset,
|
|
160
|
+
count: accessor.count,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFXbkMsTUFBTSxPQUFPLGdDQUFnQztJQUN6QixJQUFJLENBQXlCO0lBRTVCLE1BQU0sQ0FBZTtJQUNyQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBR25DLENBQUE7SUFDYyxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFDMUMsb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUE7SUFFdEUsWUFBWSxPQUFvQjtRQUM1QixJQUFJLENBQUM7WUFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUM3QixDQUFDO1FBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNWLE1BQU0sT0FBTyxHQUNULEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDekQsTUFBTSxLQUFLLENBQUMsc0NBQXNDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDaEUsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVELFFBQVEsQ0FBQyxVQUFrQjtRQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzVDLElBQUksQ0FBQyxLQUFLLEVB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TgdFormatGltf } from "../../types/gltf";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://www.khronos.org/files/gltf20-reference-guide.pdf
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseGLB(data: ArrayBuffer): {
|
|
6
|
+
gltf: TgdFormatGltf;
|
|
7
|
+
chunks: ArrayBuffer[];
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAA;AAErE;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG;IACzC,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;CACxB,CA+CA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { assertTgdFormatGltf } from "../../types/gltf.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://www.khronos.org/files/gltf20-reference-guide.pdf
|
|
4
|
+
*/
|
|
5
|
+
// eslint-disable-next-line max-statements
|
|
6
|
+
export function parseGLB(data) {
|
|
7
|
+
const view = new DataView(data);
|
|
8
|
+
const magicNumber = view.getUint32(0, true);
|
|
9
|
+
if (magicNumber !== 0x46546c67) {
|
|
10
|
+
throw Error("Invalid magic number for GLB file!");
|
|
11
|
+
}
|
|
12
|
+
const version = view.getUint32(4, true);
|
|
13
|
+
if (version !== 2) {
|
|
14
|
+
throw Error(`We support only version 2, but this file is in version ${version}!`);
|
|
15
|
+
}
|
|
16
|
+
const length = view.getUint32(8, true);
|
|
17
|
+
let gltf = {};
|
|
18
|
+
const chunks = [];
|
|
19
|
+
let offset = 12;
|
|
20
|
+
while (offset < length) {
|
|
21
|
+
const chunkLength = view.getUint32(offset, true);
|
|
22
|
+
offset += 4;
|
|
23
|
+
const chunkType = view.getUint32(offset, true);
|
|
24
|
+
offset += 4;
|
|
25
|
+
const chunkData = data.slice(offset, offset + chunkLength);
|
|
26
|
+
offset += chunkLength;
|
|
27
|
+
if (chunkType === 0x4e4f534a) {
|
|
28
|
+
// This is the JSON part.
|
|
29
|
+
const json = new TextDecoder().decode(chunkData);
|
|
30
|
+
try {
|
|
31
|
+
const obj = JSON.parse(json);
|
|
32
|
+
console.log(obj);
|
|
33
|
+
assertTgdFormatGltf(obj);
|
|
34
|
+
gltf = obj;
|
|
35
|
+
}
|
|
36
|
+
catch (ex) {
|
|
37
|
+
console.error("Unable to parse this JSON file:", json);
|
|
38
|
+
console.error(ex);
|
|
39
|
+
throw Error("Invalid JSON data in the chunk!");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (chunkType === 0x004e4942) {
|
|
43
|
+
chunks.push(chunkData);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw Error(`We got an invalid chunk type: 0x${chunkType
|
|
47
|
+
.toString(16)
|
|
48
|
+
.padStart(8, "0")}!`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return { gltf, chunks };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcnNlci9nbHRmL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFckU7O0dBRUc7QUFDSCwwQ0FBMEM7QUFDMUMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFpQjtJQUl0QyxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMzQyxJQUFJLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM3QixNQUFNLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN2QyxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQixNQUFNLEtBQUssQ0FDUCwwREFBMEQsT0FBTyxHQUFHLENBQ3ZFLENBQUE7SUFDTCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBbUIsQ0FBQTtJQUM5QixNQUFNLE1BQU0sR0FBa0IsRUFBRSxDQUFBO0lBQ2hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtJQUNmLE9BQU8sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2hELE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM5QyxNQUFNLElBQUksQ0FBQyxDQUFBO1FBQ1gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFBO1FBQzFELE1BQU0sSUFBSSxXQUFXLENBQUE7UUFDckIsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDM0IseUJBQXlCO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ2hELElBQUksQ0FBQztnQkFDRCxNQUFNLEdBQUcsR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDeEIsSUFBSSxHQUFHLEdBQUcsQ0FBQTtZQUNkLENBQUM7WUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3RELE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ2pCLE1BQU0sS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7WUFDbEQsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxLQUFLLENBQ1AsbUNBQW1DLFNBQVM7aUJBQ3ZDLFFBQVEsQ0FBQyxFQUFFLENBQUM7aUJBQ1osUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUMzQixDQUFBO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQzNCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./gltf/index.js";
|
|
2
|
+
export * from "./mesh/wavefront.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFyc2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsa0JBQWtCLENBQUEifQ==
|
|
@@ -1,30 +1,88 @@
|
|
|
1
|
+
import { TgdMeshData } from "../../types";
|
|
2
|
+
export interface TgdParserMeshWavefrontAttributes {
|
|
3
|
+
vertex: number;
|
|
4
|
+
normal?: number;
|
|
5
|
+
uv?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* This [Wavefront](https://en.wikipedia.org/wiki/Wavefront_.obj_file)
|
|
9
|
+
* parser only finds the object name,
|
|
10
|
+
* the vertices coords, the normals and the UVs.
|
|
11
|
+
*
|
|
12
|
+
* - There can be only one object per file.
|
|
13
|
+
* - Normals and UVs are optional.
|
|
14
|
+
* - All faces **must** be triangles.
|
|
15
|
+
*
|
|
16
|
+
* To export an obj file from blender, please use the following options:
|
|
17
|
+
*
|
|
18
|
+
* - Forward axis: **Y**
|
|
19
|
+
* - Up axis: **Z**
|
|
20
|
+
* - Object / Apply Modifiers: **True**
|
|
21
|
+
* - Geometry / UV Coordinates: **True**
|
|
22
|
+
* - Geometry / Normals: **True**
|
|
23
|
+
* - Geometry / Triangulated Mesh: **True**
|
|
24
|
+
*/
|
|
1
25
|
export declare class TgdParserMeshWavefront {
|
|
2
26
|
private name;
|
|
3
27
|
private attPosition;
|
|
4
28
|
private attNormal;
|
|
5
29
|
private attUV;
|
|
30
|
+
/**
|
|
31
|
+
* Three consecutive elements define a triangle.
|
|
32
|
+
* An element is a index on the attributes array.
|
|
33
|
+
*/
|
|
6
34
|
private elements;
|
|
7
35
|
private elementIndex;
|
|
8
|
-
|
|
36
|
+
/**
|
|
37
|
+
* The key is `${pointIndex}/${normalIndex}/${uvIndex}`.
|
|
38
|
+
* The value is the index of the vertex (used in `elements`).
|
|
39
|
+
*/
|
|
40
|
+
private readonly mapVertices;
|
|
41
|
+
/**
|
|
42
|
+
* A point ins not a vertex, but just a position in space
|
|
43
|
+
* that can be used by several different vertices.
|
|
44
|
+
* That's the case for faces sharing a vertex but having different
|
|
45
|
+
* normals. A vertex is made of a position, a normal and an uv.
|
|
46
|
+
*/
|
|
47
|
+
private points;
|
|
48
|
+
/**
|
|
49
|
+
* A item of this array can be shared by different vertices.
|
|
50
|
+
*/
|
|
9
51
|
private normals;
|
|
52
|
+
/**
|
|
53
|
+
* List of vertices per face.
|
|
54
|
+
* The vertices are represented by the index of the attribute.
|
|
55
|
+
*/
|
|
56
|
+
private verticesPerTriangle;
|
|
57
|
+
/**
|
|
58
|
+
* Here "normal" is an index on `this.normals` array.
|
|
59
|
+
*/
|
|
60
|
+
private normalPerTriangle;
|
|
61
|
+
/**
|
|
62
|
+
* The vertices are indexed per attribute.
|
|
63
|
+
* The triangles are represented by indexes from `this.normalPerTriangle`.
|
|
64
|
+
*/
|
|
65
|
+
private trianglesPerVertex;
|
|
66
|
+
/**
|
|
67
|
+
* A item of this array can be shared by different vertices.
|
|
68
|
+
*/
|
|
10
69
|
private uvs;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
type: "UNSIGNED_BYTE" | "UNSIGNED_SHORT" | "UNSIGNED_INT";
|
|
16
|
-
elements: Uint8Array | Uint16Array | Uint32Array;
|
|
17
|
-
attPosition: Float32Array;
|
|
18
|
-
attNormal?: Float32Array;
|
|
19
|
-
attUV?: Float32Array;
|
|
20
|
-
};
|
|
70
|
+
parse(content: string, { computeNormals }?: {
|
|
71
|
+
computeNormals?: boolean;
|
|
72
|
+
}): TgdMeshData;
|
|
73
|
+
private computeNormals;
|
|
21
74
|
private reset;
|
|
22
75
|
private readonly onObject;
|
|
23
76
|
private readonly onVertex;
|
|
24
77
|
private readonly onNormal;
|
|
25
78
|
private readonly onTexture;
|
|
26
79
|
private readonly onFace;
|
|
27
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Return the index of the vertex for the triplet
|
|
82
|
+
* point/normal/uv.
|
|
83
|
+
*/
|
|
84
|
+
private readonly getElem;
|
|
28
85
|
private key;
|
|
86
|
+
private readVertexInto;
|
|
29
87
|
}
|
|
30
88
|
//# sourceMappingURL=wavefront.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wavefront.d.ts","sourceRoot":"","sources":["../../../src/parser/mesh/wavefront.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wavefront.d.ts","sourceRoot":"","sources":["../../../src/parser/mesh/wavefront.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAIxC,MAAM,WAAW,gCAAgC;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,KAAK,CAAe;IAC5B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,YAAY,CAAI;IACxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAiC;IAC/C;;OAEG;IACH,OAAO,CAAC,OAAO,CAAiC;IAChD;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAiB;IAC5C;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAgB;IACzC;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAiB;IAC3C;;OAEG;IACH,OAAO,CAAC,GAAG,CAAiB;IAE5B,KAAK,CACD,OAAO,EAAE,MAAM,EACf,EAAE,cAAc,EAAE,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACtD,WAAW;IAoDd,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAEzB;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CAetB;IAED;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAmBvB;IAED,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,cAAc;CAMzB"}
|