angular-three-soba 2.0.0-beta.26 → 2.0.0-beta.261
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/README.md +62 -4
- package/abstractions/README.md +278 -2
- package/abstractions/index.d.ts +11 -6
- package/abstractions/lib/catmull-rom-line.d.ts +648 -0
- package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
- package/abstractions/lib/edges.d.ts +850 -0
- package/abstractions/lib/gradient-texture.d.ts +24 -0
- package/abstractions/lib/grid.d.ts +339 -0
- package/abstractions/lib/helper.d.ts +25 -0
- package/abstractions/lib/line.d.ts +41 -0
- package/abstractions/lib/prism-geometry.d.ts +30 -0
- package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
- package/abstractions/lib/text-3d.d.ts +338 -0
- package/abstractions/lib/text.d.ts +55 -0
- package/cameras/README.md +91 -2
- package/cameras/index.d.ts +4 -4
- package/cameras/lib/camera-content.d.ts +10 -0
- package/cameras/lib/cube-camera.d.ts +38 -0
- package/cameras/lib/orthographic-camera.d.ts +40 -0
- package/cameras/lib/perspective-camera.d.ts +36 -0
- package/controls/README.md +95 -2
- package/controls/index.d.ts +2 -1
- package/controls/lib/camera-controls.d.ts +31 -0
- package/controls/lib/orbit-controls.d.ts +38 -0
- package/esm2022/abstractions/index.mjs +12 -7
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
- package/esm2022/abstractions/lib/edges.mjs +70 -0
- package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
- package/esm2022/abstractions/lib/grid.mjs +103 -0
- package/esm2022/abstractions/lib/helper.mjs +80 -0
- package/esm2022/abstractions/lib/line.mjs +123 -0
- package/esm2022/abstractions/lib/prism-geometry.mjs +55 -0
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
- package/esm2022/abstractions/lib/text-3d.mjs +98 -0
- package/esm2022/abstractions/lib/text.mjs +92 -0
- package/esm2022/cameras/index.mjs +5 -5
- package/esm2022/cameras/lib/camera-content.mjs +14 -0
- package/esm2022/cameras/lib/cube-camera.mjs +111 -0
- package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
- package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
- package/esm2022/controls/index.mjs +3 -2
- package/esm2022/controls/lib/camera-controls.mjs +127 -0
- package/esm2022/controls/lib/orbit-controls.mjs +126 -0
- package/esm2022/loaders/index.mjs +6 -5
- package/esm2022/loaders/lib/font-loader.mjs +49 -0
- package/esm2022/loaders/lib/gltf-loader.mjs +33 -0
- package/esm2022/loaders/lib/loader.mjs +109 -0
- package/esm2022/loaders/lib/progress.mjs +51 -0
- package/esm2022/loaders/lib/texture-loader.mjs +32 -0
- package/esm2022/materials/index.mjs +7 -7
- package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
- package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
- package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
- package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
- package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
- package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
- package/esm2022/misc/index.mjs +10 -14
- package/esm2022/misc/lib/animations.mjs +74 -0
- package/esm2022/misc/lib/bake-shadows.mjs +26 -0
- package/esm2022/misc/lib/computed-attribute.mjs +56 -0
- package/esm2022/misc/lib/constants.mjs +5 -0
- package/esm2022/misc/lib/decal.mjs +135 -0
- package/esm2022/misc/lib/deprecated.mjs +15 -0
- package/esm2022/misc/lib/depth-buffer.mjs +39 -0
- package/esm2022/misc/lib/fbo.mjs +89 -0
- package/esm2022/misc/lib/sampler.mjs +121 -0
- package/esm2022/shaders/index.mjs +3 -18
- package/esm2022/shaders/lib/grid-material.mjs +81 -0
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
- package/esm2022/staging/index.mjs +19 -22
- package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
- package/esm2022/staging/lib/backdrop.mjs +73 -0
- package/esm2022/staging/lib/bb-anchor.mjs +58 -0
- package/esm2022/staging/lib/bounds.mjs +286 -0
- package/esm2022/staging/lib/camera-shake.mjs +69 -0
- package/esm2022/staging/lib/caustics.mjs +188 -0
- package/esm2022/staging/lib/center.mjs +113 -0
- package/esm2022/staging/lib/contact-shadows.mjs +201 -0
- package/esm2022/staging/lib/environment.mjs +465 -0
- package/esm2022/staging/lib/float.mjs +60 -0
- package/esm2022/staging/lib/lightformer.mjs +107 -0
- package/esm2022/staging/lib/matcap-texture.mjs +81 -0
- package/esm2022/staging/lib/normal-texture.mjs +85 -0
- package/esm2022/staging/lib/randomized-lights.mjs +104 -0
- package/esm2022/staging/lib/render-texture.mjs +213 -0
- package/esm2022/staging/lib/sky.mjs +86 -0
- package/esm2022/staging/lib/spot-light.mjs +450 -0
- package/esm2022/staging/lib/stage.mjs +236 -0
- package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
- package/esm2022/vanilla-exports/index.mjs +3 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +739 -718
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +260 -307
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +174 -110
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +151 -129
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +511 -764
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +405 -2149
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +33 -1373
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2329 -3538
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
- package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
- package/loaders/README.md +130 -2
- package/loaders/index.d.ts +5 -4
- package/loaders/lib/font-loader.d.ts +27 -0
- package/loaders/lib/gltf-loader.d.ts +21 -0
- package/loaders/lib/loader.d.ts +29 -0
- package/loaders/lib/progress.d.ts +9 -0
- package/loaders/lib/texture-loader.d.ts +13 -0
- package/materials/README.md +160 -2
- package/materials/index.d.ts +6 -6
- package/materials/lib/custom-shader-material.d.ts +19 -0
- package/materials/lib/mesh-distort-material.d.ts +18 -0
- package/materials/lib/mesh-reflector-material.d.ts +50 -0
- package/materials/lib/mesh-refraction-material.d.ts +42 -0
- package/materials/lib/mesh-transmission-material.d.ts +77 -0
- package/materials/lib/mesh-wobble-material.d.ts +15 -0
- package/metadata.json +1 -1
- package/misc/README.md +217 -2
- package/misc/index.d.ts +9 -13
- package/misc/lib/animations.d.ts +14 -0
- package/misc/lib/computed-attribute.d.ts +69 -0
- package/misc/lib/constants.d.ts +1 -0
- package/misc/lib/decal.d.ts +27 -0
- package/misc/lib/deprecated.d.ts +14 -0
- package/misc/lib/depth-buffer.d.ts +8 -0
- package/misc/lib/fbo.d.ts +47 -0
- package/misc/lib/sampler.d.ts +73 -0
- package/package.json +60 -38
- package/shaders/index.d.ts +2 -17
- package/shaders/lib/grid-material.d.ts +69 -0
- package/shaders/lib/mesh-refraction-material.d.ts +11 -0
- package/staging/README.md +472 -2
- package/staging/index.d.ts +18 -21
- package/staging/lib/accumulative-shadows.d.ts +75 -0
- package/staging/lib/backdrop.d.ts +22 -0
- package/staging/lib/bb-anchor.d.ts +17 -0
- package/staging/lib/bounds.d.ts +47 -0
- package/staging/lib/camera-shake.d.ts +29 -0
- package/staging/lib/caustics.d.ts +53 -0
- package/staging/lib/center.d.ts +422 -0
- package/staging/lib/contact-shadows.d.ts +45 -0
- package/staging/lib/environment.d.ts +159 -0
- package/staging/lib/float.d.ts +19 -0
- package/staging/lib/lightformer.d.ts +334 -0
- package/staging/lib/matcap-texture.d.ts +32 -0
- package/staging/lib/normal-texture.d.ts +37 -0
- package/staging/lib/randomized-lights.d.ts +54 -0
- package/staging/lib/render-texture.d.ts +64 -0
- package/staging/lib/sky.d.ts +32 -0
- package/staging/lib/spot-light.d.ts +120 -0
- package/staging/lib/stage.d.ts +376 -0
- package/vanilla-exports/README.md +3 -0
- package/vanilla-exports/index.d.ts +27 -0
- package/web-types.json +1 -1
- package/abstractions/billboard/billboard.d.ts +0 -28
- package/abstractions/detailed/detailed.d.ts +0 -26
- package/abstractions/edges/edges.d.ts +0 -34
- package/abstractions/grid/grid.d.ts +0 -50
- package/abstractions/text/text.d.ts +0 -82
- package/abstractions/text-3d/text-3d.d.ts +0 -84
- package/assets/distort.vert.glsl +0 -1
- package/cameras/camera/camera-content.d.ts +0 -13
- package/cameras/camera/camera.d.ts +0 -26
- package/cameras/cube-camera/cube-camera.d.ts +0 -69
- package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
- package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
- package/controls/orbit-controls/orbit-controls.d.ts +0 -54
- package/esm2022/abstractions/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/detailed/detailed.mjs +0 -64
- package/esm2022/abstractions/edges/edges.mjs +0 -88
- package/esm2022/abstractions/grid/grid.mjs +0 -180
- package/esm2022/abstractions/text/text.mjs +0 -274
- package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
- package/esm2022/cameras/camera/camera-content.mjs +0 -21
- package/esm2022/cameras/camera/camera.mjs +0 -77
- package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -185
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
- package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
- package/esm2022/gizmos/index.mjs +0 -4
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
- package/esm2022/loaders/loader/loader.mjs +0 -138
- package/esm2022/loaders/progress/progress.mjs +0 -52
- package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/materials/point-material/point-material.mjs +0 -50
- package/esm2022/misc/animations/animations.mjs +0 -59
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
- package/esm2022/misc/caustics/caustics.mjs +0 -387
- package/esm2022/misc/decal/decal.mjs +0 -187
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
- package/esm2022/misc/example/example.mjs +0 -160
- package/esm2022/misc/fbo/fbo.mjs +0 -47
- package/esm2022/misc/html/html-wrapper.mjs +0 -478
- package/esm2022/misc/html/html.mjs +0 -304
- package/esm2022/misc/sampler/sampler.mjs +0 -142
- package/esm2022/misc/shadow/shadow.mjs +0 -111
- package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
- package/esm2022/misc/trail/trail.mjs +0 -209
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
- package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
- package/esm2022/modifiers/index.mjs +0 -2
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
- package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
- package/esm2022/performances/index.mjs +0 -8
- package/esm2022/performances/instances/instances.mjs +0 -220
- package/esm2022/performances/instances/position-mesh.mjs +0 -52
- package/esm2022/performances/points/points-input.mjs +0 -64
- package/esm2022/performances/points/points.mjs +0 -326
- package/esm2022/performances/points/position-point.mjs +0 -54
- package/esm2022/performances/segments/segment-object.mjs +0 -9
- package/esm2022/performances/segments/segments.mjs +0 -182
- package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
- package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
- package/esm2022/staging/backdrop/backdrop.mjs +0 -77
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
- package/esm2022/staging/bounds/bounds.mjs +0 -308
- package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
- package/esm2022/staging/center/center.mjs +0 -165
- package/esm2022/staging/cloud/cloud.mjs +0 -158
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
- package/esm2022/staging/environment/assets.mjs +0 -13
- package/esm2022/staging/environment/environment-cube.mjs +0 -47
- package/esm2022/staging/environment/environment-ground.mjs +0 -41
- package/esm2022/staging/environment/environment-input.mjs +0 -119
- package/esm2022/staging/environment/environment-map.mjs +0 -53
- package/esm2022/staging/environment/environment-portal.mjs +0 -113
- package/esm2022/staging/environment/environment.mjs +0 -61
- package/esm2022/staging/environment/utils.mjs +0 -106
- package/esm2022/staging/float/float.mjs +0 -94
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
- package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
- package/esm2022/staging/sky/sky.mjs +0 -119
- package/esm2022/staging/sparkles/sparkles.mjs +0 -164
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
- package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
- package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
- package/esm2022/staging/spot-light/spot-light.mjs +0 -81
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
- package/esm2022/staging/stage/stage.mjs +0 -389
- package/esm2022/staging/stars/stars.mjs +0 -147
- package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
- package/esm2022/staging/wireframe/wireframe.mjs +0 -228
- package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
- package/esm2022/utils/content/content.mjs +0 -15
- package/esm2022/utils/index.mjs +0 -2
- package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
- package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
- package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
- package/fesm2022/angular-three-soba-performances.mjs +0 -956
- package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
- package/fesm2022/angular-three-soba-utils.mjs +0 -22
- package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
- package/gizmos/README.md +0 -3
- package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
- package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
- package/gizmos/index.d.ts +0 -3
- package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
- package/loaders/loader/loader.d.ts +0 -33
- package/loaders/progress/progress.d.ts +0 -9
- package/loaders/texture-loader/texture-loader.d.ts +0 -7
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
- package/materials/point-material/point-material.d.ts +0 -24
- package/misc/animations/animations.d.ts +0 -15
- package/misc/caustics/caustics.d.ts +0 -87
- package/misc/decal/decal.d.ts +0 -49
- package/misc/depth-buffer/depth-buffer.d.ts +0 -9
- package/misc/example/example.d.ts +0 -81
- package/misc/fbo/fbo.d.ts +0 -17
- package/misc/html/html-wrapper.d.ts +0 -559
- package/misc/html/html.d.ts +0 -214
- package/misc/sampler/sampler.d.ts +0 -67
- package/misc/shadow/shadow.d.ts +0 -37
- package/misc/stats-gl/stats-gl.d.ts +0 -24
- package/misc/trail/trail.d.ts +0 -57
- package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
- package/misc/trail-texture/trail-texture.d.ts +0 -50
- package/modifiers/README.md +0 -3
- package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
- package/modifiers/index.d.ts +0 -1
- package/performances/README.md +0 -3
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
- package/performances/adaptive-events/adaptive-events.d.ts +0 -9
- package/performances/index.d.ts +0 -7
- package/performances/instances/instances.d.ts +0 -79
- package/performances/instances/position-mesh.d.ts +0 -10
- package/performances/points/points-input.d.ts +0 -32
- package/performances/points/points.d.ts +0 -92
- package/performances/points/position-point.d.ts +0 -11
- package/performances/segments/segment-object.d.ts +0 -7
- package/performances/segments/segments.d.ts +0 -124
- package/shaders/blur-pass/blur-pass.d.ts +0 -23
- package/shaders/caustics/caustics-material.d.ts +0 -4
- package/shaders/caustics/caustics-projection-material.d.ts +0 -4
- package/shaders/convolution-material/convolution-material.d.ts +0 -7
- package/shaders/discard-material/discard-material.d.ts +0 -3
- package/shaders/grid-material/grid-material.d.ts +0 -37
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
- package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
- package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
- package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
- package/shaders/shader-material/shader-material.d.ts +0 -6
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
- package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
- package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
- package/shaders/star-field-material/star-field-material.d.ts +0 -13
- package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
- package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
- package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
- package/staging/backdrop/backdrop.d.ts +0 -30
- package/staging/bb-anchor/bb-anchor.d.ts +0 -27
- package/staging/bounds/bounds.d.ts +0 -134
- package/staging/camera-shake/camera-shake.d.ts +0 -43
- package/staging/center/center.d.ts +0 -70
- package/staging/cloud/cloud.d.ts +0 -51
- package/staging/contact-shadows/contact-shadows.d.ts +0 -70
- package/staging/environment/assets.d.ts +0 -13
- package/staging/environment/environment-cube.d.ts +0 -15
- package/staging/environment/environment-ground.d.ts +0 -13
- package/staging/environment/environment-input.d.ts +0 -68
- package/staging/environment/environment-map.d.ts +0 -16
- package/staging/environment/environment-portal.d.ts +0 -18
- package/staging/environment/environment.d.ts +0 -8
- package/staging/environment/utils.d.ts +0 -7
- package/staging/float/float.d.ts +0 -31
- package/staging/matcap-texture/matcap-texture.d.ts +0 -13
- package/staging/normal-texture/normal-texture.d.ts +0 -16
- package/staging/sky/sky.d.ts +0 -48
- package/staging/sparkles/sparkles.d.ts +0 -63
- package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/shadow-mesh.d.ts +0 -37
- package/staging/spot-light/spot-light-input.d.ts +0 -38
- package/staging/spot-light/spot-light.d.ts +0 -39
- package/staging/spot-light/volumetric-mesh.d.ts +0 -24
- package/staging/stage/stage.d.ts +0 -130
- package/staging/stars/stars.d.ts +0 -45
- package/staging/wireframe/wireframe-input.d.ts +0 -65
- package/staging/wireframe/wireframe.d.ts +0 -28
- package/utils/README.md +0 -3
- package/utils/content/content.d.ts +0 -8
- package/utils/index.d.ts +0 -1
- /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, DestroyRef, afterNextRender, computed, inject, input, output, } from '@angular/core';
|
|
3
|
+
import { NgtArgs, injectStore, omit, pick } from 'angular-three';
|
|
4
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
5
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
6
|
+
// @ts-expect-error - no type def
|
|
7
|
+
import { Text, preloadFont } from 'troika-three-text';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
const defaultOptions = {
|
|
10
|
+
sdfGlyphSize: 64,
|
|
11
|
+
anchorX: 'center',
|
|
12
|
+
anchorY: 'middle',
|
|
13
|
+
fontSize: 1,
|
|
14
|
+
};
|
|
15
|
+
export class NgtsText {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.text = input.required();
|
|
18
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
19
|
+
this.parameters = omit(this.options, ['font', 'fontSize', 'sdfGlyphSize', 'anchorX', 'anchorY', 'characters']);
|
|
20
|
+
this.synced = output();
|
|
21
|
+
this.autoEffect = injectAutoEffect();
|
|
22
|
+
this.store = injectStore();
|
|
23
|
+
this.invalidate = this.store.select('invalidate');
|
|
24
|
+
this.characters = pick(this.options, 'characters');
|
|
25
|
+
this.font = pick(this.options, 'font');
|
|
26
|
+
this.anchorX = pick(this.options, 'anchorX');
|
|
27
|
+
this.anchorY = pick(this.options, 'anchorY');
|
|
28
|
+
this.sdfGlyphSize = pick(this.options, 'sdfGlyphSize');
|
|
29
|
+
this.fontSize = pick(this.options, 'fontSize');
|
|
30
|
+
this.troikaMesh = computed(() => new Text(), { equal: Object.is });
|
|
31
|
+
this.args = computed(() => [this.troikaMesh()]);
|
|
32
|
+
inject(DestroyRef).onDestroy(() => {
|
|
33
|
+
this.troikaMesh().dispose();
|
|
34
|
+
});
|
|
35
|
+
// NOTE: this could be just effect but autoEffect is used for consistency
|
|
36
|
+
this.autoEffect(() => {
|
|
37
|
+
const [font, characters, invalidate] = [this.font(), this.characters(), this.invalidate()];
|
|
38
|
+
if (font) {
|
|
39
|
+
preloadFont({ font, characters }, () => invalidate());
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
afterNextRender(() => {
|
|
43
|
+
this.autoEffect(() => {
|
|
44
|
+
const [invalidate, text] = [this.invalidate(), this.text(), this.options()];
|
|
45
|
+
this.troikaMesh().sync(() => {
|
|
46
|
+
invalidate();
|
|
47
|
+
this.synced.emit(this.troikaMesh());
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsText, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: NgtsText, isStandalone: true, selector: "ngts-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { synced: "synced" }, ngImport: i0, template: `
|
|
54
|
+
<ngt-primitive
|
|
55
|
+
*args="args()"
|
|
56
|
+
[text]="text()"
|
|
57
|
+
[font]="font()"
|
|
58
|
+
[anchorX]="anchorX()"
|
|
59
|
+
[anchorY]="anchorY()"
|
|
60
|
+
[sdfGlyphSize]="sdfGlyphSize()"
|
|
61
|
+
[fontSize]="fontSize()"
|
|
62
|
+
[parameters]="parameters()"
|
|
63
|
+
>
|
|
64
|
+
<ng-content />
|
|
65
|
+
</ngt-primitive>
|
|
66
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsText, decorators: [{
|
|
69
|
+
type: Component,
|
|
70
|
+
args: [{
|
|
71
|
+
selector: 'ngts-text',
|
|
72
|
+
standalone: true,
|
|
73
|
+
template: `
|
|
74
|
+
<ngt-primitive
|
|
75
|
+
*args="args()"
|
|
76
|
+
[text]="text()"
|
|
77
|
+
[font]="font()"
|
|
78
|
+
[anchorX]="anchorX()"
|
|
79
|
+
[anchorY]="anchorY()"
|
|
80
|
+
[sdfGlyphSize]="sdfGlyphSize()"
|
|
81
|
+
[fontSize]="fontSize()"
|
|
82
|
+
[parameters]="parameters()"
|
|
83
|
+
>
|
|
84
|
+
<ng-content />
|
|
85
|
+
</ngt-primitive>
|
|
86
|
+
`,
|
|
87
|
+
imports: [NgtArgs, NgTemplateOutlet],
|
|
88
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
89
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
90
|
+
}]
|
|
91
|
+
}], ctorParameters: () => [] });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFXLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFtQ3RELE1BQU0sY0FBYyxHQUFvQjtJQUN2QyxZQUFZLEVBQUUsRUFBRTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsQ0FBQztDQUNYLENBQUM7QUF1QkYsTUFBTSxPQUFPLFFBQVE7SUFzQnBCO1FBckJBLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDaEMsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUs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LEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHREZXN0cm95UmVmLFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHRvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0TWVzaCwgaW5qZWN0U3RvcmUsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IENvbG9yUmVwcmVzZW50YXRpb24gfSBmcm9tICd0aHJlZSc7XG4vLyBAdHMtZXhwZWN0LWVycm9yIC0gbm8gdHlwZSBkZWZcbmltcG9ydCB7IFRleHQsIHByZWxvYWRGb250IH0gZnJvbSAndHJvaWthLXRocmVlLXRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNUZXh0T3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0TWVzaD4ge1xuXHRjaGFyYWN0ZXJzPzogc3RyaW5nO1xuXHRjb2xvcj86IENvbG9yUmVwcmVzZW50YXRpb247XG5cdC8qKiBGb250IHNpemUsIGRlZmF1bHQ6IDEgKi9cblx0Zm9udFNpemU6IG51bWJlcjtcblx0Zm9udFdlaWdodD86IG51bWJlciB8IHN0cmluZztcblx0Zm9udFN0eWxlPzogJ2l0YWxpYycgfCAnbm9ybWFsJztcblx0bWF4V2lkdGg/OiBudW1iZXI7XG5cdGxpbmVIZWlnaHQ/OiBudW1iZXI7XG5cdGxldHRlclNwYWNpbmc/OiBudW1iZXI7XG5cdHRleHRBbGlnbj86ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJyB8ICdqdXN0aWZ5Jztcblx0Zm9udD86IHN0cmluZztcblx0YW5jaG9yWDogbnVtYmVyIHwgJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuXHRhbmNob3JZOiBudW1iZXIgfCAndG9wJyB8ICd0b3AtYmFzZWxpbmUnIHwgJ21pZGRsZScgfCAnYm90dG9tLWJhc2VsaW5lJyB8ICdib3R0b20nO1xuXHRjbGlwUmVjdD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXHRkZXB0aE9mZnNldD86IG51bWJlcjtcblx0ZGlyZWN0aW9uPzogJ2F1dG8nIHwgJ2x0cicgfCAncnRsJztcblx0b3ZlcmZsb3dXcmFwPzogJ25vcm1hbCcgfCAnYnJlYWstd29yZCc7XG5cdHdoaXRlU3BhY2U/OiAnbm9ybWFsJyB8ICdvdmVyZmxvd1dyYXAnIHwgJ25vd3JhcCc7XG5cdG91dGxpbmVXaWR0aD86IG51bWJlciB8IHN0cmluZztcblx0b3V0bGluZU9mZnNldFg/OiBudW1iZXIgfCBzdHJpbmc7XG5cdG91dGxpbmVPZmZzZXRZPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRvdXRsaW5lQmx1cj86IG51bWJlciB8IHN0cmluZztcblx0b3V0bGluZUNvbG9yPzogQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0b3V0bGluZU9wYWNpdHk/OiBudW1iZXI7XG5cdHN0cm9rZVdpZHRoPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRzdHJva2VDb2xvcj86IENvbG9yUmVwcmVzZW50YXRpb247XG5cdHN0cm9rZU9wYWNpdHk/OiBudW1iZXI7XG5cdGZpbGxPcGFjaXR5PzogbnVtYmVyO1xuXHRzZGZHbHlwaFNpemU6IG51bWJlcjtcblx0ZGVidWdTREY/OiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1RleHRPcHRpb25zID0ge1xuXHRzZGZHbHlwaFNpemU6IDY0LFxuXHRhbmNob3JYOiAnY2VudGVyJyxcblx0YW5jaG9yWTogJ21pZGRsZScsXG5cdGZvbnRTaXplOiAxLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy10ZXh0Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZVxuXHRcdFx0KmFyZ3M9XCJhcmdzKClcIlxuXHRcdFx0W3RleHRdPVwidGV4dCgpXCJcblx0XHRcdFtmb250XT1cImZvbnQoKVwiXG5cdFx0XHRbYW5jaG9yWF09XCJhbmNob3JYKClcIlxuXHRcdFx0W2FuY2hvclldPVwiYW5jaG9yWSgpXCJcblx0XHRcdFtzZGZHbHlwaFNpemVdPVwic2RmR2x5cGhTaXplKClcIlxuXHRcdFx0W2ZvbnRTaXplXT1cImZvbnRTaXplKClcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHQ+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5nVGVtcGxhdGVPdXRsZXRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzVGV4dCB7XG5cdHRleHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2ZvbnQnLCAnZm9udFNpemUnLCAnc2RmR2x5cGhTaXplJywgJ2FuY2hvclgnLCAnYW5jaG9yWScsICdjaGFyYWN0ZXJzJ10pO1xuXG5cdHN5bmNlZCA9IG91dHB1dDxUZXh0PigpO1xuXG5cdHByaXZhdGUgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cblx0cHJpdmF0ZSBjaGFyYWN0ZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdjaGFyYWN0ZXJzJyk7XG5cblx0Zm9udCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZm9udCcpO1xuXHRhbmNob3JYID0gcGljayh0aGlzLm9wdGlvbnMsICdhbmNob3JYJyk7XG5cdGFuY2hvclkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuY2hvclknKTtcblx0c2RmR2x5cGhTaXplID0gcGljayh0aGlzLm9wdGlvbnMsICdzZGZHbHlwaFNpemUnKTtcblx0Zm9udFNpemUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZvbnRTaXplJyk7XG5cblx0dHJvaWthTWVzaCA9IGNvbXB1dGVkKCgpID0+IG5ldyBUZXh0KCksIHsgZXF1YWw6IE9iamVjdC5pcyB9KTtcblx0YXJncyA9IGNvbXB1dGVkKCgpID0+IFt0aGlzLnRyb2lrYU1lc2goKV0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0dGhpcy50cm9pa2FNZXNoKCkuZGlzcG9zZSgpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gTk9URTogdGhpcyBjb3VsZCBiZSBqdXN0IGVmZmVjdCBidXQgYXV0b0VmZmVjdCBpcyB1c2VkIGZvciBjb25zaXN0ZW5jeVxuXHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbZm9udCwgY2hhcmFjdGVycywgaW52YWxpZGF0ZV0gPSBbdGhpcy5mb250KCksIHRoaXMuY2hhcmFjdGVycygpLCB0aGlzLmludmFsaWRhdGUoKV07XG5cdFx0XHRpZiAoZm9udCkge1xuXHRcdFx0XHRwcmVsb2FkRm9udCh7IGZvbnQsIGNoYXJhY3RlcnMgfSwgKCkgPT4gaW52YWxpZGF0ZSgpKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbaW52YWxpZGF0ZSwgdGV4dF0gPSBbdGhpcy5pbnZhbGlkYXRlKCksIHRoaXMudGV4dCgpLCB0aGlzLm9wdGlvbnMoKV07XG5cdFx0XHRcdHRoaXMudHJvaWthTWVzaCgpLnN5bmMoKCkgPT4ge1xuXHRcdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0XHR0aGlzLnN5bmNlZC5lbWl0KHRoaXMudHJvaWthTWVzaCgpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './lib/camera-content';
|
|
2
|
+
export * from './lib/cube-camera';
|
|
3
|
+
export * from './lib/orthographic-camera';
|
|
4
|
+
export * from './lib/perspective-camera';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY2FtZXJhcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbWVyYS1jb250ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1YmUtY2FtZXJhJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29ydGhvZ3JhcGhpYy1jYW1lcmEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVyc3BlY3RpdmUtY2FtZXJhJztcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class NgtsCameraContent {
|
|
4
|
+
static ngTemplateContextGuard(_, ctx) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsCameraContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: NgtsCameraContent, isStandalone: true, selector: "ng-template[cameraContent]", ngImport: i0 }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsCameraContent, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{ standalone: true, selector: 'ng-template[cameraContent]' }]
|
|
13
|
+
}] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLWNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY2FtZXJhcy9zcmMvbGliL2NhbWVyYS1jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBSWxELE1BQU0sT0FBTyxpQkFBaUI7SUFDN0IsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQW9CLEVBQUUsR0FBWTtRQUMvRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7OEdBSFcsaUJBQWlCO2tHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0dXJlIH0gZnJvbSAndGhyZWUnO1xuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtjYW1lcmFDb250ZW50XScgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ2FtZXJhQ29udGVudCB7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF86IE5ndHNDYW1lcmFDb250ZW50LCBjdHg6IHVua25vd24pOiBjdHggaXMgeyAkaW1wbGljaXQ6IFNpZ25hbDxUZXh0dXJlPiB9IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, input, TemplateRef, untracked, viewChild, } from '@angular/core';
|
|
3
|
+
import { extend, injectBeforeRender, injectStore, merge, NgtArgs, omit, pick } from 'angular-three';
|
|
4
|
+
import { assertInjector } from 'ngxtension/assert-injector';
|
|
5
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
6
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
7
|
+
import { CubeCamera, Group, HalfFloatType, WebGLCubeRenderTarget } from 'three';
|
|
8
|
+
import { NgtsCameraContent } from './camera-content';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export function injectCubeCamera(options, { injector } = {}) {
|
|
11
|
+
return assertInjector(injectCubeCamera, injector, () => {
|
|
12
|
+
const autoEffect = injectAutoEffect();
|
|
13
|
+
const store = injectStore();
|
|
14
|
+
const gl = store.select('gl');
|
|
15
|
+
const scene = store.select('scene');
|
|
16
|
+
// backfill the options with default values
|
|
17
|
+
const mergedOptions = merge(options, { resolution: 256, near: 0.1, far: 1000 }, 'backfill');
|
|
18
|
+
const resolution = pick(mergedOptions, 'resolution');
|
|
19
|
+
const near = pick(mergedOptions, 'near');
|
|
20
|
+
const far = pick(mergedOptions, 'far');
|
|
21
|
+
const fbo = computed(() => {
|
|
22
|
+
const fbo = new WebGLCubeRenderTarget(resolution());
|
|
23
|
+
fbo.texture.type = HalfFloatType;
|
|
24
|
+
return fbo;
|
|
25
|
+
});
|
|
26
|
+
autoEffect(() => {
|
|
27
|
+
const _fbo = fbo();
|
|
28
|
+
return () => {
|
|
29
|
+
_fbo.dispose();
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
const camera = computed(() => {
|
|
33
|
+
return new CubeCamera(near(), far(), fbo());
|
|
34
|
+
});
|
|
35
|
+
const update = computed(() => {
|
|
36
|
+
const [_scene, _gl, _camera, { envMap, fog }] = [scene(), gl(), camera(), untracked(mergedOptions)];
|
|
37
|
+
let originalFog;
|
|
38
|
+
let originalBackground;
|
|
39
|
+
return () => {
|
|
40
|
+
originalFog = _scene.fog;
|
|
41
|
+
originalBackground = _scene.background;
|
|
42
|
+
_scene.background = envMap || originalBackground;
|
|
43
|
+
_scene.fog = fog || originalFog;
|
|
44
|
+
_camera.update(_gl, _scene);
|
|
45
|
+
_scene.fog = originalFog;
|
|
46
|
+
_scene.background = originalBackground;
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
return { fbo, camera, update };
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const defaultOptions = {
|
|
53
|
+
frames: Infinity,
|
|
54
|
+
resolution: 256,
|
|
55
|
+
near: 0.1,
|
|
56
|
+
far: 1000,
|
|
57
|
+
};
|
|
58
|
+
export class NgtsCubeCamera {
|
|
59
|
+
constructor() {
|
|
60
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
61
|
+
this.parameters = omit(this.options, ['fog', 'near', 'far', 'envMap', 'resolution', 'frames']);
|
|
62
|
+
this.cubeCamera = injectCubeCamera(pick(this.options, ['near', 'far', 'envMap', 'fog', 'resolution']));
|
|
63
|
+
this.camera = this.cubeCamera.camera;
|
|
64
|
+
this.texture = pick(this.cubeCamera.fbo, 'texture');
|
|
65
|
+
this.group = viewChild.required('group');
|
|
66
|
+
this.cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });
|
|
67
|
+
extend({ Group });
|
|
68
|
+
let count = 0;
|
|
69
|
+
injectBeforeRender(() => {
|
|
70
|
+
const group = this.group().nativeElement;
|
|
71
|
+
if (!group)
|
|
72
|
+
return;
|
|
73
|
+
const frames = this.options().frames;
|
|
74
|
+
const update = this.cubeCamera.update();
|
|
75
|
+
if (frames === Infinity || count < frames) {
|
|
76
|
+
group.visible = false;
|
|
77
|
+
update();
|
|
78
|
+
group.visible = true;
|
|
79
|
+
count++;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsCubeCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.1.0", type: NgtsCubeCamera, isStandalone: true, selector: "ngts-cube-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "group", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
85
|
+
<ngt-group [parameters]="parameters()">
|
|
86
|
+
<ngt-primitive *args="[camera()]" />
|
|
87
|
+
<ngt-group #group>
|
|
88
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
|
|
89
|
+
</ngt-group>
|
|
90
|
+
</ngt-group>
|
|
91
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
92
|
+
}
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsCubeCamera, decorators: [{
|
|
94
|
+
type: Component,
|
|
95
|
+
args: [{
|
|
96
|
+
selector: 'ngts-cube-camera',
|
|
97
|
+
standalone: true,
|
|
98
|
+
template: `
|
|
99
|
+
<ngt-group [parameters]="parameters()">
|
|
100
|
+
<ngt-primitive *args="[camera()]" />
|
|
101
|
+
<ngt-group #group>
|
|
102
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
|
|
103
|
+
</ngt-group>
|
|
104
|
+
</ngt-group>
|
|
105
|
+
`,
|
|
106
|
+
imports: [NgtArgs, NgTemplateOutlet],
|
|
107
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
108
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
109
|
+
}]
|
|
110
|
+
}], ctorParameters: () => [] });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViZS1jYW1lcmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY2FtZXJhcy9zcmMvbGliL2N1YmUtY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osc0JBQXNCLEVBR3RCLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFZLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixLQUFLLEVBQUUsYUFBYSxFQUFXLHFCQUFxQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWVyRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBZ0MsRUFBRSxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUM1RyxPQUFPLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3RELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDNUIsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FB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QUM7Z0JBQ3JCLEtBQUssRUFBRSxDQUFDO1lBQ1QsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E3QlcsY0FBYztrR0FBZCxjQUFjLGlRQVVHLGlCQUFpQiwyQkFBVSxXQUFXLDZKQXRCekQ7Ozs7Ozs7RUFPVCw0REFDUyxPQUFPLGdGQUFFLGdCQUFnQjs7MkZBSXZCLGNBQWM7a0JBZjFCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7OztFQU9UO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RWxlbWVudFJlZixcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBtZXJnZSwgTmd0QXJncywgTmd0R3JvdXAsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ3ViZUNhbWVyYSwgRm9nLCBGb2dFeHAyLCBHcm91cCwgSGFsZkZsb2F0VHlwZSwgVGV4dHVyZSwgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0IH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuL2NhbWVyYS1jb250ZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBDdWJlQ2FtZXJhT3B0aW9ucyB7XG5cdC8qKiBSZXNvbHV0aW9uIG9mIHRoZSBGQk8sIDI1NiAqL1xuXHRyZXNvbHV0aW9uPzogbnVtYmVyO1xuXHQvKiogQ2FtZXJhIG5lYXIsIDAuMSAqL1xuXHRuZWFyPzogbnVtYmVyO1xuXHQvKiogQ2FtZXJhIGZhciwgMTAwMCAqL1xuXHRmYXI/OiBudW1iZXI7XG5cdC8qKiBDdXN0b20gZW52aXJvbm1lbnQgbWFwIHRoYXQgaXMgdGVtcG9yYXJpbHkgc2V0IGFzIHRoZSBzY2VuZXMgYmFja2dyb3VuZCAqL1xuXHRlbnZNYXA/OiBUZXh0dXJlO1xuXHQvKiogQ3VzdG9tIGZvZyB0aGF0IGlzIHRlbXBvcmFyaWx5IHNldCBhcyB0aGUgc2NlbmVzIGZvZyAqL1xuXHRmb2c/OiBGb2cgfCBGb2dFeHAyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q3ViZUNhbWVyYShvcHRpb25zOiAoKSA9PiBDdWJlQ2FtZXJhT3B0aW9ucywgeyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9KSB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3RDdWJlQ2FtZXJhLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IGdsID0gc3RvcmUuc2VsZWN0KCdnbCcpO1xuXHRcdGNvbnN0IHNjZW5lID0gc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXG5cdFx0Ly8gYmFja2ZpbGwgdGhlIG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlc1xuXHRcdGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBtZXJnZShvcHRpb25zLCB7IHJlc29sdXRpb246IDI1NiwgbmVhcjogMC4xLCBmYXI6IDEwMDAgfSwgJ2JhY2tmaWxsJyk7XG5cdFx0Y29uc3QgcmVzb2x1dGlvbiA9IHBpY2sobWVyZ2VkT3B0aW9ucywgJ3Jlc29sdXRpb24nKTtcblx0XHRjb25zdCBuZWFyID0gcGljayhtZXJnZWRPcHRpb25zLCAnbmVhcicpO1xuXHRcdGNvbnN0IGZhciA9IHBpY2sobWVyZ2VkT3B0aW9ucywgJ2ZhcicpO1xuXG5cdFx0Y29uc3QgZmJvID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZmJvID0gbmV3IFdlYkdMQ3ViZVJlbmRlclRhcmdldChyZXNvbHV0aW9uKCkpO1xuXHRcdFx0ZmJvLnRleHR1cmUudHlwZSA9IEhhbGZGbG9hdFR5cGU7XG5cdFx0XHRyZXR1cm4gZmJvO1xuXHRcdH0pO1xuXG5cdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBfZmJvID0gZmJvKCk7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRfZmJvLmRpc3Bvc2UoKTtcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0XHRjb25zdCBjYW1lcmEgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IEN1YmVDYW1lcmEobmVhcigpISwgZmFyKCkhLCBmYm8oKSk7XG5cdFx0fSk7XG5cblx0XHRjb25zdCB1cGRhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbX3NjZW5lLCBfZ2wsIF9jYW1lcmEsIHsgZW52TWFwLCBmb2cgfV0gPSBbc2NlbmUoKSwgZ2woKSwgY2FtZXJhKCksIHVudHJhY2tlZChtZXJnZWRPcHRpb25zKV07XG5cdFx0XHRsZXQgb3JpZ2luYWxGb2c6IEZvZyB8IEZvZ0V4cDI7XG5cdFx0XHRsZXQgb3JpZ2luYWxCYWNrZ3JvdW5kOiBUZXh0dXJlO1xuXG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRvcmlnaW5hbEZvZyA9IF9zY2VuZS5mb2cgYXMgRm9nIHwgRm9nRXhwMjtcblx0XHRcdFx0b3JpZ2luYWxCYWNrZ3JvdW5kID0gX3NjZW5lLmJhY2tncm91bmQgYXMgVGV4dHVyZTtcblx0XHRcdFx0X3NjZW5lLmJhY2tncm91bmQgPSBlbnZNYXAgfHwgb3JpZ2luYWxCYWNrZ3JvdW5kO1xuXHRcdFx0XHRfc2NlbmUuZm9nID0gZm9nIHx8IG9yaWdpbmFsRm9nO1xuXHRcdFx0XHRfY2FtZXJhLnVwZGF0ZShfZ2wsIF9zY2VuZSk7XG5cdFx0XHRcdF9zY2VuZS5mb2cgPSBvcmlnaW5hbEZvZztcblx0XHRcdFx0X3NjZW5lLmJhY2tncm91bmQgPSBvcmlnaW5hbEJhY2tncm91bmQ7XG5cdFx0XHR9O1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHsgZmJvLCBjYW1lcmEsIHVwZGF0ZSB9O1xuXHR9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzQ3ViZUNhbWVyYU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndEdyb3VwPiwgQ3ViZUNhbWVyYU9wdGlvbnMge1xuXHRmcmFtZXM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNDdWJlQ2FtZXJhT3B0aW9ucyA9IHtcblx0ZnJhbWVzOiBJbmZpbml0eSxcblx0cmVzb2x1dGlvbjogMjU2LFxuXHRuZWFyOiAwLjEsXG5cdGZhcjogMTAwMCxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtY3ViZS1jYW1lcmEnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltjYW1lcmEoKV1cIiAvPlxuXHRcdFx0PG5ndC1ncm91cCAjZ3JvdXA+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FtZXJhQ29udGVudCgpID8/IG51bGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRleHR1cmUgfVwiIC8+XG5cdFx0XHQ8L25ndC1ncm91cD5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5nVGVtcGxhdGVPdXRsZXRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ3ViZUNhbWVyYSB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2ZvZycsICduZWFyJywgJ2ZhcicsICdlbnZNYXAnLCAncmVzb2x1dGlvbicsICdmcmFtZXMnXSk7XG5cblx0cHJpdmF0ZSBjdWJlQ2FtZXJhID0gaW5qZWN0Q3ViZUNhbWVyYShwaWNrKHRoaXMub3B0aW9ucywgWyduZWFyJywgJ2ZhcicsICdlbnZNYXAnLCAnZm9nJywgJ3Jlc29sdXRpb24nXSkpO1xuXG5cdGNhbWVyYSA9IHRoaXMuY3ViZUNhbWVyYS5jYW1lcmE7XG5cdHRleHR1cmUgPSBwaWNrKHRoaXMuY3ViZUNhbWVyYS5mYm8sICd0ZXh0dXJlJyk7XG5cblx0Z3JvdXAgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXHRjYW1lcmFDb250ZW50ID0gY29udGVudENoaWxkKE5ndHNDYW1lcmFDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXG5cdFx0bGV0IGNvdW50ID0gMDtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghZ3JvdXApIHJldHVybjtcblxuXHRcdFx0Y29uc3QgZnJhbWVzID0gdGhpcy5vcHRpb25zKCkuZnJhbWVzO1xuXHRcdFx0Y29uc3QgdXBkYXRlID0gdGhpcy5jdWJlQ2FtZXJhLnVwZGF0ZSgpO1xuXHRcdFx0aWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpIHtcblx0XHRcdFx0Z3JvdXAudmlzaWJsZSA9IGZhbHNlO1xuXHRcdFx0XHR1cGRhdGUoKTtcblx0XHRcdFx0Z3JvdXAudmlzaWJsZSA9IHRydWU7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, TemplateRef, afterNextRender, computed, contentChild, input, untracked, viewChild, } from '@angular/core';
|
|
3
|
+
import { extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';
|
|
4
|
+
import { injectFBO } from 'angular-three-soba/misc';
|
|
5
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
6
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
7
|
+
import { Group, OrthographicCamera } from 'three';
|
|
8
|
+
import { NgtsCameraContent } from './camera-content';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
extend({ OrthographicCamera, Group });
|
|
11
|
+
const defaultOptions = {
|
|
12
|
+
frames: Infinity,
|
|
13
|
+
resolution: 256,
|
|
14
|
+
makeDefault: false,
|
|
15
|
+
manual: false,
|
|
16
|
+
};
|
|
17
|
+
export class NgtsOrthographicCamera {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
20
|
+
this.parameters = omit(this.options, [
|
|
21
|
+
'envMap',
|
|
22
|
+
'makeDefault',
|
|
23
|
+
'manual',
|
|
24
|
+
'frames',
|
|
25
|
+
'resolution',
|
|
26
|
+
'left',
|
|
27
|
+
'top',
|
|
28
|
+
'bottom',
|
|
29
|
+
'right',
|
|
30
|
+
]);
|
|
31
|
+
this.content = contentChild(TemplateRef);
|
|
32
|
+
this.cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });
|
|
33
|
+
this.cameraRef = viewChild.required('camera');
|
|
34
|
+
this.groupRef = viewChild.required('group');
|
|
35
|
+
this.autoEffect = injectAutoEffect();
|
|
36
|
+
this.store = injectStore();
|
|
37
|
+
this.camera = this.store.select('camera');
|
|
38
|
+
this.size = this.store.select('size');
|
|
39
|
+
this.left = computed(() => this.options().left ?? this.size().width / -2);
|
|
40
|
+
this.right = computed(() => this.options().right ?? this.size().width / 2);
|
|
41
|
+
this.top = computed(() => this.options().top ?? this.size().height / 2);
|
|
42
|
+
this.bottom = computed(() => this.options().bottom ?? this.size().height / -2);
|
|
43
|
+
this.manual = pick(this.options, 'manual');
|
|
44
|
+
this.makeDefault = pick(this.options, 'makeDefault');
|
|
45
|
+
this.resolution = pick(this.options, 'resolution');
|
|
46
|
+
this.fbo = injectFBO(() => ({ width: this.resolution() }));
|
|
47
|
+
this.texture = pick(this.fbo, 'texture');
|
|
48
|
+
afterNextRender(() => {
|
|
49
|
+
this.autoEffect(() => {
|
|
50
|
+
if (!this.manual()) {
|
|
51
|
+
this.cameraRef().nativeElement.updateProjectionMatrix();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
this.autoEffect(() => {
|
|
55
|
+
if (this.makeDefault()) {
|
|
56
|
+
const oldCam = untracked(this.camera);
|
|
57
|
+
this.store.update({ camera: this.cameraRef().nativeElement });
|
|
58
|
+
return () => this.store.update(() => ({ camera: oldCam }));
|
|
59
|
+
}
|
|
60
|
+
return;
|
|
61
|
+
});
|
|
62
|
+
this.cameraRef().nativeElement.updateProjectionMatrix();
|
|
63
|
+
});
|
|
64
|
+
let count = 0;
|
|
65
|
+
let oldEnvMap = null;
|
|
66
|
+
injectBeforeRender(({ gl, scene }) => {
|
|
67
|
+
const [{ frames, envMap }, group, camera, fbo] = [
|
|
68
|
+
this.options(),
|
|
69
|
+
this.groupRef().nativeElement,
|
|
70
|
+
this.cameraRef().nativeElement,
|
|
71
|
+
this.fbo(),
|
|
72
|
+
];
|
|
73
|
+
if (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {
|
|
74
|
+
group.visible = false;
|
|
75
|
+
gl.setRenderTarget(fbo);
|
|
76
|
+
oldEnvMap = scene.background;
|
|
77
|
+
if (envMap)
|
|
78
|
+
scene.background = envMap;
|
|
79
|
+
gl.render(scene, camera);
|
|
80
|
+
scene.background = oldEnvMap;
|
|
81
|
+
gl.setRenderTarget(null);
|
|
82
|
+
group.visible = true;
|
|
83
|
+
count++;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsOrthographicCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.1.0", type: NgtsOrthographicCamera, isStandalone: true, selector: "ngts-orthographic-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
89
|
+
<ngt-orthographic-camera
|
|
90
|
+
#camera
|
|
91
|
+
[left]="left()"
|
|
92
|
+
[right]="right()"
|
|
93
|
+
[top]="top()"
|
|
94
|
+
[bottom]="bottom()"
|
|
95
|
+
[parameters]="parameters()"
|
|
96
|
+
>
|
|
97
|
+
<ng-container [ngTemplateOutlet]="content() ?? null" />
|
|
98
|
+
</ngt-orthographic-camera>
|
|
99
|
+
|
|
100
|
+
<ngt-group #group>
|
|
101
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
|
|
102
|
+
</ngt-group>
|
|
103
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
104
|
+
}
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsOrthographicCamera, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{
|
|
108
|
+
selector: 'ngts-orthographic-camera',
|
|
109
|
+
standalone: true,
|
|
110
|
+
template: `
|
|
111
|
+
<ngt-orthographic-camera
|
|
112
|
+
#camera
|
|
113
|
+
[left]="left()"
|
|
114
|
+
[right]="right()"
|
|
115
|
+
[top]="top()"
|
|
116
|
+
[bottom]="bottom()"
|
|
117
|
+
[parameters]="parameters()"
|
|
118
|
+
>
|
|
119
|
+
<ng-container [ngTemplateOutlet]="content() ?? null" />
|
|
120
|
+
</ngt-orthographic-camera>
|
|
121
|
+
|
|
122
|
+
<ngt-group #group>
|
|
123
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
|
|
124
|
+
</ngt-group>
|
|
125
|
+
`,
|
|
126
|
+
imports: [NgTemplateOutlet],
|
|
127
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
128
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
129
|
+
}]
|
|
130
|
+
}], ctorParameters: () => [] });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3J0aG9ncmFwaGljLWNhbWVyYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9jYW1lcmFzL3NyYy9saWIvb3J0aG9ncmFwaGljLWNhbWVyYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLGVBQWUsRUFDZixRQUFRLEVBQ1IsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFTLEtBQUssRUFBRSxrQkFBa0IsRUFBVyxNQUFNLE9BQU8sQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFckQsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQWV0QyxNQUFNLGNBQWMsR0FBa0M7SUFDckQsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLEdBQUc7SUFDZixXQUFXLEVBQUUsS0FBSztJQUNsQixNQUFNLEVBQUUsS0FBSztDQUNiLENBQUM7QUF5QkYsTUFBTSxPQUFPLHNCQUFzQjtJQXFDbEM7UUFwQ0EsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxT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QztnQkFDN0IsSUFBSSxNQUFNO29CQUFFLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO2dCQUN0QyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekIsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7Z0JBQzdCLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsQ0FBQztZQUNULENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBOUVXLHNCQUFzQjtrR0FBdEIsc0JBQXNCLG1RQWNYLFdBQVcsZ0dBQ0wsaUJBQWlCLDJCQUFVLFdBQVcsc1FBbkN6RDs7Ozs7Ozs7Ozs7Ozs7O0VBZVQsNERBQ1MsZ0JBQWdCOzsyRkFJZCxzQkFBc0I7a0JBdkJsQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztFQWVUO29CQUNELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRFbGVtZW50UmVmLFxuXHRUZW1wbGF0ZVJlZixcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRjb21wdXRlZCxcblx0Y29udGVudENoaWxkLFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0T3J0aG9ncmFwaGljQ2FtZXJhLCBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEZCTyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9taXNjJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IENvbG9yLCBHcm91cCwgT3J0aG9ncmFwaGljQ2FtZXJhLCBUZXh0dXJlIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuL2NhbWVyYS1jb250ZW50JztcblxuZXh0ZW5kKHsgT3J0aG9ncmFwaGljQ2FtZXJhLCBHcm91cCB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzT3J0aG9ncmFwaGljQ2FtZXJhT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0T3J0aG9ncmFwaGljQ2FtZXJhPiB7XG5cdC8qKiBSZWdpc3RlcnMgdGhlIGNhbWVyYSBhcyB0aGUgc3lzdGVtIGRlZmF1bHQsIGZpYmVyIHdpbGwgc3RhcnQgcmVuZGVyaW5nIHdpdGggaXQgKi9cblx0bWFrZURlZmF1bHQ/OiBib29sZWFuO1xuXHQvKiogTWFraW5nIGl0IG1hbnVhbCB3aWxsIHN0b3AgcmVzcG9uc2l2ZW5lc3MgYW5kIHlvdSBoYXZlIHRvIGNhbGN1bGF0ZSBhc3BlY3QgcmF0aW8geW91cnNlbGYuICovXG5cdG1hbnVhbD86IGJvb2xlYW47XG5cdC8qKiBOdW1iZXIgb2YgZnJhbWVzIHRvIHJlbmRlciwgSW5maW5pdHkgKi9cblx0ZnJhbWVzOiBudW1iZXI7XG5cdC8qKiBSZXNvbHV0aW9uIG9mIHRoZSBGQk8sIDI1NiAqL1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCBlbnZpcm9ubWVudCBtYXAgZm9yIGZ1bmN0aW9uYWwgdXNlICovXG5cdGVudk1hcD86IFRleHR1cmU7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzT3J0aG9ncmFwaGljQ2FtZXJhT3B0aW9ucyA9IHtcblx0ZnJhbWVzOiBJbmZpbml0eSxcblx0cmVzb2x1dGlvbjogMjU2LFxuXHRtYWtlRGVmYXVsdDogZmFsc2UsXG5cdG1hbnVhbDogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLW9ydGhvZ3JhcGhpYy1jYW1lcmEnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtb3J0aG9ncmFwaGljLWNhbWVyYVxuXHRcdFx0I2NhbWVyYVxuXHRcdFx0W2xlZnRdPVwibGVmdCgpXCJcblx0XHRcdFtyaWdodF09XCJyaWdodCgpXCJcblx0XHRcdFt0b3BdPVwidG9wKClcIlxuXHRcdFx0W2JvdHRvbV09XCJib3R0b20oKVwiXG5cdFx0XHRbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIlxuXHRcdD5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudCgpID8/IG51bGxcIiAvPlxuXHRcdDwvbmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmE+XG5cblx0XHQ8bmd0LWdyb3VwICNncm91cD5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FtZXJhQ29udGVudCgpID8/IG51bGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRleHR1cmUgfVwiIC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c09ydGhvZ3JhcGhpY0NhbWVyYSB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J2Vudk1hcCcsXG5cdFx0J21ha2VEZWZhdWx0Jyxcblx0XHQnbWFudWFsJyxcblx0XHQnZnJhbWVzJyxcblx0XHQncmVzb2x1dGlvbicsXG5cdFx0J2xlZnQnLFxuXHRcdCd0b3AnLFxuXHRcdCdib3R0b20nLFxuXHRcdCdyaWdodCcsXG5cdF0pO1xuXG5cdGNvbnRlbnQgPSBjb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpO1xuXHRjYW1lcmFDb250ZW50ID0gY29udGVudENoaWxkKE5ndHNDYW1lcmFDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pO1xuXG5cdGNhbWVyYVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE9ydGhvZ3JhcGhpY0NhbWVyYT4+KCdjYW1lcmEnKTtcblx0Z3JvdXBSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXG5cdHByaXZhdGUgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cblx0cHJpdmF0ZSBjYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXG5cdGxlZnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS5sZWZ0ID8/IHRoaXMuc2l6ZSgpLndpZHRoIC8gLTIpO1xuXHRyaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnJpZ2h0ID8/IHRoaXMuc2l6ZSgpLndpZHRoIC8gMik7XG5cdHRvcCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnRvcCA/PyB0aGlzLnNpemUoKS5oZWlnaHQgLyAyKTtcblx0Ym90dG9tID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuYm90dG9tID8/IHRoaXMuc2l6ZSgpLmhlaWdodCAvIC0yKTtcblxuXHRwcml2YXRlIG1hbnVhbCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWFudWFsJyk7XG5cdHByaXZhdGUgbWFrZURlZmF1bHQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21ha2VEZWZhdWx0Jyk7XG5cdHByaXZhdGUgcmVzb2x1dGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVzb2x1dGlvbicpO1xuXHRwcml2YXRlIGZibyA9IGluamVjdEZCTygoKSA9PiAoeyB3aWR0aDogdGhpcy5yZXNvbHV0aW9uKCkgfSkpO1xuXHR0ZXh0dXJlID0gcGljayh0aGlzLmZibywgJ3RleHR1cmUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5hdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLm1hbnVhbCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLm1ha2VEZWZhdWx0KCkpIHtcblx0XHRcdFx0XHRjb25zdCBvbGRDYW0gPSB1bnRyYWNrZWQodGhpcy5jYW1lcmEpO1xuXHRcdFx0XHRcdHRoaXMuc3RvcmUudXBkYXRlKHsgY2FtZXJhOiB0aGlzLmNhbWVyYVJlZigpLm5hdGl2ZUVsZW1lbnQgfSk7XG5cdFx0XHRcdFx0cmV0dXJuICgpID0+IHRoaXMuc3RvcmUudXBkYXRlKCgpID0+ICh7IGNhbWVyYTogb2xkQ2FtIH0pKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHR9KTtcblxuXHRcdGxldCBjb3VudCA9IDA7XG5cdFx0bGV0IG9sZEVudk1hcDogQ29sb3IgfCBUZXh0dXJlIHwgbnVsbCA9IG51bGw7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGdsLCBzY2VuZSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbeyBmcmFtZXMsIGVudk1hcCB9LCBncm91cCwgY2FtZXJhLCBmYm9dID0gW1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuY2FtZXJhUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5mYm8oKSxcblx0XHRcdF07XG5cdFx0XHRpZiAodGhpcy5jYW1lcmFDb250ZW50KCkgJiYgZ3JvdXAgJiYgY2FtZXJhICYmIGZibyAmJiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBjb3VudCA8IGZyYW1lcykpIHtcblx0XHRcdFx0Z3JvdXAudmlzaWJsZSA9IGZhbHNlO1xuXHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQoZmJvKTtcblx0XHRcdFx0b2xkRW52TWFwID0gc2NlbmUuYmFja2dyb3VuZDtcblx0XHRcdFx0aWYgKGVudk1hcCkgc2NlbmUuYmFja2dyb3VuZCA9IGVudk1hcDtcblx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRzY2VuZS5iYWNrZ3JvdW5kID0gb2xkRW52TWFwO1xuXHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0XHRcdGdyb3VwLnZpc2libGUgPSB0cnVlO1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, TemplateRef, afterNextRender, contentChild, input, untracked, viewChild, } from '@angular/core';
|
|
3
|
+
import { extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';
|
|
4
|
+
import { injectFBO } from 'angular-three-soba/misc';
|
|
5
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
6
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
7
|
+
import { Group, PerspectiveCamera } from 'three';
|
|
8
|
+
import { NgtsCameraContent } from './camera-content';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
extend({ PerspectiveCamera, Group });
|
|
11
|
+
const defaultOptions = {
|
|
12
|
+
frames: Infinity,
|
|
13
|
+
resolution: 256,
|
|
14
|
+
makeDefault: false,
|
|
15
|
+
manual: false,
|
|
16
|
+
};
|
|
17
|
+
export class NgtsPerspectiveCamera {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
20
|
+
this.parameters = omit(this.options, ['envMap', 'makeDefault', 'manual', 'frames', 'resolution']);
|
|
21
|
+
this.content = contentChild(TemplateRef);
|
|
22
|
+
this.cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });
|
|
23
|
+
this.cameraRef = viewChild.required('camera');
|
|
24
|
+
this.groupRef = viewChild.required('group');
|
|
25
|
+
this.autoEffect = injectAutoEffect();
|
|
26
|
+
this.store = injectStore();
|
|
27
|
+
this.camera = this.store.select('camera');
|
|
28
|
+
this.size = this.store.select('size');
|
|
29
|
+
this.manual = pick(this.options, 'manual');
|
|
30
|
+
this.makeDefault = pick(this.options, 'makeDefault');
|
|
31
|
+
this.resolution = pick(this.options, 'resolution');
|
|
32
|
+
this.fbo = injectFBO(() => ({ width: this.resolution() }));
|
|
33
|
+
this.texture = pick(this.fbo, 'texture');
|
|
34
|
+
afterNextRender(() => {
|
|
35
|
+
this.autoEffect(() => {
|
|
36
|
+
if (!this.manual()) {
|
|
37
|
+
this.cameraRef().nativeElement.aspect = this.size().width / this.size().height;
|
|
38
|
+
this.cameraRef().nativeElement.updateProjectionMatrix();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
this.autoEffect(() => {
|
|
42
|
+
if (this.makeDefault()) {
|
|
43
|
+
const oldCam = untracked(this.camera);
|
|
44
|
+
this.store.update({ camera: this.cameraRef().nativeElement });
|
|
45
|
+
return () => this.store.update(() => ({ camera: oldCam }));
|
|
46
|
+
}
|
|
47
|
+
return;
|
|
48
|
+
});
|
|
49
|
+
this.cameraRef().nativeElement.updateProjectionMatrix();
|
|
50
|
+
});
|
|
51
|
+
let count = 0;
|
|
52
|
+
let oldEnvMap = null;
|
|
53
|
+
injectBeforeRender(({ gl, scene }) => {
|
|
54
|
+
const [{ frames, envMap }, group, camera, fbo] = [
|
|
55
|
+
this.options(),
|
|
56
|
+
this.groupRef().nativeElement,
|
|
57
|
+
this.cameraRef().nativeElement,
|
|
58
|
+
this.fbo(),
|
|
59
|
+
];
|
|
60
|
+
if (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {
|
|
61
|
+
group.visible = false;
|
|
62
|
+
gl.setRenderTarget(fbo);
|
|
63
|
+
oldEnvMap = scene.background;
|
|
64
|
+
if (envMap)
|
|
65
|
+
scene.background = envMap;
|
|
66
|
+
gl.render(scene, camera);
|
|
67
|
+
scene.background = oldEnvMap;
|
|
68
|
+
gl.setRenderTarget(null);
|
|
69
|
+
group.visible = true;
|
|
70
|
+
count++;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsPerspectiveCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.1.0", type: NgtsPerspectiveCamera, isStandalone: true, selector: "ngts-perspective-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
76
|
+
<ngt-perspective-camera #camera [parameters]="parameters()">
|
|
77
|
+
<ng-container [ngTemplateOutlet]="content() ?? null" />
|
|
78
|
+
</ngt-perspective-camera>
|
|
79
|
+
|
|
80
|
+
<ngt-group #group>
|
|
81
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
|
|
82
|
+
</ngt-group>
|
|
83
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsPerspectiveCamera, decorators: [{
|
|
86
|
+
type: Component,
|
|
87
|
+
args: [{
|
|
88
|
+
selector: 'ngts-perspective-camera',
|
|
89
|
+
standalone: true,
|
|
90
|
+
template: `
|
|
91
|
+
<ngt-perspective-camera #camera [parameters]="parameters()">
|
|
92
|
+
<ng-container [ngTemplateOutlet]="content() ?? null" />
|
|
93
|
+
</ngt-perspective-camera>
|
|
94
|
+
|
|
95
|
+
<ngt-group #group>
|
|
96
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
|
|
97
|
+
</ngt-group>
|
|
98
|
+
`,
|
|
99
|
+
imports: [NgTemplateOutlet],
|
|
100
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
101
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
102
|
+
}]
|
|
103
|
+
}], ctorParameters: () => [] });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc3BlY3RpdmUtY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2NhbWVyYXMvc3JjL2xpYi9wZXJzcGVjdGl2ZS1jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFTLEtBQUssRUFBRSxpQkFBaUIsRUFBVyxNQUFNLE9BQU8sQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFckQsTUFBTSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQWVyQyxNQUFNLGNBQWMsR0FBaUM7SUFDcEQsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLEdBQUc7SUFDZixXQUFXLEVBQUUsS0FBSztJQUNsQixNQUFNLEVBQUUsS0FBSztDQUNiLENBQUM7QUFrQkYsTUFBTSxPQUFPLHFCQUFxQjtJQXNCakM7UUFyQkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FB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VUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7RUFRVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RWxlbWVudFJlZixcblx0VGVtcGxhdGVSZWYsXG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Y29udGVudENoaWxkLFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0UGVyc3BlY3RpdmVDYW1lcmEsIGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3RTdG9yZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0RkJPIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ29sb3IsIEdyb3VwLCBQZXJzcGVjdGl2ZUNhbWVyYSwgVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNDYW1lcmFDb250ZW50IH0gZnJvbSAnLi9jYW1lcmEtY29udGVudCc7XG5cbmV4dGVuZCh7IFBlcnNwZWN0aXZlQ2FtZXJhLCBHcm91cCB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzUGVyc3BlY3RpdmVDYW1lcmFPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RQZXJzcGVjdGl2ZUNhbWVyYT4ge1xuXHQvKiogUmVnaXN0ZXJzIHRoZSBjYW1lcmEgYXMgdGhlIHN5c3RlbSBkZWZhdWx0LCBmaWJlciB3aWxsIHN0YXJ0IHJlbmRlcmluZyB3aXRoIGl0ICovXG5cdG1ha2VEZWZhdWx0PzogYm9vbGVhbjtcblx0LyoqIE1ha2luZyBpdCBtYW51YWwgd2lsbCBzdG9wIHJlc3BvbnNpdmVuZXNzIGFuZCB5b3UgaGF2ZSB0byBjYWxjdWxhdGUgYXNwZWN0IHJhdGlvIHlvdXJzZWxmLiAqL1xuXHRtYW51YWw/OiBib29sZWFuO1xuXHQvKiogTnVtYmVyIG9mIGZyYW1lcyB0byByZW5kZXIsIEluZmluaXR5ICovXG5cdGZyYW1lczogbnVtYmVyO1xuXHQvKiogUmVzb2x1dGlvbiBvZiB0aGUgRkJPLCAyNTYgKi9cblx0cmVzb2x1dGlvbjogbnVtYmVyO1xuXHQvKiogT3B0aW9uYWwgZW52aXJvbm1lbnQgbWFwIGZvciBmdW5jdGlvbmFsIHVzZSAqL1xuXHRlbnZNYXA/OiBUZXh0dXJlO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1BlcnNwZWN0aXZlQ2FtZXJhT3B0aW9ucyA9IHtcblx0ZnJhbWVzOiBJbmZpbml0eSxcblx0cmVzb2x1dGlvbjogMjU2LFxuXHRtYWtlRGVmYXVsdDogZmFsc2UsXG5cdG1hbnVhbDogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXBlcnNwZWN0aXZlLWNhbWVyYScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wZXJzcGVjdGl2ZS1jYW1lcmEgI2NhbWVyYSBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudCgpID8/IG51bGxcIiAvPlxuXHRcdDwvbmd0LXBlcnNwZWN0aXZlLWNhbWVyYT5cblxuXHRcdDxuZ3QtZ3JvdXAgI2dyb3VwPlxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW1lcmFDb250ZW50KCkgPz8gbnVsbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdGV4dHVyZSB9XCIgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUGVyc3BlY3RpdmVDYW1lcmEge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydlbnZNYXAnLCAnbWFrZURlZmF1bHQnLCAnbWFudWFsJywgJ2ZyYW1lcycsICdyZXNvbHV0aW9uJ10pO1xuXG5cdGNvbnRlbnQgPSBjb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpO1xuXHRjYW1lcmFDb250ZW50ID0gY29udGVudENoaWxkKE5ndHNDYW1lcmFDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pO1xuXG5cdGNhbWVyYVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFBlcnNwZWN0aXZlQ2FtZXJhPj4oJ2NhbWVyYScpO1xuXHRncm91cFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dyb3VwJyk7XG5cblx0cHJpdmF0ZSBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblxuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRwcml2YXRlIG1hbnVhbCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWFudWFsJyk7XG5cdHByaXZhdGUgbWFrZURlZmF1bHQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21ha2VEZWZhdWx0Jyk7XG5cdHByaXZhdGUgcmVzb2x1dGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVzb2x1dGlvbicpO1xuXHRwcml2YXRlIGZibyA9IGluamVjdEZCTygoKSA9PiAoeyB3aWR0aDogdGhpcy5yZXNvbHV0aW9uKCkgfSkpO1xuXHR0ZXh0dXJlID0gcGljayh0aGlzLmZibywgJ3RleHR1cmUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5hdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLm1hbnVhbCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50LmFzcGVjdCA9IHRoaXMuc2l6ZSgpLndpZHRoIC8gdGhpcy5zaXplKCkuaGVpZ2h0O1xuXHRcdFx0XHRcdHRoaXMuY2FtZXJhUmVmKCkubmF0aXZlRWxlbWVudC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5tYWtlRGVmYXVsdCgpKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb2xkQ2FtID0gdW50cmFja2VkKHRoaXMuY2FtZXJhKTtcblx0XHRcdFx0XHR0aGlzLnN0b3JlLnVwZGF0ZSh7IGNhbWVyYTogdGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50IH0pO1xuXHRcdFx0XHRcdHJldHVybiAoKSA9PiB0aGlzLnN0b3JlLnVwZGF0ZSgoKSA9PiAoeyBjYW1lcmE6IG9sZENhbSB9KSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuY2FtZXJhUmVmKCkubmF0aXZlRWxlbWVudC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0fSk7XG5cblx0XHRsZXQgY291bnQgPSAwO1xuXHRcdGxldCBvbGRFbnZNYXA6IENvbG9yIHwgVGV4dHVyZSB8IG51bGwgPSBudWxsO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBnbCwgc2NlbmUgfSkgPT4ge1xuXHRcdFx0Y29uc3QgW3sgZnJhbWVzLCBlbnZNYXAgfSwgZ3JvdXAsIGNhbWVyYSwgZmJvXSA9IFtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmNhbWVyYVJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuZmJvKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKHRoaXMuY2FtZXJhQ29udGVudCgpICYmIGdyb3VwICYmIGNhbWVyYSAmJiBmYm8gJiYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpKSB7XG5cdFx0XHRcdGdyb3VwLnZpc2libGUgPSBmYWxzZTtcblx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KGZibyk7XG5cdFx0XHRcdG9sZEVudk1hcCA9IHNjZW5lLmJhY2tncm91bmQ7XG5cdFx0XHRcdGlmIChlbnZNYXApIHNjZW5lLmJhY2tncm91bmQgPSBlbnZNYXA7XG5cdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0c2NlbmUuYmFja2dyb3VuZCA9IG9sZEVudk1hcDtcblx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuXHRcdFx0XHRncm91cC52aXNpYmxlID0gdHJ1ZTtcblx0XHRcdFx0Y291bnQrKztcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
|
|
1
|
+
export * from './lib/camera-controls';
|
|
2
|
+
export * from './lib/orbit-controls';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY29udHJvbHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbWVyYS1jb250cm9scyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vcmJpdC1jb250cm9scyc7XG4iXX0=
|