angular-three-soba 1.14.1 → 2.0.0-beta.10
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 +2 -2
- package/abstractions/billboard/billboard.d.ts +28 -0
- package/abstractions/detailed/detailed.d.ts +26 -0
- package/abstractions/edges/edges.d.ts +34 -0
- package/abstractions/grid/grid.d.ts +50 -0
- package/abstractions/index.d.ts +6 -11
- package/abstractions/text/text.d.ts +82 -0
- package/abstractions/text-3d/text-3d.d.ts +81 -0
- package/cameras/{lib/camera → camera}/camera-content.d.ts +2 -2
- package/cameras/camera/camera.d.ts +26 -0
- package/cameras/cube-camera/cube-camera.d.ts +69 -0
- package/cameras/index.d.ts +4 -4
- package/cameras/orthographic-camera/orthographic-camera.d.ts +37 -0
- package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +10 -1
- package/controls/index.d.ts +1 -1
- package/controls/orbit-controls/orbit-controls.d.ts +54 -0
- package/esm2022/abstractions/angular-three-soba-abstractions.mjs +1 -1
- package/esm2022/abstractions/billboard/billboard.mjs +74 -0
- package/esm2022/abstractions/detailed/detailed.mjs +64 -0
- package/esm2022/abstractions/edges/edges.mjs +88 -0
- package/esm2022/abstractions/grid/grid.mjs +180 -0
- package/esm2022/abstractions/index.mjs +7 -12
- package/esm2022/abstractions/text/text.mjs +274 -0
- package/esm2022/abstractions/text-3d/text-3d.mjs +165 -0
- package/esm2022/angular-three-soba.mjs +1 -1
- package/esm2022/cameras/angular-three-soba-cameras.mjs +1 -1
- package/esm2022/cameras/camera/camera-content.mjs +20 -0
- package/esm2022/cameras/camera/camera.mjs +77 -0
- package/esm2022/cameras/cube-camera/cube-camera.mjs +161 -0
- package/esm2022/cameras/index.mjs +5 -5
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +102 -0
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +46 -0
- package/esm2022/controls/angular-three-soba-controls.mjs +1 -1
- package/esm2022/controls/index.mjs +2 -2
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +181 -0
- package/esm2022/index.mjs +1 -1
- package/esm2022/loaders/angular-three-soba-loaders.mjs +1 -1
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +30 -0
- package/esm2022/loaders/index.mjs +5 -6
- package/esm2022/loaders/loader/loader.mjs +138 -0
- package/esm2022/loaders/progress/progress.mjs +45 -0
- package/esm2022/loaders/texture-loader/texture-loader.mjs +28 -0
- package/esm2022/materials/angular-three-soba-materials.mjs +1 -1
- package/esm2022/materials/index.mjs +7 -6
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +82 -0
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +367 -0
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +171 -0
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +278 -0
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +68 -0
- package/esm2022/materials/point-material/point-material.mjs +46 -0
- package/esm2022/misc/angular-three-soba-misc.mjs +1 -1
- package/esm2022/misc/animations/animations.mjs +59 -0
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
- package/esm2022/misc/caustics/caustics.mjs +387 -0
- package/esm2022/misc/decal/decal.mjs +187 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +44 -0
- package/esm2022/misc/example/example.mjs +160 -0
- package/esm2022/misc/fbo/fbo.mjs +47 -0
- package/esm2022/misc/html/html-wrapper.mjs +478 -0
- package/esm2022/misc/html/html.mjs +304 -0
- package/esm2022/misc/index.mjs +14 -5
- package/esm2022/misc/sampler/sampler.mjs +142 -0
- package/esm2022/misc/shadow/shadow.mjs +111 -0
- package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
- package/esm2022/misc/trail/trail.mjs +209 -0
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
- package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
- package/esm2022/modifiers/index.mjs +2 -0
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
- package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
- package/esm2022/performances/index.mjs +6 -0
- package/esm2022/performances/points/points-input.mjs +64 -0
- package/esm2022/performances/points/points.mjs +329 -0
- package/esm2022/performances/points/position-point.mjs +54 -0
- package/esm2022/performances/segments/segment-object.mjs +9 -0
- package/esm2022/performances/segments/segments.mjs +182 -0
- package/esm2022/shaders/angular-three-soba-shaders.mjs +1 -1
- package/esm2022/shaders/blur-pass/blur-pass.mjs +61 -0
- package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
- package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
- package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
- package/esm2022/shaders/index.mjs +18 -15
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +56 -0
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +223 -0
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +170 -0
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +268 -0
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +37 -0
- package/esm2022/shaders/shader-material/shader-material.mjs +34 -0
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +25 -0
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +33 -0
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
- package/esm2022/shaders/star-field-material/star-field-material.mjs +33 -0
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +267 -0
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +206 -0
- package/esm2022/staging/angular-three-soba-staging.mjs +1 -1
- package/esm2022/staging/backdrop/backdrop.mjs +77 -0
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
- package/esm2022/staging/bounds/bounds.mjs +308 -0
- package/esm2022/staging/camera-shake/camera-shake.mjs +123 -0
- package/esm2022/staging/center/center.mjs +163 -0
- package/esm2022/staging/cloud/cloud.mjs +158 -0
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +246 -0
- package/esm2022/staging/environment/assets.mjs +13 -0
- package/esm2022/staging/environment/environment-cube.mjs +47 -0
- package/esm2022/staging/environment/environment-ground.mjs +41 -0
- package/esm2022/staging/environment/environment-input.mjs +119 -0
- package/esm2022/staging/environment/environment-map.mjs +53 -0
- package/esm2022/staging/environment/environment-portal.mjs +113 -0
- package/esm2022/staging/environment/environment.mjs +61 -0
- package/esm2022/staging/environment/utils.mjs +105 -0
- package/esm2022/staging/float/float.mjs +94 -0
- package/esm2022/staging/index.mjs +22 -18
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
- package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
- package/esm2022/staging/sky/sky.mjs +119 -0
- package/esm2022/staging/sparkles/sparkles.mjs +164 -0
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
- package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +84 -0
- package/esm2022/staging/spot-light/spot-light.mjs +81 -0
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +98 -0
- package/esm2022/staging/stage/stage.mjs +388 -0
- package/esm2022/staging/stars/stars.mjs +147 -0
- package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
- package/esm2022/staging/wireframe/wireframe.mjs +224 -0
- package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
- package/esm2022/utils/content/content.mjs +15 -0
- package/esm2022/utils/index.mjs +2 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +668 -1882
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +279 -232
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +104 -69
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +177 -164
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +630 -482
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +2248 -122
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
- package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
- package/fesm2022/angular-three-soba-performances.mjs +697 -0
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
- package/fesm2022/angular-three-soba-shaders.mjs +554 -209
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +3231 -2852
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-utils.mjs +22 -0
- package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
- package/fesm2022/angular-three-soba.mjs.map +1 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +10 -0
- package/loaders/index.d.ts +4 -5
- package/loaders/loader/loader.d.ts +33 -0
- package/loaders/progress/progress.d.ts +9 -0
- package/loaders/texture-loader/texture-loader.d.ts +7 -0
- package/materials/index.d.ts +6 -5
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +40 -0
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +99 -0
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +62 -0
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +107 -0
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +29 -0
- package/materials/point-material/point-material.d.ts +24 -0
- package/metadata.json +1 -0
- package/misc/animations/animations.d.ts +15 -0
- package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
- package/misc/caustics/caustics.d.ts +87 -0
- package/misc/decal/decal.d.ts +49 -0
- package/misc/depth-buffer/depth-buffer.d.ts +9 -0
- package/misc/example/example.d.ts +81 -0
- package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
- package/misc/html/html-wrapper.d.ts +559 -0
- package/misc/html/html.d.ts +214 -0
- package/misc/index.d.ts +13 -4
- package/misc/sampler/sampler.d.ts +67 -0
- package/misc/shadow/shadow.d.ts +37 -0
- package/misc/stats-gl/stats-gl.d.ts +24 -0
- package/misc/trail/trail.d.ts +57 -0
- package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
- package/misc/trail-texture/trail-texture.d.ts +50 -0
- package/modifiers/README.md +3 -0
- package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
- package/modifiers/index.d.ts +1 -0
- package/package.json +43 -32
- package/performances/README.md +3 -0
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
- package/{performance/lib/adaptive → performances/adaptive-events}/adaptive-events.d.ts +5 -6
- package/performances/index.d.ts +5 -0
- package/performances/points/points-input.d.ts +32 -0
- package/performances/points/points.d.ts +92 -0
- package/performances/points/position-point.d.ts +11 -0
- package/performances/segments/segment-object.d.ts +7 -0
- package/performances/segments/segments.d.ts +124 -0
- package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
- package/shaders/grid-material/grid-material.d.ts +37 -0
- package/shaders/index.d.ts +17 -14
- package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +147 -2
- package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +1 -1
- package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
- package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +2 -2
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +19 -0
- package/shaders/sparkles-material/sparkles-material.d.ts +17 -0
- package/shaders/spot-light-material/spot-light-material.d.ts +13 -0
- package/shaders/star-field-material/star-field-material.d.ts +13 -0
- package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +146 -0
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
- package/staging/accumulative-shadows/randomized-lights.d.ts +90 -0
- package/staging/backdrop/backdrop.d.ts +30 -0
- package/staging/bb-anchor/bb-anchor.d.ts +27 -0
- package/staging/bounds/bounds.d.ts +134 -0
- package/staging/camera-shake/camera-shake.d.ts +43 -0
- package/staging/center/center.d.ts +70 -0
- package/staging/cloud/cloud.d.ts +51 -0
- package/staging/contact-shadows/contact-shadows.d.ts +70 -0
- package/staging/{lib/environment → environment}/assets.d.ts +9 -9
- package/staging/environment/environment-cube.d.ts +15 -0
- package/staging/environment/environment-ground.d.ts +13 -0
- package/staging/environment/environment-input.d.ts +68 -0
- package/staging/environment/environment-map.d.ts +16 -0
- package/staging/environment/environment-portal.d.ts +18 -0
- package/staging/{lib/environment → environment}/environment.d.ts +2 -6
- package/staging/environment/utils.d.ts +7 -0
- package/staging/float/float.d.ts +31 -0
- package/staging/index.d.ts +21 -17
- package/staging/matcap-texture/matcap-texture.d.ts +13 -0
- package/staging/normal-texture/normal-texture.d.ts +16 -0
- package/staging/sky/sky.d.ts +48 -0
- package/staging/sparkles/sparkles.d.ts +63 -0
- package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
- package/staging/spot-light/shadow-mesh.d.ts +37 -0
- package/staging/spot-light/spot-light-input.d.ts +38 -0
- package/staging/spot-light/spot-light.d.ts +39 -0
- package/staging/spot-light/volumetric-mesh.d.ts +24 -0
- package/staging/stage/stage.d.ts +130 -0
- package/staging/stars/stars.d.ts +45 -0
- package/staging/wireframe/wireframe-input.d.ts +65 -0
- package/staging/wireframe/wireframe.d.ts +28 -0
- package/utils/README.md +3 -0
- package/utils/content/content.d.ts +8 -0
- package/utils/index.d.ts +1 -0
- package/web-types.json +1 -0
- package/abstractions/lib/billboard/billboard.d.ts +0 -14
- package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +0 -15
- package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +0 -15
- package/abstractions/lib/edges/edges.d.ts +0 -18
- package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +0 -41
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -16
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -24
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -14
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -15
- package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -28
- package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -21
- package/abstractions/lib/line/line-input.d.ts +0 -19
- package/abstractions/lib/line/line.d.ts +0 -21
- package/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -19
- package/abstractions/lib/text/text.d.ts +0 -21
- package/abstractions/lib/text-3d/text-3d.d.ts +0 -39
- package/assets/default-spot-light-shadow.glsl +0 -10
- package/cameras/lib/camera/camera.d.ts +0 -19
- package/cameras/lib/cube-camera/cube-camera.d.ts +0 -27
- package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +0 -17
- package/controls/lib/orbit-controls/orbit-controls.d.ts +0 -27
- package/esm2022/abstractions/lib/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -120
- package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -99
- package/esm2022/abstractions/lib/edges/edges.mjs +0 -96
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -213
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -92
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -184
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -46
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -134
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -267
- package/esm2022/abstractions/lib/line/line-input.mjs +0 -76
- package/esm2022/abstractions/lib/line/line.mjs +0 -133
- package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/abstractions/lib/text/text.mjs +0 -115
- package/esm2022/abstractions/lib/text-3d/text-3d.mjs +0 -145
- package/esm2022/cameras/lib/camera/camera-content.mjs +0 -21
- package/esm2022/cameras/lib/camera/camera.mjs +0 -75
- package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +0 -131
- package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -93
- package/esm2022/cameras/lib/perspective-camera/perspective-camera.mjs +0 -47
- package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +0 -147
- package/esm2022/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +0 -10
- package/esm2022/loaders/lib/gltf-loader/gltf-loader.mjs +0 -32
- package/esm2022/loaders/lib/loader/loader.mjs +0 -134
- package/esm2022/loaders/lib/progress/progress.mjs +0 -39
- package/esm2022/loaders/lib/texture-loader/texture-loader.mjs +0 -19
- package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -75
- package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -328
- package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -158
- package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -238
- package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/misc/lib/animations/animations.mjs +0 -52
- package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +0 -26
- package/esm2022/misc/lib/depth-buffer/depth-buffer.mjs +0 -39
- package/esm2022/misc/lib/fbo/fbo.mjs +0 -39
- package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
- package/esm2022/performance/index.mjs +0 -5
- package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +0 -47
- package/esm2022/performance/lib/adaptive/adaptive-events.mjs +0 -37
- package/esm2022/performance/lib/detailed/detailed.mjs +0 -54
- package/esm2022/performance/lib/stats/stats.mjs +0 -80
- package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/lib/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -33
- package/esm2022/shaders/lib/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/lib/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -55
- package/esm2022/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -169
- package/esm2022/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/lib/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -33
- package/esm2022/shaders/lib/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/lib/star-field-material/star-field-material.mjs +0 -32
- package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -249
- package/esm2022/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -201
- package/esm2022/staging/lib/bounds/bounds.mjs +0 -284
- package/esm2022/staging/lib/camera-shake/camera-shake.mjs +0 -122
- package/esm2022/staging/lib/caustics/caustics.mjs +0 -364
- package/esm2022/staging/lib/center/center.mjs +0 -143
- package/esm2022/staging/lib/cloud/cloud.mjs +0 -160
- package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +0 -228
- package/esm2022/staging/lib/environment/assets.mjs +0 -13
- package/esm2022/staging/lib/environment/environment-cube.mjs +0 -41
- package/esm2022/staging/lib/environment/environment-ground.mjs +0 -67
- package/esm2022/staging/lib/environment/environment-inputs.mjs +0 -87
- package/esm2022/staging/lib/environment/environment-map.mjs +0 -39
- package/esm2022/staging/lib/environment/environment-portal.mjs +0 -111
- package/esm2022/staging/lib/environment/environment.mjs +0 -165
- package/esm2022/staging/lib/environment/utils.mjs +0 -70
- package/esm2022/staging/lib/float/float.mjs +0 -77
- package/esm2022/staging/lib/sky/sky.mjs +0 -109
- package/esm2022/staging/lib/sparkles/sparkles.mjs +0 -210
- package/esm2022/staging/lib/spot-light/common.mjs +0 -42
- package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +0 -51
- package/esm2022/staging/lib/spot-light/spot-light-input.mjs +0 -62
- package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -74
- package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -126
- package/esm2022/staging/lib/spot-light/spot-light-shadow.mjs +0 -63
- package/esm2022/staging/lib/spot-light/spot-light.mjs +0 -117
- package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +0 -86
- package/esm2022/staging/lib/stage/stage.mjs +0 -368
- package/esm2022/staging/lib/stars/stars.mjs +0 -140
- package/fesm2022/angular-three-soba-performance.mjs +0 -210
- package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
- package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +0 -3
- package/loaders/lib/gltf-loader/gltf-loader.d.ts +0 -8
- package/loaders/lib/loader/loader.d.ts +0 -26
- package/loaders/lib/progress/progress.d.ts +0 -16
- package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
- package/materials/lib/mesh-distort-material/mesh-distort-material.d.ts +0 -24
- package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +0 -41
- package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +0 -28
- package/materials/lib/mesh-transmission-material/mesh-transmission-material.d.ts +0 -46
- package/materials/lib/mesh-wobble-material/mesh-wobble-material.d.ts +0 -14
- package/misc/lib/animations/animations.d.ts +0 -13
- package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
- package/performance/README.md +0 -3
- package/performance/index.d.ts +0 -4
- package/performance/lib/adaptive/adaptive-dpr.d.ts +0 -11
- package/performance/lib/detailed/detailed.d.ts +0 -13
- package/performance/lib/stats/stats.d.ts +0 -15
- package/plugin/README.md +0 -11
- package/plugin/generators.json +0 -19
- package/plugin/package.json +0 -9
- package/plugin/src/generators/init/compat.d.ts +0 -2
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/init.d.ts +0 -4
- package/plugin/src/generators/init/init.js +0 -22
- package/plugin/src/generators/init/init.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -6
- package/plugin/src/index.d.ts +0 -1
- package/plugin/src/index.js +0 -6
- package/plugin/src/index.js.map +0 -1
- package/shaders/lib/soft-shadow-material/soft-shadow-material.d.ts +0 -10
- package/shaders/lib/spot-light-material/spot-light-material.d.ts +0 -4
- package/shaders/lib/star-field-material/star-field-material.d.ts +0 -3
- package/staging/lib/accumulative-shadows/accumulative-shadows.d.ts +0 -58
- package/staging/lib/accumulative-shadows/randomized-lights.d.ts +0 -42
- package/staging/lib/bounds/bounds.d.ts +0 -48
- package/staging/lib/camera-shake/camera-shake.d.ts +0 -28
- package/staging/lib/caustics/caustics.d.ts +0 -47
- package/staging/lib/center/center.d.ts +0 -40
- package/staging/lib/cloud/cloud.d.ts +0 -23
- package/staging/lib/contact-shadows/contact-shadows.d.ts +0 -29
- package/staging/lib/environment/environment-cube.d.ts +0 -11
- package/staging/lib/environment/environment-ground.d.ts +0 -9
- package/staging/lib/environment/environment-inputs.d.ts +0 -28
- package/staging/lib/environment/environment-map.d.ts +0 -10
- package/staging/lib/environment/environment-portal.d.ts +0 -15
- package/staging/lib/environment/utils.d.ts +0 -8
- package/staging/lib/float/float.d.ts +0 -16
- package/staging/lib/sky/sky.d.ts +0 -20
- package/staging/lib/sparkles/sparkles.d.ts +0 -29
- package/staging/lib/spot-light/common.d.ts +0 -3
- package/staging/lib/spot-light/shadow-mesh-input.d.ts +0 -14
- package/staging/lib/spot-light/spot-light-input.d.ts +0 -16
- package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +0 -14
- package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +0 -25
- package/staging/lib/spot-light/spot-light-shadow.d.ts +0 -6
- package/staging/lib/spot-light/spot-light.d.ts +0 -17
- package/staging/lib/spot-light/volumetric-mesh.d.ts +0 -15
- package/staging/lib/stage/stage.d.ts +0 -87
- package/staging/lib/stars/stars.d.ts +0 -20
- /package/shaders/{lib/caustics-material → caustics}/caustics-material.d.ts +0 -0
- /package/shaders/{lib/caustics-projection-material → caustics}/caustics-projection-material.d.ts +0 -0
- /package/shaders/{lib/convolution-material → convolution-material}/convolution-material.d.ts +0 -0
- /package/shaders/{lib/discard-material → discard-material}/discard-material.d.ts +0 -0
- /package/shaders/{lib/mesh-reflector-material → mesh-reflector-material}/mesh-reflector-material.d.ts +0 -0
- /package/shaders/{lib/mesh-refraction-material → mesh-refraction-material}/mesh-refraction-material.d.ts +0 -0
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { injectNgtDestroy, injectNgtLoader, injectNgtRef, is } from 'angular-three';
|
|
2
|
-
import { debounceTime, isObservable, map, of, takeUntil } from 'rxjs';
|
|
3
|
-
import { CubeReflectionMapping, CubeTextureLoader, EquirectangularReflectionMapping, LinearEncoding, sRGBEncoding, } from 'three';
|
|
4
|
-
import { RGBELoader } from 'three-stdlib';
|
|
5
|
-
import { ngtsEnvironmentPresetsObj } from './assets';
|
|
6
|
-
function resolveScene(scene) {
|
|
7
|
-
return is.ref(scene) ? scene.nativeElement : scene;
|
|
8
|
-
}
|
|
9
|
-
export function setEnvProps(background, scene, defaultScene, texture, blur = 0) {
|
|
10
|
-
const target = resolveScene(scene || defaultScene);
|
|
11
|
-
const oldbg = target.background;
|
|
12
|
-
const oldenv = target.environment;
|
|
13
|
-
const oldBlur = target.backgroundBlurriness || 0;
|
|
14
|
-
if (background !== 'only')
|
|
15
|
-
target.environment = texture;
|
|
16
|
-
if (background)
|
|
17
|
-
target.background = texture;
|
|
18
|
-
if (background && target.backgroundBlurriness !== undefined)
|
|
19
|
-
target.backgroundBlurriness = blur;
|
|
20
|
-
return () => {
|
|
21
|
-
if (background !== 'only')
|
|
22
|
-
target.environment = oldenv;
|
|
23
|
-
if (background)
|
|
24
|
-
target.background = oldbg;
|
|
25
|
-
if (background && target.backgroundBlurriness !== undefined)
|
|
26
|
-
target.backgroundBlurriness = oldBlur;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
const CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';
|
|
30
|
-
export function injectNgtsEnvironment(paramsFactory) {
|
|
31
|
-
let p = {
|
|
32
|
-
files: ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'],
|
|
33
|
-
path: '',
|
|
34
|
-
preset: undefined,
|
|
35
|
-
encoding: undefined,
|
|
36
|
-
};
|
|
37
|
-
const params = paramsFactory(p);
|
|
38
|
-
const params$ = isObservable(params) ? params : of(params);
|
|
39
|
-
const textureRef = injectNgtRef();
|
|
40
|
-
const { destroy$ } = injectNgtDestroy(() => {
|
|
41
|
-
textureRef.nativeElement?.dispose();
|
|
42
|
-
});
|
|
43
|
-
const loaderResult = injectNgtLoader((inputs) => (Array.isArray(inputs) ? CubeTextureLoader : RGBELoader), params$.pipe(debounceTime(0), map((data) => {
|
|
44
|
-
p = data;
|
|
45
|
-
return p;
|
|
46
|
-
}), map((data) => {
|
|
47
|
-
if (data.preset) {
|
|
48
|
-
if (!(data.preset in ngtsEnvironmentPresetsObj))
|
|
49
|
-
throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));
|
|
50
|
-
data.files = ngtsEnvironmentPresetsObj[data.preset];
|
|
51
|
-
data.path = CUBEMAP_ROOT;
|
|
52
|
-
}
|
|
53
|
-
return Array.isArray(data.files) ? [data.files] : data.files;
|
|
54
|
-
})), (loader) => {
|
|
55
|
-
if (p.path) {
|
|
56
|
-
loader.setPath(p.path);
|
|
57
|
-
}
|
|
58
|
-
if (p.extensions) {
|
|
59
|
-
p.extensions(loader);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
loaderResult.pipe(takeUntil(destroy$)).subscribe((results) => {
|
|
63
|
-
const texture = Array.isArray(p.files) ? results[0] : results;
|
|
64
|
-
texture.mapping = Array.isArray(p.files) ? CubeReflectionMapping : EquirectangularReflectionMapping;
|
|
65
|
-
texture.encoding = (p.encoding ?? Array.isArray(p.files)) ? sRGBEncoding : LinearEncoding;
|
|
66
|
-
textureRef.nativeElement = texture;
|
|
67
|
-
});
|
|
68
|
-
return textureRef;
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvZW52aXJvbm1lbnQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFDSCxxQkFBcUIsRUFFckIsaUJBQWlCLEVBQ2pCLGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2QsWUFBWSxHQUVmLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHckQsU0FBUyxZQUFZLENBQUMsS0FBNEM7SUFDOUQsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3ZCLFVBQTRCLEVBQzVCLEtBQXdELEVBQ3hELFlBQXlCLEVBQ3pCLE9BQXNCLEVBQ3RCLElBQUksR0FBRyxDQUFDO0lBRVIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNuRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixJQUFJLENBQUMs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QU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFO1lBQ2QsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtJQUNMLENBQUMsQ0FDSixDQUFDO0lBRUYsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN6RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFNLENBQUMsQ0FBQyxDQUFDLENBQUUsT0FBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztRQUNyRyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUEsQ0FBQyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFNLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFFekYsVUFBVSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0TG9hZGVyLCBpbmplY3ROZ3RSZWYsIGlzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGlzT2JzZXJ2YWJsZSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEN1YmVSZWZsZWN0aW9uTWFwcGluZyxcbiAgICBDdWJlVGV4dHVyZSxcbiAgICBDdWJlVGV4dHVyZUxvYWRlcixcbiAgICBFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZyxcbiAgICBMaW5lYXJFbmNvZGluZyxcbiAgICBzUkdCRW5jb2RpbmcsXG4gICAgVGV4dHVyZSxcbn0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUkdCRUxvYWRlciB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqIH0gZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50SW5wdXRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1pbnB1dHMnO1xuXG5mdW5jdGlvbiByZXNvbHZlU2NlbmUoc2NlbmU6IFRIUkVFLlNjZW5lIHwgRWxlbWVudFJlZjxUSFJFRS5TY2VuZT4pIHtcbiAgICByZXR1cm4gaXMucmVmKHNjZW5lKSA/IHNjZW5lLm5hdGl2ZUVsZW1lbnQgOiBzY2VuZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVudlByb3BzKFxuICAgIGJhY2tncm91bmQ6IGJvb2xlYW4gfCAnb25seScsXG4gICAgc2NlbmU6IFRIUkVFLlNjZW5lIHwgRWxlbWVudFJlZjxUSFJFRS5TY2VuZT4gfCB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFNjZW5lOiBUSFJFRS5TY2VuZSxcbiAgICB0ZXh0dXJlOiBUSFJFRS5UZXh0dXJlLFxuICAgIGJsdXIgPSAwXG4pIHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXNvbHZlU2NlbmUoc2NlbmUgfHwgZGVmYXVsdFNjZW5lKTtcbiAgICBjb25zdCBvbGRiZyA9IHRhcmdldC5iYWNrZ3JvdW5kO1xuICAgIGNvbnN0IG9sZGVudiA9IHRhcmdldC5lbnZpcm9ubWVudDtcbiAgICBjb25zdCBvbGRCbHVyID0gdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzIHx8IDA7XG5cbiAgICBpZiAoYmFja2dyb3VuZCAhPT0gJ29ubHknKSB0YXJnZXQuZW52aXJvbm1lbnQgPSB0ZXh0dXJlO1xuICAgIGlmIChiYWNrZ3JvdW5kKSB0YXJnZXQuYmFja2dyb3VuZCA9IHRleHR1cmU7XG4gICAgaWYgKGJhY2tncm91bmQgJiYgdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzICE9PSB1bmRlZmluZWQpIHRhcmdldC5iYWNrZ3JvdW5kQmx1cnJpbmVzcyA9IGJsdXI7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoYmFja2dyb3VuZCAhPT0gJ29ubHknKSB0YXJnZXQuZW52aXJvbm1lbnQgPSBvbGRlbnY7XG4gICAgICAgIGlmIChiYWNrZ3JvdW5kKSB0YXJnZXQuYmFja2dyb3VuZCA9IG9sZGJnO1xuICAgICAgICBpZiAoYmFja2dyb3VuZCAmJiB0YXJnZXQuYmFja2dyb3VuZEJsdXJyaW5lc3MgIT09IHVuZGVmaW5lZCkgdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzID0gb2xkQmx1cjtcbiAgICB9O1xufVxuXG50eXBlIE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtcyA9IFBhcnRpYWw8XG4gICAgUGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dHMsICdmaWxlcycgfCAncGF0aCcgfCAncHJlc2V0JyB8ICdleHRlbnNpb25zJyB8ICdlbmNvZGluZyc+XG4+O1xuXG5jb25zdCBDVUJFTUFQX1JPT1QgPSAnaHR0cHM6Ly9tYXJrZXQtYXNzZXRzLmZyYTEuY2RuLmRpZ2l0YWxvY2VhbnNwYWNlcy5jb20vbWFya2V0LWFzc2V0cy9oZHJpcy8nO1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNFbnZpcm9ubWVudChcbiAgICBwYXJhbXNGYWN0b3J5OiAoXG4gICAgICAgIGRlZmF1bHRQYXJhbXM6IE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtc1xuICAgICkgPT4gTmd0c0luamVjdEVudmlyb25tZW50UGFyYW1zIHwgT2JzZXJ2YWJsZTxOZ3RzSW5qZWN0RW52aXJvbm1lbnRQYXJhbXM+XG4pIHtcbiAgICBsZXQgcCA9IHtcbiAgICAgICAgZmlsZXM6IFsnL3B4LnBuZycsICcvbngucG5nJywgJy9weS5wbmcnLCAnL255LnBuZycsICcvcHoucG5nJywgJy9uei5wbmcnXSxcbiAgICAgICAgcGF0aDogJycsXG4gICAgICAgIHByZXNldDogdW5kZWZpbmVkLFxuICAgICAgICBlbmNvZGluZzogdW5kZWZpbmVkLFxuICAgIH0gYXMgTmd0c0luamVjdEVudmlyb25tZW50UGFyYW1zO1xuICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtc0ZhY3RvcnkocCk7XG4gICAgY29uc3QgcGFyYW1zJCA9IGlzT2JzZXJ2YWJsZShwYXJhbXMpID8gcGFyYW1zIDogb2YocGFyYW1zKTtcblxuICAgIGNvbnN0IHRleHR1cmVSZWYgPSBpbmplY3ROZ3RSZWY8VGV4dHVyZSB8IEN1YmVUZXh0dXJlPigpO1xuICAgIGNvbnN0IHsgZGVzdHJveSQgfSA9IGluamVjdE5ndERlc3Ryb3koKCkgPT4ge1xuICAgICAgICB0ZXh0dXJlUmVmLm5hdGl2ZUVsZW1lbnQ/LmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvYWRlclJlc3VsdCA9IGluamVjdE5ndExvYWRlcihcbiAgICAgICAgKGlucHV0cykgPT4gKEFycmF5LmlzQXJyYXkoaW5wdXRzKSA/IEN1YmVUZXh0dXJlTG9hZGVyIDogUkdCRUxvYWRlcikgYXMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55LFxuICAgICAgICBwYXJhbXMkLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBwID0gZGF0YTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEucHJlc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGRhdGEucHJlc2V0IGluIG5ndHNFbnZpcm9ubWVudFByZXNldHNPYmopKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcmVzZXQgbXVzdCBiZSBvbmUgb2Y6ICcgKyBPYmplY3Qua2V5cyhuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9IG5ndHNFbnZpcm9ubWVudFByZXNldHNPYmpbZGF0YS5wcmVzZXRdO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnBhdGggPSBDVUJFTUFQX1JPT1Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEuZmlsZXMpID8gW2RhdGEuZmlsZXNdIDogKGRhdGEuZmlsZXMhIGFzIGFueSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICAobG9hZGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAocC5wYXRoKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnNldFBhdGgocC5wYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwLmV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBwLmV4dGVuc2lvbnMobG9hZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBsb2FkZXJSZXN1bHQucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3VsdHMpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dHVyZSA9IEFycmF5LmlzQXJyYXkocC5maWxlcyEpID8gKHJlc3VsdHMgYXMgYW55W10pWzBdIDogcmVzdWx0cztcbiAgICAgICAgdGV4dHVyZS5tYXBwaW5nID0gQXJyYXkuaXNBcnJheShwLmZpbGVzISkgPyBDdWJlUmVmbGVjdGlvbk1hcHBpbmcgOiBFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZztcbiAgICAgICAgdGV4dHVyZS5lbmNvZGluZyA9IHAuZW5jb2RpbmcgPz8gQXJyYXkuaXNBcnJheShwLmZpbGVzISkgPyBzUkdCRW5jb2RpbmcgOiBMaW5lYXJFbmNvZGluZztcblxuICAgICAgICB0ZXh0dXJlUmVmLm5hdGl2ZUVsZW1lbnQgPSB0ZXh0dXJlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRleHR1cmVSZWY7XG59XG4iXX0=
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
2
|
-
import { extend, injectBeforeRender, injectNgtRef, NgtRxStore } from 'angular-three';
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
import { Group } from 'three';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
extend({ Group });
|
|
7
|
-
class NgtsFloat extends NgtRxStore {
|
|
8
|
-
set speed(speed) {
|
|
9
|
-
this.set({ speed });
|
|
10
|
-
}
|
|
11
|
-
set rotationIntensity(rotationIntensity) {
|
|
12
|
-
this.set({ rotationIntensity });
|
|
13
|
-
}
|
|
14
|
-
set floatIntensity(floatIntensity) {
|
|
15
|
-
this.set({ floatIntensity });
|
|
16
|
-
}
|
|
17
|
-
set floatingRange(floatingRange) {
|
|
18
|
-
this.set({ floatingRange });
|
|
19
|
-
}
|
|
20
|
-
initialize() {
|
|
21
|
-
super.initialize();
|
|
22
|
-
this.set({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1] });
|
|
23
|
-
}
|
|
24
|
-
constructor() {
|
|
25
|
-
super();
|
|
26
|
-
this.offset = Math.random() * 10000;
|
|
27
|
-
this.floatRef = injectNgtRef();
|
|
28
|
-
injectBeforeRender(this.onBeforeRender.bind(this));
|
|
29
|
-
}
|
|
30
|
-
onBeforeRender({ clock }) {
|
|
31
|
-
if (!this.floatRef.nativeElement)
|
|
32
|
-
return;
|
|
33
|
-
const { speed, floatingRange, floatIntensity, rotationIntensity } = this.get();
|
|
34
|
-
const t = this.offset + clock.getElapsedTime();
|
|
35
|
-
this.floatRef.nativeElement.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;
|
|
36
|
-
this.floatRef.nativeElement.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;
|
|
37
|
-
this.floatRef.nativeElement.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;
|
|
38
|
-
let yPosition = Math.sin((t / 4) * speed) / 10;
|
|
39
|
-
yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);
|
|
40
|
-
this.floatRef.nativeElement.position.y = yPosition * floatIntensity;
|
|
41
|
-
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsFloat, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsFloat, isStandalone: true, selector: "ngts-float", inputs: { floatRef: "floatRef", speed: "speed", rotationIntensity: "rotationIntensity", floatIntensity: "floatIntensity", floatingRange: "floatingRange" }, usesInheritance: true, ngImport: i0, template: `
|
|
44
|
-
<ngt-group ngtCompound>
|
|
45
|
-
<ngt-group [ref]="floatRef">
|
|
46
|
-
<ng-content />
|
|
47
|
-
</ngt-group>
|
|
48
|
-
</ngt-group>
|
|
49
|
-
`, isInline: true }); }
|
|
50
|
-
}
|
|
51
|
-
export { NgtsFloat };
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsFloat, decorators: [{
|
|
53
|
-
type: Component,
|
|
54
|
-
args: [{
|
|
55
|
-
selector: 'ngts-float',
|
|
56
|
-
standalone: true,
|
|
57
|
-
template: `
|
|
58
|
-
<ngt-group ngtCompound>
|
|
59
|
-
<ngt-group [ref]="floatRef">
|
|
60
|
-
<ng-content />
|
|
61
|
-
</ngt-group>
|
|
62
|
-
</ngt-group>
|
|
63
|
-
`,
|
|
64
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
65
|
-
}]
|
|
66
|
-
}], ctorParameters: function () { return []; }, propDecorators: { floatRef: [{
|
|
67
|
-
type: Input
|
|
68
|
-
}], speed: [{
|
|
69
|
-
type: Input
|
|
70
|
-
}], rotationIntensity: [{
|
|
71
|
-
type: Input
|
|
72
|
-
}], floatIntensity: [{
|
|
73
|
-
type: Input
|
|
74
|
-
}], floatingRange: [{
|
|
75
|
-
type: Input
|
|
76
|
-
}] } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvZmxvYXQvZmxvYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQWtCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUU5QixNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBRWxCLE1BWWEsU0FBVSxTQUFRLFVBQVU7SUFLckMsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxpQkFBaUIsQ0FBQyxpQkFBeUI7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBYSxjQUFjLENBQUMsY0FBc0I7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQWEsYUFBYSxDQUFDLGFBQWlDO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFUSxVQUFVO1FBQ2YsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQTFCSyxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV2QyxhQUFRLEdBQUcsWUFBWSxFQUFlLENBQUM7UUF5QjVDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBa0I7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDekMsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9FLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQzdGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQzdGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQzlGLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9DLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsY0FBYyxDQUFDO0lBQ3hFLENBQUM7OEdBekNRLFNBQVM7a0dBQVQsU0FBUyx5UEFUUjs7Ozs7O0tBTVQ7O1NBR1EsU0FBUzsyRkFBVCxTQUFTO2tCQVpyQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7S0FNVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBSVksUUFBUTtzQkFBaEIsS0FBSztnQkFFTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFJTyxjQUFjO3NCQUExQixLQUFLO2dCQUlPLGFBQWE7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0UmVmLCBOZ3RSZW5kZXJTdGF0ZSwgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICd0aHJlZSc7XG5cbmV4dGVuZCh7IEdyb3VwIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtZmxvYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBuZ3RDb21wb3VuZD5cbiAgICAgICAgICAgIDxuZ3QtZ3JvdXAgW3JlZl09XCJmbG9hdFJlZlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8L25ndC1ncm91cD5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNGbG9hdCBleHRlbmRzIE5ndFJ4U3RvcmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb2Zmc2V0ID0gTWF0aC5yYW5kb20oKSAqIDEwMDAwO1xuXG4gICAgQElucHV0KCkgZmxvYXRSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuR3JvdXA+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgc3BlZWQoc3BlZWQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNwZWVkIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByb3RhdGlvbkludGVuc2l0eShyb3RhdGlvbkludGVuc2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcm90YXRpb25JbnRlbnNpdHkgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZsb2F0SW50ZW5zaXR5KGZsb2F0SW50ZW5zaXR5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmbG9hdEludGVuc2l0eSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmxvYXRpbmdSYW5nZShmbG9hdGluZ1JhbmdlOiBbbnVtYmVyPywgbnVtYmVyP10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmbG9hdGluZ1JhbmdlIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoeyBzcGVlZDogMSwgcm90YXRpb25JbnRlbnNpdHk6IDEsIGZsb2F0SW50ZW5zaXR5OiAxLCBmbG9hdGluZ1JhbmdlOiBbLTAuMSwgMC4xXSB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMub25CZWZvcmVSZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJlZm9yZVJlbmRlcih7IGNsb2NrIH06IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIGlmICghdGhpcy5mbG9hdFJlZi5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgc3BlZWQsIGZsb2F0aW5nUmFuZ2UsIGZsb2F0SW50ZW5zaXR5LCByb3RhdGlvbkludGVuc2l0eSB9ID0gdGhpcy5nZXQoKTtcbiAgICAgICAgY29uc3QgdCA9IHRoaXMub2Zmc2V0ICsgY2xvY2suZ2V0RWxhcHNlZFRpbWUoKTtcbiAgICAgICAgdGhpcy5mbG9hdFJlZi5uYXRpdmVFbGVtZW50LnJvdGF0aW9uLnggPSAoTWF0aC5jb3MoKHQgLyA0KSAqIHNwZWVkKSAvIDgpICogcm90YXRpb25JbnRlbnNpdHk7XG4gICAgICAgIHRoaXMuZmxvYXRSZWYubmF0aXZlRWxlbWVudC5yb3RhdGlvbi55ID0gKE1hdGguc2luKCh0IC8gNCkgKiBzcGVlZCkgLyA4KSAqIHJvdGF0aW9uSW50ZW5zaXR5O1xuICAgICAgICB0aGlzLmZsb2F0UmVmLm5hdGl2ZUVsZW1lbnQucm90YXRpb24ueiA9IChNYXRoLnNpbigodCAvIDQpICogc3BlZWQpIC8gMjApICogcm90YXRpb25JbnRlbnNpdHk7XG4gICAgICAgIGxldCB5UG9zaXRpb24gPSBNYXRoLnNpbigodCAvIDQpICogc3BlZWQpIC8gMTA7XG4gICAgICAgIHlQb3NpdGlvbiA9IFRIUkVFLk1hdGhVdGlscy5tYXBMaW5lYXIoeVBvc2l0aW9uLCAtMC4xLCAwLjEsIGZsb2F0aW5nUmFuZ2VbMF0gPz8gLTAuMSwgZmxvYXRpbmdSYW5nZVsxXSA/PyAwLjEpO1xuICAgICAgICB0aGlzLmZsb2F0UmVmLm5hdGl2ZUVsZW1lbnQucG9zaXRpb24ueSA9IHlQb3NpdGlvbiAqIGZsb2F0SW50ZW5zaXR5O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
2
|
-
import { injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';
|
|
3
|
-
import { Vector3 } from 'three';
|
|
4
|
-
import { Sky } from 'three-stdlib';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export function calcPosFromAngles(inclination, azimuth, vector = new Vector3()) {
|
|
7
|
-
const theta = Math.PI * (inclination - 0.5);
|
|
8
|
-
const phi = 2 * Math.PI * (azimuth - 0.5);
|
|
9
|
-
vector.x = Math.cos(phi);
|
|
10
|
-
vector.y = Math.sin(theta);
|
|
11
|
-
vector.z = Math.sin(phi);
|
|
12
|
-
return vector;
|
|
13
|
-
}
|
|
14
|
-
class NgtsSky extends NgtRxStore {
|
|
15
|
-
constructor() {
|
|
16
|
-
super(...arguments);
|
|
17
|
-
this.skyRef = injectNgtRef();
|
|
18
|
-
this.sky = new Sky();
|
|
19
|
-
}
|
|
20
|
-
set distance(distance) {
|
|
21
|
-
this.set({ distance });
|
|
22
|
-
}
|
|
23
|
-
set sunPosition(sunPosition) {
|
|
24
|
-
this.set({ sunPosition });
|
|
25
|
-
}
|
|
26
|
-
set inclination(inclination) {
|
|
27
|
-
this.set({ inclination });
|
|
28
|
-
}
|
|
29
|
-
set azimuth(azimuth) {
|
|
30
|
-
this.set({ azimuth });
|
|
31
|
-
}
|
|
32
|
-
set mieCoefficient(mieCoefficient) {
|
|
33
|
-
this.set({ mieCoefficient });
|
|
34
|
-
}
|
|
35
|
-
set mieDirectionalG(mieDirectionalG) {
|
|
36
|
-
this.set({ mieDirectionalG });
|
|
37
|
-
}
|
|
38
|
-
set rayleigh(rayleigh) {
|
|
39
|
-
this.set({ rayleigh });
|
|
40
|
-
}
|
|
41
|
-
set turbidity(turbidity) {
|
|
42
|
-
this.set({ turbidity });
|
|
43
|
-
}
|
|
44
|
-
initialize() {
|
|
45
|
-
super.initialize();
|
|
46
|
-
const inclination = 0.6;
|
|
47
|
-
const azimuth = 0.1;
|
|
48
|
-
this.set({
|
|
49
|
-
inclination,
|
|
50
|
-
azimuth,
|
|
51
|
-
distance: 1000,
|
|
52
|
-
mieCoefficient: 0.005,
|
|
53
|
-
mieDirectionalG: 0.8,
|
|
54
|
-
rayleigh: 0.5,
|
|
55
|
-
turbidity: 10,
|
|
56
|
-
sunPosition: calcPosFromAngles(inclination, azimuth),
|
|
57
|
-
});
|
|
58
|
-
this.connect('sunPosition', this.select(['inclination', 'azimuth'], ({ inclination, azimuth }) => calcPosFromAngles(inclination, azimuth)));
|
|
59
|
-
this.connect('scale', this.select(['distance'], ({ distance }) => new Vector3().setScalar(distance)));
|
|
60
|
-
}
|
|
61
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSky, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
62
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { skyRef: "skyRef", distance: "distance", sunPosition: "sunPosition", inclination: "inclination", azimuth: "azimuth", mieCoefficient: "mieCoefficient", mieDirectionalG: "mieDirectionalG", rayleigh: "rayleigh", turbidity: "turbidity" }, usesInheritance: true, ngImport: i0, template: `
|
|
63
|
-
<ngt-primitive ngtCompound *args="[sky]" [ref]="skyRef" [scale]="get('scale')">
|
|
64
|
-
<ngt-value [rawValue]="get('mieCoefficient')" attach="material.uniforms.mieCoefficient.value" />
|
|
65
|
-
<ngt-value [rawValue]="get('mieDirectionalG')" attach="material.uniforms.mieDirectionalG.value" />
|
|
66
|
-
<ngt-value [rawValue]="get('rayleigh')" attach="material.uniforms.rayleigh.value" />
|
|
67
|
-
<ngt-value [rawValue]="get('sunPosition')" attach="material.uniforms.sunPosition.value" />
|
|
68
|
-
<ngt-value [rawValue]="get('turbidity')" attach="material.uniforms.turbidity.value" />
|
|
69
|
-
</ngt-primitive>
|
|
70
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
|
|
71
|
-
}
|
|
72
|
-
export { NgtsSky };
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSky, decorators: [{
|
|
74
|
-
type: Component,
|
|
75
|
-
args: [{
|
|
76
|
-
selector: 'ngts-sky',
|
|
77
|
-
standalone: true,
|
|
78
|
-
template: `
|
|
79
|
-
<ngt-primitive ngtCompound *args="[sky]" [ref]="skyRef" [scale]="get('scale')">
|
|
80
|
-
<ngt-value [rawValue]="get('mieCoefficient')" attach="material.uniforms.mieCoefficient.value" />
|
|
81
|
-
<ngt-value [rawValue]="get('mieDirectionalG')" attach="material.uniforms.mieDirectionalG.value" />
|
|
82
|
-
<ngt-value [rawValue]="get('rayleigh')" attach="material.uniforms.rayleigh.value" />
|
|
83
|
-
<ngt-value [rawValue]="get('sunPosition')" attach="material.uniforms.sunPosition.value" />
|
|
84
|
-
<ngt-value [rawValue]="get('turbidity')" attach="material.uniforms.turbidity.value" />
|
|
85
|
-
</ngt-primitive>
|
|
86
|
-
`,
|
|
87
|
-
imports: [NgtArgs],
|
|
88
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
89
|
-
}]
|
|
90
|
-
}], propDecorators: { skyRef: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}], distance: [{
|
|
93
|
-
type: Input
|
|
94
|
-
}], sunPosition: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}], inclination: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}], azimuth: [{
|
|
99
|
-
type: Input
|
|
100
|
-
}], mieCoefficient: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], mieDirectionalG: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], rayleigh: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], turbidity: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}] } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3NreS9za3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFbkMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsT0FBZSxFQUFFLFNBQWtCLElBQUksT0FBTyxFQUFFO0lBQ25HLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDNUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFMUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekIsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BZWEsT0FBUSxTQUFRLFVBQVU7SUFmdkM7O1FBZ0JhLFdBQU0sR0FBRyxZQUFZLEVBQU8sQ0FBQztRQWtDN0IsUUFBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7S0Ey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LFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBTa3kgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY1Bvc0Zyb21BbmdsZXMoaW5jbGluYXRpb246IG51bWJlciwgYXppbXV0aDogbnVtYmVyLCB2ZWN0b3I6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpKSB7XG4gICAgY29uc3QgdGhldGEgPSBNYXRoLlBJICogKGluY2xpbmF0aW9uIC0gMC41KTtcbiAgICBjb25zdCBwaGkgPSAyICogTWF0aC5QSSAqIChhemltdXRoIC0gMC41KTtcblxuICAgIHZlY3Rvci54ID0gTWF0aC5jb3MocGhpKTtcbiAgICB2ZWN0b3IueSA9IE1hdGguc2luKHRoZXRhKTtcbiAgICB2ZWN0b3IueiA9IE1hdGguc2luKHBoaSk7XG5cbiAgICByZXR1cm4gdmVjdG9yO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc2t5JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtcHJpbWl0aXZlIG5ndENvbXBvdW5kICphcmdzPVwiW3NreV1cIiBbcmVmXT1cInNreVJlZlwiIFtzY2FsZV09XCJnZXQoJ3NjYWxlJylcIj5cbiAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnbWllQ29lZmZpY2llbnQnKVwiIGF0dGFjaD1cIm1hdGVyaWFsLnVuaWZvcm1zLm1pZUNvZWZmaWNpZW50LnZhbHVlXCIgLz5cbiAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnbWllRGlyZWN0aW9uYWxHJylcIiBhdHRhY2g9XCJtYXRlcmlhbC51bmlmb3Jtcy5taWVEaXJlY3Rpb25hbEcudmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdyYXlsZWlnaCcpXCIgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMucmF5bGVpZ2gudmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdzdW5Qb3NpdGlvbicpXCIgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMuc3VuUG9zaXRpb24udmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCd0dXJiaWRpdHknKVwiIGF0dGFjaD1cIm1hdGVyaWFsLnVuaWZvcm1zLnR1cmJpZGl0eS52YWx1ZVwiIC8+XG4gICAgICAgIDwvbmd0LXByaW1pdGl2ZT5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTa3kgZXh0ZW5kcyBOZ3RSeFN0b3JlIHtcbiAgICBASW5wdXQoKSBza3lSZWYgPSBpbmplY3ROZ3RSZWY8U2t5PigpO1xuXG4gICAgQElucHV0KCkgc2V0IGRpc3RhbmNlKGRpc3RhbmNlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXN0YW5jZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc3VuUG9zaXRpb24oc3VuUG9zaXRpb246IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPikge1xuICAgICAgICB0aGlzLnNldCh7IHN1blBvc2l0aW9uIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBpbmNsaW5hdGlvbihpbmNsaW5hdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW5jbGluYXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGF6aW11dGgoYXppbXV0aDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYXppbXV0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWllQ29lZmZpY2llbnQobWllQ29lZmZpY2llbnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1pZUNvZWZmaWNpZW50IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtaWVEaXJlY3Rpb25hbEcobWllRGlyZWN0aW9uYWxHOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtaWVEaXJlY3Rpb25hbEcgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJheWxlaWdoKHJheWxlaWdoOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYXlsZWlnaCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdHVyYmlkaXR5KHR1cmJpZGl0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgdHVyYmlkaXR5IH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IHNreSA9IG5ldyBTa3koKTtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgY29uc3QgaW5jbGluYXRpb24gPSAwLjY7XG4gICAgICAgIGNvbnN0IGF6aW11dGggPSAwLjE7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIGluY2xpbmF0aW9uLFxuICAgICAgICAgICAgYXppbXV0aCxcbiAgICAgICAgICAgIGRpc3RhbmNlOiAxMDAwLFxuICAgICAgICAgICAgbWllQ29lZmZpY2llbnQ6IDAuMDA1LFxuICAgICAgICAgICAgbWllRGlyZWN0aW9uYWxHOiAwLjgsXG4gICAgICAgICAgICByYXlsZWlnaDogMC41LFxuICAgICAgICAgICAgdHVyYmlkaXR5OiAxMCxcbiAgICAgICAgICAgIHN1blBvc2l0aW9uOiBjYWxjUG9zRnJvbUFuZ2xlcyhpbmNsaW5hdGlvbiwgYXppbXV0aCksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc3VuUG9zaXRpb24nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoWydpbmNsaW5hdGlvbicsICdhemltdXRoJ10sICh7IGluY2xpbmF0aW9uLCBhemltdXRoIH0pID0+XG4gICAgICAgICAgICAgICAgY2FsY1Bvc0Zyb21BbmdsZXMoaW5jbGluYXRpb24sIGF6aW11dGgpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdzY2FsZScsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ2Rpc3RhbmNlJ10sICh7IGRpc3RhbmNlIH0pID0+IG5ldyBWZWN0b3IzKCkuc2V0U2NhbGFyKGRpc3RhbmNlKSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';
|
|
2
|
-
import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore, NgtStore } from 'angular-three';
|
|
3
|
-
import { shaderMaterial } from 'angular-three-soba/shaders';
|
|
4
|
-
import { map, startWith, withLatestFrom } from 'rxjs';
|
|
5
|
-
import { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
const SparklesMaterial = shaderMaterial({ time: 0, pixelRatio: 1 },
|
|
8
|
-
// language=GLSL
|
|
9
|
-
`
|
|
10
|
-
uniform float pixelRatio;
|
|
11
|
-
uniform float time;
|
|
12
|
-
|
|
13
|
-
attribute float size;
|
|
14
|
-
attribute float speed;
|
|
15
|
-
attribute float opacity;
|
|
16
|
-
attribute vec3 noise;
|
|
17
|
-
attribute vec3 color;
|
|
18
|
-
|
|
19
|
-
varying vec3 vColor;
|
|
20
|
-
varying float vOpacity;
|
|
21
|
-
|
|
22
|
-
void main() {
|
|
23
|
-
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
|
|
24
|
-
|
|
25
|
-
modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
|
|
26
|
-
modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
|
|
27
|
-
modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
|
|
28
|
-
|
|
29
|
-
vec4 viewPosition = viewMatrix * modelPosition;
|
|
30
|
-
vec4 projectionPostion = projectionMatrix * viewPosition;
|
|
31
|
-
|
|
32
|
-
gl_Position = projectionPostion;
|
|
33
|
-
gl_PointSize = size * 25. * pixelRatio;
|
|
34
|
-
gl_PointSize *= (1.0 / - viewPosition.z);
|
|
35
|
-
|
|
36
|
-
vColor = color;
|
|
37
|
-
vOpacity = opacity;
|
|
38
|
-
}
|
|
39
|
-
`,
|
|
40
|
-
// language=GLSL
|
|
41
|
-
`
|
|
42
|
-
varying vec3 vColor;
|
|
43
|
-
varying float vOpacity;
|
|
44
|
-
|
|
45
|
-
void main() {
|
|
46
|
-
float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
|
|
47
|
-
float strength = 0.05 / distanceToCenter - 0.1;
|
|
48
|
-
|
|
49
|
-
gl_FragColor = vec4(vColor, strength * vOpacity);
|
|
50
|
-
}
|
|
51
|
-
`);
|
|
52
|
-
extend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });
|
|
53
|
-
const isFloat32Array = (def) => def && def.constructor === Float32Array;
|
|
54
|
-
const expandColor = (v) => [v.r, v.g, v.b];
|
|
55
|
-
const isVector = (v) => v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;
|
|
56
|
-
const normalizeVector = (v) => {
|
|
57
|
-
if (Array.isArray(v))
|
|
58
|
-
return v;
|
|
59
|
-
else if (isVector(v))
|
|
60
|
-
return v.toArray();
|
|
61
|
-
return [v, v, v];
|
|
62
|
-
};
|
|
63
|
-
function usePropAsIsOrAsAttribute(count, prop, setDefault) {
|
|
64
|
-
if (prop !== undefined) {
|
|
65
|
-
if (isFloat32Array(prop)) {
|
|
66
|
-
return prop;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
if (prop instanceof Color) {
|
|
70
|
-
const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();
|
|
71
|
-
return Float32Array.from(a);
|
|
72
|
-
}
|
|
73
|
-
else if (isVector(prop) || Array.isArray(prop)) {
|
|
74
|
-
const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();
|
|
75
|
-
return Float32Array.from(a);
|
|
76
|
-
}
|
|
77
|
-
return Float32Array.from({ length: count }, () => prop);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return Float32Array.from({ length: count }, setDefault);
|
|
81
|
-
}
|
|
82
|
-
class NgtsSparkles extends NgtRxStore {
|
|
83
|
-
/** Number of particles (default: 100) */
|
|
84
|
-
set count(count) {
|
|
85
|
-
this.set({ count });
|
|
86
|
-
}
|
|
87
|
-
/** Speed of particles (default: 1) */
|
|
88
|
-
set speed(speed) {
|
|
89
|
-
this.set({ speed });
|
|
90
|
-
}
|
|
91
|
-
/** Opacity of particles (default: 1) */
|
|
92
|
-
set opacity(opacity) {
|
|
93
|
-
this.set({ opacity });
|
|
94
|
-
}
|
|
95
|
-
/** Color of particles (default: 100) */
|
|
96
|
-
set color(color) {
|
|
97
|
-
this.set({ color });
|
|
98
|
-
}
|
|
99
|
-
/** Size of particles (default: randomized between 0 and 1) */
|
|
100
|
-
set size(size) {
|
|
101
|
-
this.set({ size });
|
|
102
|
-
}
|
|
103
|
-
/** The space the particles occupy (default: 1) */
|
|
104
|
-
set scale(scale) {
|
|
105
|
-
this.set({ scale });
|
|
106
|
-
}
|
|
107
|
-
/** Movement factor (default: 1) */
|
|
108
|
-
set noise(noise) {
|
|
109
|
-
this.set({ noise });
|
|
110
|
-
}
|
|
111
|
-
initialize() {
|
|
112
|
-
super.initialize();
|
|
113
|
-
this.set({
|
|
114
|
-
noise: 1,
|
|
115
|
-
count: 100,
|
|
116
|
-
speed: 1,
|
|
117
|
-
opacity: 1,
|
|
118
|
-
scale: 1,
|
|
119
|
-
});
|
|
120
|
-
this.connect('positions', this.select(['count', 'scale'], ({ count, scale }) => Float32Array.from(Array.from({ length: count }, () => normalizeVector(scale).map(MathUtils.randFloatSpread)).flat())));
|
|
121
|
-
this.connect('sizes', this.getAttribute$('size', { setDefault: Math.random }));
|
|
122
|
-
this.connect('opacities', this.getAttribute$('opacity'));
|
|
123
|
-
this.connect('speeds', this.getAttribute$('speed'));
|
|
124
|
-
this.connect('noises', this.getAttribute$('noise', {
|
|
125
|
-
countValue: (_, count) => count * 3,
|
|
126
|
-
}));
|
|
127
|
-
this.connect('colors', this.getAttribute$('color', {
|
|
128
|
-
keyValue: (color) => (!isFloat32Array(color) ? new Color(color) : color),
|
|
129
|
-
countValue: (color, count) => (color === undefined ? count * 3 : count),
|
|
130
|
-
setDefault: () => 1,
|
|
131
|
-
}));
|
|
132
|
-
}
|
|
133
|
-
constructor() {
|
|
134
|
-
super();
|
|
135
|
-
this.store = inject(NgtStore);
|
|
136
|
-
this.dpr = this.store.get('viewport', 'dpr');
|
|
137
|
-
this.materialRef = injectNgtRef();
|
|
138
|
-
this.pointsRef = injectNgtRef();
|
|
139
|
-
injectBeforeRender(this.onBeforeRender.bind(this));
|
|
140
|
-
}
|
|
141
|
-
onBeforeRender({ clock }) {
|
|
142
|
-
if (!this.materialRef.nativeElement)
|
|
143
|
-
return;
|
|
144
|
-
this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;
|
|
145
|
-
}
|
|
146
|
-
getAttribute$(key, options) {
|
|
147
|
-
options ??= {};
|
|
148
|
-
if (!options.keyValue) {
|
|
149
|
-
options.keyValue = (value) => value;
|
|
150
|
-
}
|
|
151
|
-
if (!options.countValue) {
|
|
152
|
-
options.countValue = (_, count) => count;
|
|
153
|
-
}
|
|
154
|
-
return this.select(key).pipe(startWith(this.get(key) || undefined), withLatestFrom(this.select('count')), map(([value, count]) => usePropAsIsOrAsAttribute(options.countValue(value, count), options.keyValue(value, count), options?.setDefault)));
|
|
155
|
-
}
|
|
156
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSparkles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
157
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSparkles, isStandalone: true, selector: "ngts-sparkles", inputs: { pointsRef: "pointsRef", count: "count", speed: "speed", opacity: "opacity", color: "color", size: "size", scale: "scale", noise: "noise" }, usesInheritance: true, ngImport: i0, template: `
|
|
158
|
-
<ngt-points ngtCompount [ref]="pointsRef">
|
|
159
|
-
<ngt-buffer-geometry>
|
|
160
|
-
<ngt-buffer-attribute *args="[get('positions'), 3]" attach="attributes.position" />
|
|
161
|
-
<ngt-buffer-attribute *args="[get('sizes'), 1]" attach="attributes.size" />
|
|
162
|
-
<ngt-buffer-attribute *args="[get('opacities'), 1]" attach="attributes.opacity" />
|
|
163
|
-
<ngt-buffer-attribute *args="[get('speeds'), 1]" attach="attributes.speed" />
|
|
164
|
-
<ngt-buffer-attribute *args="[get('colors'), 3]" attach="attributes.color" />
|
|
165
|
-
<ngt-buffer-attribute *args="[get('noises'), 3]" attach="attributes.noise" />
|
|
166
|
-
</ngt-buffer-geometry>
|
|
167
|
-
<ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr" />
|
|
168
|
-
</ngt-points>
|
|
169
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
|
|
170
|
-
}
|
|
171
|
-
export { NgtsSparkles };
|
|
172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSparkles, decorators: [{
|
|
173
|
-
type: Component,
|
|
174
|
-
args: [{
|
|
175
|
-
selector: 'ngts-sparkles',
|
|
176
|
-
standalone: true,
|
|
177
|
-
template: `
|
|
178
|
-
<ngt-points ngtCompount [ref]="pointsRef">
|
|
179
|
-
<ngt-buffer-geometry>
|
|
180
|
-
<ngt-buffer-attribute *args="[get('positions'), 3]" attach="attributes.position" />
|
|
181
|
-
<ngt-buffer-attribute *args="[get('sizes'), 1]" attach="attributes.size" />
|
|
182
|
-
<ngt-buffer-attribute *args="[get('opacities'), 1]" attach="attributes.opacity" />
|
|
183
|
-
<ngt-buffer-attribute *args="[get('speeds'), 1]" attach="attributes.speed" />
|
|
184
|
-
<ngt-buffer-attribute *args="[get('colors'), 3]" attach="attributes.color" />
|
|
185
|
-
<ngt-buffer-attribute *args="[get('noises'), 3]" attach="attributes.noise" />
|
|
186
|
-
</ngt-buffer-geometry>
|
|
187
|
-
<ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr" />
|
|
188
|
-
</ngt-points>
|
|
189
|
-
`,
|
|
190
|
-
imports: [NgtArgs],
|
|
191
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
192
|
-
}]
|
|
193
|
-
}], ctorParameters: function () { return []; }, propDecorators: { pointsRef: [{
|
|
194
|
-
type: Input
|
|
195
|
-
}], count: [{
|
|
196
|
-
type: Input
|
|
197
|
-
}], speed: [{
|
|
198
|
-
type: Input
|
|
199
|
-
}], opacity: [{
|
|
200
|
-
type: Input
|
|
201
|
-
}], color: [{
|
|
202
|
-
type: Input
|
|
203
|
-
}], size: [{
|
|
204
|
-
type: Input
|
|
205
|
-
}], scale: [{
|
|
206
|
-
type: Input
|
|
207
|
-
}], noise: [{
|
|
208
|
-
type: Input
|
|
209
|
-
}] } });
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmtsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3BhcmtsZXMvc3BhcmtsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBa0IsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUU3RyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FDbkMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7QUFDMUIsZ0JBQWdCO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QkQ7QUFDQyxnQkFBZ0I7QUFDaEI7Ozs7Ozs7Ozs7R0FVRCxDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFdEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFRLEVBQXVCLEVBQUUsQ0FBQyxHQUFHLElBQUssR0FBb0IsQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDO0FBRXBILE1BQU0sV0FB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QUFZO2tCQW5CeEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7O0tBWVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBTVksU0FBUztzQkFBakIsS0FBSztnQkFHTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS08sT0FBTztzQkFBbkIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLElBQUk7c0JBQWhCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0UmVmLCBOZ3RBcmdzLCBOZ3RSZW5kZXJTdGF0ZSwgTmd0UnhTdG9yZSwgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IHNoYWRlck1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5LCBDb2xvciwgTWF0aFV0aWxzLCBQb2ludHMsIFZlY3RvcjIsIFZlY3RvcjMsIFZlY3RvcjQgfSBmcm9tICd0aHJlZSc7XG5cbmNvbnN0IFNwYXJrbGVzTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcbiAgICB7IHRpbWU6IDAsIHBpeGVsUmF0aW86IDEgfSxcbiAgICAvLyBsYW5ndWFnZT1HTFNMXG4gICAgYFxudW5pZm9ybSBmbG9hdCBwaXhlbFJhdGlvO1xudW5pZm9ybSBmbG9hdCB0aW1lO1xuXG5hdHRyaWJ1dGUgZmxvYXQgc2l6ZTtcbmF0dHJpYnV0ZSBmbG9hdCBzcGVlZDtcbmF0dHJpYnV0ZSBmbG9hdCBvcGFjaXR5O1xuYXR0cmlidXRlIHZlYzMgbm9pc2U7XG5hdHRyaWJ1dGUgdmVjMyBjb2xvcjtcblxudmFyeWluZyB2ZWMzIHZDb2xvcjtcbnZhcnlpbmcgZmxvYXQgdk9wYWNpdHk7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjNCBtb2RlbFBvc2l0aW9uID0gbW9kZWxNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuXG4gIG1vZGVsUG9zaXRpb24ueSArPSBzaW4odGltZSAqIHNwZWVkICsgbW9kZWxQb3NpdGlvbi54ICogbm9pc2UueCAqIDEwMC4wKSAqIDAuMjtcbiAgbW9kZWxQb3NpdGlvbi56ICs9IGNvcyh0aW1lICogc3BlZWQgKyBtb2RlbFBvc2l0aW9uLnggKiBub2lzZS55ICogMTAwLjApICogMC4yO1xuICBtb2RlbFBvc2l0aW9uLnggKz0gY29zKHRpbWUgKiBzcGVlZCArIG1vZGVsUG9zaXRpb24ueCAqIG5vaXNlLnogKiAxMDAuMCkgKiAwLjI7XG5cbiAgdmVjNCB2aWV3UG9zaXRpb24gPSB2aWV3TWF0cml4ICogbW9kZWxQb3NpdGlvbjtcbiAgdmVjNCBwcm9qZWN0aW9uUG9zdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2aWV3UG9zaXRpb247XG5cbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uUG9zdGlvbjtcbiAgZ2xfUG9pbnRTaXplID0gc2l6ZSAqIDI1LiAqIHBpeGVsUmF0aW87XG4gIGdsX1BvaW50U2l6ZSAqPSAoMS4wIC8gLSB2aWV3UG9zaXRpb24ueik7XG5cbiAgdkNvbG9yID0gY29sb3I7XG4gIHZPcGFjaXR5ID0gb3BhY2l0eTtcbn1cbiAgYCxcbiAgICAvLyBsYW5ndWFnZT1HTFNMXG4gICAgYFxudmFyeWluZyB2ZWMzIHZDb2xvcjtcbnZhcnlpbmcgZmxvYXQgdk9wYWNpdHk7XG5cbnZvaWQgbWFpbigpIHtcbiAgZmxvYXQgZGlzdGFuY2VUb0NlbnRlciA9IGRpc3RhbmNlKGdsX1BvaW50Q29vcmQsIHZlYzIoMC41KSk7XG4gIGZsb2F0IHN0cmVuZ3RoID0gMC4wNSAvIGRpc3RhbmNlVG9DZW50ZXIgLSAwLjE7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2Q29sb3IsIHN0cmVuZ3RoICogdk9wYWNpdHkpO1xufVxuICBgXG4pO1xuXG5leHRlbmQoeyBTcGFya2xlc01hdGVyaWFsLCBQb2ludHMsIEJ1ZmZlckdlb21ldHJ5LCBCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cbmNvbnN0IGlzRmxvYXQzMkFycmF5ID0gKGRlZjogYW55KTogZGVmIGlzIEZsb2F0MzJBcnJheSA9PiBkZWYgJiYgKGRlZiBhcyBGbG9hdDMyQXJyYXkpLmNvbnN0cnVjdG9yID09PSBGbG9hdDMyQXJyYXk7XG5cbmNvbnN0IGV4cGFuZENvbG9yID0gKHY6IFRIUkVFLkNvbG9yKSA9PiBbdi5yLCB2LmcsIHYuYl07XG5jb25zdCBpc1ZlY3RvciA9ICh2OiBhbnkpOiB2IGlzIFRIUkVFLlZlY3RvcjIgfCBUSFJFRS5WZWN0b3IzIHwgVEhSRUUuVmVjdG9yNCA9PlxuICAgIHYgaW5zdGFuY2VvZiBWZWN0b3IyIHx8IHYgaW5zdGFuY2VvZiBWZWN0b3IzIHx8IHYgaW5zdGFuY2VvZiBWZWN0b3I0O1xuXG5jb25zdCBub3JtYWxpemVWZWN0b3IgPSAodjogYW55KTogbnVtYmVyW10gPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSByZXR1cm4gdjtcbiAgICBlbHNlIGlmIChpc1ZlY3Rvcih2KSkgcmV0dXJuIHYudG9BcnJheSgpO1xuICAgIHJldHVybiBbdiwgdiwgdl0gYXMgbnVtYmVyW107XG59O1xuXG5mdW5jdGlvbiB1c2VQcm9wQXNJc09yQXNBdHRyaWJ1dGU8VCA9IGFueT4oY291bnQ6IG51bWJlciwgcHJvcD86IFQgfCBGbG9hdDMyQXJyYXksIHNldERlZmF1bHQ/OiAodjogVCkgPT4gbnVtYmVyKSB7XG4gICAgaWYgKHByb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoaXNGbG9hdDMyQXJyYXkocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wIGFzIEZsb2F0MzJBcnJheTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwcm9wIGluc3RhbmNlb2YgQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgKiAzIH0sICgpID0+IGV4cGFuZENvbG9yKHByb3ApKS5mbGF0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKGEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ZlY3Rvcihwcm9wKSB8fCBBcnJheS5pc0FycmF5KHByb3ApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50ICogMyB9LCAoKSA9PiBub3JtYWxpemVWZWN0b3IocHJvcCkpLmZsYXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sICgpID0+IHByb3AgYXMgdW5rbm93biBhcyBudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSwgc2V0RGVmYXVsdCEpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc3BhcmtsZXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1wb2ludHMgbmd0Q29tcG91bnQgW3JlZl09XCJwb2ludHNSZWZcIj5cbiAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWdlb21ldHJ5PlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ3Bvc2l0aW9ucycpLCAzXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ3NpemVzJyksIDFdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgKmFyZ3M9XCJbZ2V0KCdvcGFjaXRpZXMnKSwgMV1cIiBhdHRhY2g9XCJhdHRyaWJ1dGVzLm9wYWNpdHlcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ3NwZWVkcycpLCAxXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMuc3BlZWRcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ2NvbG9ycycpLCAzXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMuY29sb3JcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ25vaXNlcycpLCAzXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMubm9pc2VcIiAvPlxuICAgICAgICAgICAgPC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuICAgICAgICAgICAgPG5ndC1zcGFya2xlcy1tYXRlcmlhbCBbcmVmXT1cIm1hdGVyaWFsUmVmXCIgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbZGVwdGhXcml0ZV09XCJmYWxzZVwiIFtwaXhlbFJhdGlvXT1cImRwclwiIC8+XG4gICAgICAgIDwvbmd0LXBvaW50cz5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcGFya2xlcyBleHRlbmRzIE5ndFJ4U3RvcmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIHJlYWRvbmx5IGRwciA9IHRoaXMuc3RvcmUuZ2V0KCd2aWV3cG9ydCcsICdkcHInKTtcbiAgICByZWFkb25seSBtYXRlcmlhbFJlZiA9IGluamVjdE5ndFJlZjx0eXBlb2YgU3BhcmtsZXNNYXRlcmlhbC5wcm90b3R5cGU+KCk7XG5cbiAgICBASW5wdXQoKSBwb2ludHNSZWYgPSBpbmplY3ROZ3RSZWY8UG9pbnRzPigpO1xuXG4gICAgLyoqIE51bWJlciBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEwMCkgKi9cbiAgICBASW5wdXQoKSBzZXQgY291bnQoY291bnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGNvdW50IH0pO1xuICAgIH1cblxuICAgIC8qKiBTcGVlZCBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG4gICAgQElucHV0KCkgc2V0IHNwZWVkKHNwZWVkOiBudW1iZXIgfCBGbG9hdDMyQXJyYXkpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzcGVlZCB9KTtcbiAgICB9XG5cbiAgICAvKiogT3BhY2l0eSBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG4gICAgQElucHV0KCkgc2V0IG9wYWNpdHkob3BhY2l0eTogbnVtYmVyIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgb3BhY2l0eSB9KTtcbiAgICB9XG5cbiAgICAvKiogQ29sb3Igb2YgcGFydGljbGVzIChkZWZhdWx0OiAxMDApICovXG4gICAgQElucHV0KCkgc2V0IGNvbG9yKGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY29sb3IgfSk7XG4gICAgfVxuXG4gICAgLyoqIFNpemUgb2YgcGFydGljbGVzIChkZWZhdWx0OiByYW5kb21pemVkIGJldHdlZW4gMCBhbmQgMSkgKi9cbiAgICBASW5wdXQoKSBzZXQgc2l6ZShzaXplOiBudW1iZXIgfCBGbG9hdDMyQXJyYXkpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzaXplIH0pO1xuICAgIH1cblxuICAgIC8qKiBUaGUgc3BhY2UgdGhlIHBhcnRpY2xlcyBvY2N1cHkgKGRlZmF1bHQ6IDEpICovXG4gICAgQElucHV0KCkgc2V0IHNjYWxlKHNjYWxlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBUSFJFRS5WZWN0b3IzKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NhbGUgfSk7XG4gICAgfVxuXG4gICAgLyoqIE1vdmVtZW50IGZhY3RvciAoZGVmYXVsdDogMSkgKi9cbiAgICBASW5wdXQoKSBzZXQgbm9pc2Uobm9pc2U6IG51bWJlciB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFRIUkVFLlZlY3RvcjMgfCBGbG9hdDMyQXJyYXkpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBub2lzZSB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCkge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIG5vaXNlOiAxLFxuICAgICAgICAgICAgY291bnQ6IDEwMCxcbiAgICAgICAgICAgIHNwZWVkOiAxLFxuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIHNjYWxlOiAxLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ3Bvc2l0aW9ucycsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ2NvdW50JywgJ3NjYWxlJ10sICh7IGNvdW50LCBzY2FsZSB9KSA9PlxuICAgICAgICAgICAgICAgIEZsb2F0MzJBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoKSA9PiBub3JtYWxpemVWZWN0b3Ioc2NhbGUpLm1hcChNYXRoVXRpbHMucmFuZEZsb2F0U3ByZWFkKSkuZmxhdCgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdCgnc2l6ZXMnLCB0aGlzLmdldEF0dHJpYnV0ZSQ8bnVtYmVyPignc2l6ZScsIHsgc2V0RGVmYXVsdDogTWF0aC5yYW5kb20gfSkpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoJ29wYWNpdGllcycsIHRoaXMuZ2V0QXR0cmlidXRlJDxudW1iZXI+KCdvcGFjaXR5JykpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoJ3NwZWVkcycsIHRoaXMuZ2V0QXR0cmlidXRlJDxudW1iZXI+KCdzcGVlZCcpKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ25vaXNlcycsXG4gICAgICAgICAgICB0aGlzLmdldEF0dHJpYnV0ZSQ8bnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgVEhSRUUuVmVjdG9yMyB8IEZsb2F0MzJBcnJheT4oJ25vaXNlJywge1xuICAgICAgICAgICAgICAgIGNvdW50VmFsdWU6IChfLCBjb3VudCkgPT4gY291bnQgKiAzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ2NvbG9ycycsXG4gICAgICAgICAgICB0aGlzLmdldEF0dHJpYnV0ZSQ8VEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbj4oJ2NvbG9yJywge1xuICAgICAgICAgICAgICAgIGtleVZhbHVlOiAoY29sb3IpID0+ICghaXNGbG9hdDMyQXJyYXkoY29sb3IpID8gbmV3IENvbG9yKGNvbG9yKSA6IGNvbG9yKSxcbiAgICAgICAgICAgICAgICBjb3VudFZhbHVlOiAoY29sb3IsIGNvdW50KSA9PiAoY29sb3IgPT09IHVuZGVmaW5lZCA/IGNvdW50ICogMyA6IGNvdW50KSxcbiAgICAgICAgICAgICAgICBzZXREZWZhdWx0OiAoKSA9PiAxLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMub25CZWZvcmVSZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJlZm9yZVJlbmRlcih7IGNsb2NrIH06IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIGlmICghdGhpcy5tYXRlcmlhbFJlZi5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgICAgIHRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudC51bmlmb3Jtc1sndGltZSddLnZhbHVlID0gY2xvY2suZWxhcHNlZFRpbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBdHRyaWJ1dGUkPFRWYWx1ZT4oXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBvcHRpb25zPzoge1xuICAgICAgICAgICAga2V5VmFsdWU/OiAodmFsdWU6IFRWYWx1ZSwgY291bnQ6IG51bWJlcikgPT4gVFZhbHVlO1xuICAgICAgICAgICAgY291bnRWYWx1ZT86ICh2YWx1ZTogVFZhbHVlLCBjb3VudDogbnVtYmVyKSA9PiBudW1iZXI7XG4gICAgICAgICAgICBzZXREZWZhdWx0PzogKHZhbHVlOiBUVmFsdWUpID0+IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IE9ic2VydmFibGU8RmxvYXQzMkFycmF5PiB7XG4gICAgICAgIG9wdGlvbnMgPz89IHt9O1xuICAgICAgICBpZiAoIW9wdGlvbnMua2V5VmFsdWUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMua2V5VmFsdWUgPSAodmFsdWUpID0+IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvdW50VmFsdWUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuY291bnRWYWx1ZSA9IChfLCBjb3VudCkgPT4gY291bnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0KGtleSkucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldChrZXkpIHx8IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNlbGVjdCgnY291bnQnKSksXG4gICAgICAgICAgICBtYXAoKFt2YWx1ZSwgY291bnRdKSA9PlxuICAgICAgICAgICAgICAgIHVzZVByb3BBc0lzT3JBc0F0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyEuY291bnRWYWx1ZSEodmFsdWUsIGNvdW50KSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyEua2V5VmFsdWUhKHZhbHVlLCBjb3VudCksXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/LnNldERlZmF1bHRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { injectBeforeRender } from 'angular-three';
|
|
2
|
-
import { combineLatest, startWith } from 'rxjs';
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
const isSpotLight = (child) => {
|
|
5
|
-
return child?.isSpotLight;
|
|
6
|
-
};
|
|
7
|
-
export function injectShadowMeshCommon(spotLight, mesh, width, height, distance) {
|
|
8
|
-
const pos = new THREE.Vector3();
|
|
9
|
-
const dir = new THREE.Vector3();
|
|
10
|
-
const commonEffect = (instance) => {
|
|
11
|
-
instance.hold(combineLatest([
|
|
12
|
-
spotLight.$,
|
|
13
|
-
instance.select('width').pipe(startWith(width)),
|
|
14
|
-
instance.select('height').pipe(startWith(height)),
|
|
15
|
-
]), ([light, width, height]) => {
|
|
16
|
-
if (isSpotLight(light)) {
|
|
17
|
-
console.log('[NGTS] SpotLight instance -->', light);
|
|
18
|
-
light.shadow.mapSize.set(width, height);
|
|
19
|
-
light.shadow.needsUpdate = true;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
throw new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
injectBeforeRender(() => {
|
|
27
|
-
if (!spotLight.nativeElement)
|
|
28
|
-
return;
|
|
29
|
-
const A = spotLight.nativeElement.position;
|
|
30
|
-
const B = spotLight.nativeElement.target.position;
|
|
31
|
-
dir.copy(B).sub(A);
|
|
32
|
-
const len = dir.length();
|
|
33
|
-
dir.normalize().multiplyScalar(len * distance);
|
|
34
|
-
pos.copy(A).add(dir);
|
|
35
|
-
if (mesh.nativeElement) {
|
|
36
|
-
mesh.nativeElement.position.copy(pos);
|
|
37
|
-
mesh.nativeElement.lookAt(spotLight.nativeElement.target.position);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
return commonEffect;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3Nwb3QtbGlnaHQvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBOEIsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUE0QixFQUE0QixFQUFFO0lBQzNFLE9BQVEsS0FBeUIsRUFBRSxXQUFXLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxTQUEwQyxFQUMxQyxJQUFnQyxFQUNoQyxLQUFhLEVBQ2IsTUFBYyxFQUNkLFFBQWdCO0lBRWhCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWhDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBb0IsRUFBRSxFQUFFO1FBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQ1QsYUFBYSxDQUFDO1lBQ1YsU0FBUyxDQUFDLENBQUM7WUFDWCxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BELENBQUMsRUFDRixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO2FBQ3RGO1FBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUVyQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFbEQsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEU7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEluamVjdGVkUmVmLCBOZ3RSeFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuY29uc3QgaXNTcG90TGlnaHQgPSAoY2hpbGQ6IFRIUkVFLk9iamVjdDNEIHwgbnVsbCk6IGNoaWxkIGlzIFRIUkVFLlNwb3RMaWdodCA9PiB7XG4gICAgcmV0dXJuIChjaGlsZCBhcyBUSFJFRS5TcG90TGlnaHQpPy5pc1Nwb3RMaWdodDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTaGFkb3dNZXNoQ29tbW9uKFxuICAgIHNwb3RMaWdodDogTmd0SW5qZWN0ZWRSZWY8VEhSRUUuU3BvdExpZ2h0PixcbiAgICBtZXNoOiBOZ3RJbmplY3RlZFJlZjxUSFJFRS5NZXNoPixcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIGRpc3RhbmNlOiBudW1iZXJcbikge1xuICAgIGNvbnN0IHBvcyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgY29uc3QgZGlyID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgIGNvbnN0IGNvbW1vbkVmZmVjdCA9IChpbnN0YW5jZTogTmd0UnhTdG9yZSkgPT4ge1xuICAgICAgICBpbnN0YW5jZS5ob2xkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgc3BvdExpZ2h0LiQsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0KCd3aWR0aCcpLnBpcGUoc3RhcnRXaXRoKHdpZHRoKSksXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0KCdoZWlnaHQnKS5waXBlKHN0YXJ0V2l0aChoZWlnaHQpKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKFtsaWdodCwgd2lkdGgsIGhlaWdodF0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTcG90TGlnaHQobGlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbTkdUU10gU3BvdExpZ2h0IGluc3RhbmNlIC0tPicsIGxpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgbGlnaHQuc2hhZG93Lm1hcFNpemUuc2V0KHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBsaWdodC5zaGFkb3cubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignPG5ndHMtc3BvdC1saWdodC1zaGFkb3c+IG11c3QgYmUgYSBjaGlsZCBvZiBhIDxuZ3RzLXNwb3QtbGlnaHQ+Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuICAgICAgICBpZiAoIXNwb3RMaWdodC5uYXRpdmVFbGVtZW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgQSA9IHNwb3RMaWdodC5uYXRpdmVFbGVtZW50LnBvc2l0aW9uO1xuICAgICAgICBjb25zdCBCID0gc3BvdExpZ2h0Lm5hdGl2ZUVsZW1lbnQudGFyZ2V0LnBvc2l0aW9uO1xuXG4gICAgICAgIGRpci5jb3B5KEIpLnN1YihBKTtcbiAgICAgICAgY29uc3QgbGVuID0gZGlyLmxlbmd0aCgpO1xuICAgICAgICBkaXIubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIobGVuICogZGlzdGFuY2UpO1xuICAgICAgICBwb3MuY29weShBKS5hZGQoZGlyKTtcblxuICAgICAgICBpZiAobWVzaC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBtZXNoLm5hdGl2ZUVsZW1lbnQucG9zaXRpb24uY29weShwb3MpO1xuICAgICAgICAgICAgbWVzaC5uYXRpdmVFbGVtZW50Lmxvb2tBdChzcG90TGlnaHQubmF0aXZlRWxlbWVudC50YXJnZXQucG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tbW9uRWZmZWN0O1xufVxuIl19
|