angular-three-soba 1.14.0 → 2.0.0-beta.2
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/{lib/billboard → billboard}/billboard.d.ts +14 -4
- package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +25 -0
- package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +25 -0
- package/abstractions/{lib/edges → edges}/edges.d.ts +11 -7
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-helper.d.ts +16 -23
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +30 -0
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +32 -0
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/gizmo-viewcube.d.ts +2 -3
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport-axis.d.ts +28 -9
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport.d.ts +23 -4
- package/abstractions/index.d.ts +11 -11
- package/abstractions/line/line-input.d.ts +42 -0
- package/abstractions/line/line.d.ts +35 -0
- package/abstractions/{lib/quadratic-bezier-line → quadratic-bezier-line}/quadratic-bezier-line.d.ts +12 -8
- package/abstractions/text/text.d.ts +77 -0
- package/abstractions/text-3d/text-3d.d.ts +74 -0
- package/cameras/{lib/camera → camera}/camera-content.d.ts +1 -1
- package/cameras/{lib/camera → camera}/camera.d.ts +12 -8
- package/cameras/cube-camera/cube-camera.d.ts +42 -0
- package/cameras/index.d.ts +5 -4
- package/cameras/{lib/orthographic-camera → orthographic-camera}/orthographic-camera.d.ts +14 -5
- package/controls/index.d.ts +1 -1
- package/controls/{lib/orbit-controls → orbit-controls}/orbit-controls.d.ts +19 -11
- package/esm2022/abstractions/angular-three-soba-abstractions.mjs +1 -1
- package/esm2022/abstractions/billboard/billboard.mjs +71 -0
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +131 -0
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +113 -0
- package/esm2022/abstractions/edges/edges.mjs +93 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +210 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +95 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +155 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +62 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +80 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +206 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +273 -0
- package/esm2022/abstractions/index.mjs +12 -12
- package/esm2022/abstractions/line/line-input.mjs +113 -0
- package/esm2022/abstractions/line/line.mjs +165 -0
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +128 -0
- package/esm2022/abstractions/text/text.mjs +275 -0
- package/esm2022/abstractions/text-3d/text-3d.mjs +167 -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 +21 -0
- package/esm2022/cameras/camera/camera.mjs +71 -0
- package/esm2022/cameras/cube-camera/cube-camera.mjs +131 -0
- package/esm2022/cameras/index.mjs +6 -5
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +99 -0
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +47 -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 +165 -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 +33 -0
- package/esm2022/loaders/index.mjs +5 -6
- package/esm2022/loaders/loader/loader.mjs +133 -0
- package/esm2022/loaders/progress/progress.mjs +52 -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 +6 -6
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +73 -0
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +383 -0
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +168 -0
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +257 -0
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +66 -0
- package/esm2022/misc/angular-three-soba-misc.mjs +1 -1
- package/esm2022/misc/animations/animations.mjs +55 -0
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +46 -0
- package/esm2022/misc/fbo/fbo.mjs +47 -0
- package/esm2022/misc/index.mjs +5 -5
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +46 -0
- package/esm2022/performance/adaptive/adaptive-events.mjs +31 -0
- package/esm2022/performance/angular-three-soba-performance.mjs +1 -1
- package/esm2022/performance/detailed/detailed.mjs +61 -0
- package/esm2022/performance/index.mjs +7 -5
- package/esm2022/performance/instances/instance.mjs +48 -0
- package/esm2022/performance/instances/instances.mjs +189 -0
- package/esm2022/performance/instances/position-mesh.mjs +52 -0
- package/esm2022/performance/stats/stats.mjs +79 -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-material/caustics-material.mjs +128 -0
- package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +33 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
- package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
- package/esm2022/shaders/index.mjs +15 -15
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +55 -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 +33 -0
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +47 -0
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
- package/esm2022/shaders/star-field-material/star-field-material.mjs +32 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +283 -0
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +208 -0
- package/esm2022/staging/angular-three-soba-staging.mjs +1 -1
- package/esm2022/staging/bounds/bounds.mjs +307 -0
- package/esm2022/staging/camera-shake/camera-shake.mjs +117 -0
- package/esm2022/staging/caustics/caustisc.mjs +384 -0
- package/esm2022/staging/center/center.mjs +148 -0
- package/esm2022/staging/cloud/cloud.mjs +164 -0
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +249 -0
- package/esm2022/staging/environment/assets.mjs +13 -0
- package/esm2022/staging/environment/environment-cube.mjs +49 -0
- package/esm2022/staging/environment/environment-ground.mjs +43 -0
- package/esm2022/staging/environment/environment-input.mjs +106 -0
- package/esm2022/staging/environment/environment-map.mjs +53 -0
- package/esm2022/staging/environment/environment-portal.mjs +135 -0
- package/esm2022/staging/environment/environment.mjs +78 -0
- package/esm2022/staging/environment/utils.mjs +84 -0
- package/esm2022/staging/float/float.mjs +82 -0
- package/esm2022/staging/index.mjs +18 -18
- package/esm2022/staging/sky/sky.mjs +114 -0
- package/esm2022/staging/sparkles/sparkles.mjs +161 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +75 -0
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +57 -0
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +256 -0
- package/esm2022/staging/spot-light/spot-light.mjs +94 -0
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +101 -0
- package/esm2022/staging/stage/stage.mjs +374 -0
- package/esm2022/staging/stars/stars.mjs +148 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +1116 -890
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +126 -122
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +72 -54
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +147 -131
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +340 -258
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +140 -123
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performance.mjs +383 -106
- package/fesm2022/angular-three-soba-performance.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +57 -9
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +1609 -1561
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba.mjs.map +1 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +9 -0
- package/loaders/index.d.ts +4 -5
- package/loaders/{lib/loader → loader}/loader.d.ts +20 -15
- package/loaders/progress/progress.d.ts +9 -0
- package/loaders/texture-loader/texture-loader.d.ts +7 -0
- package/materials/index.d.ts +5 -5
- package/materials/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +11 -5
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +81 -0
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +50 -0
- package/materials/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +51 -6
- package/materials/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +9 -3
- package/misc/animations/animations.d.ts +13 -0
- package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
- package/misc/depth-buffer/depth-buffer.d.ts +9 -0
- package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
- package/misc/index.d.ts +4 -4
- package/package.json +19 -17
- package/performance/{lib/adaptive → adaptive}/adaptive-dpr.d.ts +4 -7
- package/performance/{lib/adaptive → adaptive}/adaptive-events.d.ts +2 -6
- package/performance/detailed/detailed.d.ts +20 -0
- package/performance/index.d.ts +6 -4
- package/performance/instances/instance.d.ts +9 -0
- package/performance/instances/instances.d.ts +35 -0
- package/performance/instances/position-mesh.d.ts +10 -0
- package/performance/{lib/stats → stats}/stats.d.ts +10 -7
- package/plugin/package.json +1 -1
- package/plugin/src/generators/init/compat.js.map +1 -1
- package/plugin/src/generators/init/init.d.ts +1 -1
- package/plugin/src/generators/init/init.js +1 -1
- package/plugin/src/generators/init/init.js.map +1 -1
- package/plugin/src/index.js.map +1 -1
- package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
- package/shaders/index.d.ts +14 -14
- package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +1 -1
- package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
- package/shaders/{lib/soft-shadow-material → soft-shadow-material}/soft-shadow-material.d.ts +2 -2
- package/shaders/sparkles-material/sparkles-material.d.ts +3 -0
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/accumulative-shadows.d.ts +55 -17
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/randomized-lights.d.ts +45 -10
- package/staging/{lib/bounds → bounds}/bounds.d.ts +32 -22
- package/staging/{lib/camera-shake → camera-shake}/camera-shake.d.ts +15 -11
- package/staging/{lib/caustics/caustics.d.ts → caustics/caustisc.d.ts} +36 -13
- package/staging/{lib/center → center}/center.d.ts +30 -8
- package/staging/cloud/cloud.d.ts +48 -0
- package/staging/{lib/contact-shadows → contact-shadows}/contact-shadows.d.ts +38 -10
- package/staging/environment/environment-cube.d.ts +11 -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 +11 -0
- package/staging/{lib/environment → environment}/environment-portal.d.ts +5 -7
- package/staging/{lib/environment → environment}/environment.d.ts +2 -2
- package/staging/environment/utils.d.ts +7 -0
- package/staging/float/float.d.ts +27 -0
- package/staging/index.d.ts +17 -17
- package/staging/{lib/sky → sky}/sky.d.ts +26 -5
- package/staging/{lib/sparkles → sparkles}/sparkles.d.ts +30 -10
- package/staging/{lib/spot-light → spot-light}/spot-light-input.d.ts +24 -2
- package/staging/{lib/spot-light/shadow-mesh-input.d.ts → spot-light/spot-light-shadow-mesh-input.d.ts} +18 -3
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +38 -0
- package/staging/{lib/spot-light → spot-light}/spot-light.d.ts +11 -5
- package/staging/{lib/spot-light → spot-light}/volumetric-mesh.d.ts +8 -5
- package/staging/{lib/stage → stage}/stage.d.ts +33 -14
- package/staging/{lib/stars → stars}/stars.d.ts +21 -7
- 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/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/line/line-input.d.ts +0 -19
- package/abstractions/lib/line/line.d.ts +0 -21
- 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/cube-camera/cube-camera.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/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/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/progress/progress.d.ts +0 -16
- package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
- 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/misc/lib/animations/animations.d.ts +0 -13
- package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
- package/performance/lib/detailed/detailed.d.ts +0 -13
- package/staging/lib/cloud/cloud.d.ts +0 -23
- 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/utils.d.ts +0 -8
- package/staging/lib/float/float.d.ts +0 -16
- package/staging/lib/spot-light/common.d.ts +0 -3
- 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/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/constants.d.ts +0 -0
- /package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +0 -0
- /package/plugin/{README.md → libs/plugin/README.md} +0 -0
- /package/shaders/{lib/caustics-material → caustics-material}/caustics-material.d.ts +0 -0
- /package/shaders/{lib/caustics-projection-material → caustics-material}/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
- /package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +0 -0
- /package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +0 -0
- /package/shaders/{lib/spot-light-material → spot-light-material}/spot-light-material.d.ts +0 -0
- /package/shaders/{lib/star-field-material → star-field-material}/star-field-material.d.ts +0 -0
- /package/staging/{lib/environment → environment}/assets.d.ts +0 -0
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Component, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
|
|
2
|
-
import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtStore, startWithUndefined } from 'angular-three';
|
|
3
|
-
import { SpotLightMaterial } from 'angular-three-soba/shaders';
|
|
4
|
-
import { combineLatest, map } from 'rxjs';
|
|
5
|
-
import * as THREE from 'three';
|
|
6
|
-
import { Mesh } from 'three';
|
|
7
|
-
import { NgtsSpotLightInput } from './spot-light-input';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
extend({ Mesh });
|
|
10
|
-
class NgtsVolumetricMesh extends NgtsSpotLightInput {
|
|
11
|
-
initialize() {
|
|
12
|
-
super.initialize();
|
|
13
|
-
this.set({ opacity: 1, color: 'white', distance: 5, angle: 0.15, attenuation: 5, anglePower: 5 });
|
|
14
|
-
}
|
|
15
|
-
constructor() {
|
|
16
|
-
super();
|
|
17
|
-
this.mesh = injectNgtRef();
|
|
18
|
-
this.material = new SpotLightMaterial();
|
|
19
|
-
this.nullRaycast = () => null;
|
|
20
|
-
this.vec = new THREE.Vector3();
|
|
21
|
-
this.store = inject(NgtStore);
|
|
22
|
-
this.connect('normalizedRadiusTop', this.select('radiusTop').pipe(startWithUndefined(), map((radiusTop) => (radiusTop === undefined ? 0.1 : radiusTop))));
|
|
23
|
-
this.connect('normalizedRadiusBottom', combineLatest([this.select('radiusBottom').pipe(startWithUndefined()), this.select('angle')]).pipe(map(([radiusBottom, angle]) => (radiusBottom === undefined ? angle * 7 : radiusBottom))));
|
|
24
|
-
this.connect('geometry', combineLatest([
|
|
25
|
-
this.select('normalizedRadiusTop'),
|
|
26
|
-
this.select('normalizedRadiusBottom'),
|
|
27
|
-
this.select('distance'),
|
|
28
|
-
]).pipe(map(([radiusTop, radiusBottom, distance]) => {
|
|
29
|
-
const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);
|
|
30
|
-
geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));
|
|
31
|
-
geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));
|
|
32
|
-
return geometry;
|
|
33
|
-
})));
|
|
34
|
-
this.connect('cameraNear', this.store.select('camera').pipe(map((camera) => camera.near)));
|
|
35
|
-
this.connect('cameraFar', this.store.select('camera').pipe(map((camera) => camera.far)));
|
|
36
|
-
this.connect('resolution', combineLatest([
|
|
37
|
-
this.select('depthBuffer').pipe(startWithUndefined()),
|
|
38
|
-
this.store.select('size'),
|
|
39
|
-
this.store.select('viewport', 'dpr'),
|
|
40
|
-
]).pipe(map(([depthBuffer, size, dpr]) => (depthBuffer ? [size.width * dpr, size.height * dpr] : [0, 0]))));
|
|
41
|
-
injectBeforeRender(() => {
|
|
42
|
-
this.material.uniforms['spotPosition'].value.copy(this.mesh.nativeElement.getWorldPosition(this.vec));
|
|
43
|
-
this.mesh.nativeElement.lookAt(this.mesh.nativeElement.parent.target.getWorldPosition(this.vec));
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", usesInheritance: true, ngImport: i0, template: `
|
|
48
|
-
<ngt-mesh [ref]="mesh" [geometry]="get('geometry')" [raycast]="nullRaycast">
|
|
49
|
-
<ngt-primitive *args="[material]" attach="material">
|
|
50
|
-
<ngt-value [rawValue]="get('opacity')" attach="uniforms.opacity.value" />
|
|
51
|
-
<ngt-value [rawValue]="get('color')" attach="uniforms.lightColor.value" />
|
|
52
|
-
<ngt-value [rawValue]="get('attenuation')" attach="uniforms.attenuation.value" />
|
|
53
|
-
<ngt-value [rawValue]="get('anglePower')" attach="uniforms.anglePower.value" />
|
|
54
|
-
<ngt-value [rawvalue]="get('depthBuffer')" attach="uniforms.depth.value" />
|
|
55
|
-
<ngt-value [rawvalue]="get('cameraNear')" attach="uniforms.cameraNear.value" />
|
|
56
|
-
<ngt-value [rawvalue]="get('cameraFar')" attach="uniforms.cameraFar.value" />
|
|
57
|
-
<ngt-value [rawvalue]="get('resolution')" attach="uniforms.resolution.value" />
|
|
58
|
-
</ngt-primitive>
|
|
59
|
-
</ngt-mesh>
|
|
60
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
|
|
61
|
-
}
|
|
62
|
-
export { NgtsVolumetricMesh };
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
|
|
64
|
-
type: Component,
|
|
65
|
-
args: [{
|
|
66
|
-
selector: 'ngts-volumetric-mesh',
|
|
67
|
-
standalone: true,
|
|
68
|
-
template: `
|
|
69
|
-
<ngt-mesh [ref]="mesh" [geometry]="get('geometry')" [raycast]="nullRaycast">
|
|
70
|
-
<ngt-primitive *args="[material]" attach="material">
|
|
71
|
-
<ngt-value [rawValue]="get('opacity')" attach="uniforms.opacity.value" />
|
|
72
|
-
<ngt-value [rawValue]="get('color')" attach="uniforms.lightColor.value" />
|
|
73
|
-
<ngt-value [rawValue]="get('attenuation')" attach="uniforms.attenuation.value" />
|
|
74
|
-
<ngt-value [rawValue]="get('anglePower')" attach="uniforms.anglePower.value" />
|
|
75
|
-
<ngt-value [rawvalue]="get('depthBuffer')" attach="uniforms.depth.value" />
|
|
76
|
-
<ngt-value [rawvalue]="get('cameraNear')" attach="uniforms.cameraNear.value" />
|
|
77
|
-
<ngt-value [rawvalue]="get('cameraFar')" attach="uniforms.cameraFar.value" />
|
|
78
|
-
<ngt-value [rawvalue]="get('resolution')" attach="uniforms.resolution.value" />
|
|
79
|
-
</ngt-primitive>
|
|
80
|
-
</ngt-mesh>
|
|
81
|
-
`,
|
|
82
|
-
imports: [NgtArgs],
|
|
83
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
84
|
-
}]
|
|
85
|
-
}], ctorParameters: function () { return []; } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9sdW1ldHJpYy1tZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3Nwb3QtbGlnaHQvdm9sdW1ldHJpYy1tZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFeEQsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUVqQixNQW9CYSxrQkFBbUIsU0FBUSxrQkFBa0I7SUFRN0MsVUFBVTtRQUNmLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBYkgsU0FBSSxHQUFHLFlBQVksRUFBYyxDQUFD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QztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFN0b3JlLCBzdGFydFdpdGhVbmRlZmluZWQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFNwb3RMaWdodE1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c1Nwb3RMaWdodElucHV0IH0gZnJvbSAnLi9zcG90LWxpZ2h0LWlucHV0JztcblxuZXh0ZW5kKHsgTWVzaCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXZvbHVtZXRyaWMtbWVzaCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW1lc2ggW3JlZl09XCJtZXNoXCIgW2dlb21ldHJ5XT1cImdldCgnZ2VvbWV0cnknKVwiIFtyYXljYXN0XT1cIm51bGxSYXljYXN0XCI+XG4gICAgICAgICAgICA8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbF1cIiBhdHRhY2g9XCJtYXRlcmlhbFwiPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnb3BhY2l0eScpXCIgYXR0YWNoPVwidW5pZm9ybXMub3BhY2l0eS52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdjb2xvcicpXCIgYXR0YWNoPVwidW5pZm9ybXMubGlnaHRDb2xvci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdhdHRlbnVhdGlvbicpXCIgYXR0YWNoPVwidW5pZm9ybXMuYXR0ZW51YXRpb24udmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnYW5nbGVQb3dlcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuYW5nbGVQb3dlci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdkZXB0aEJ1ZmZlcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuZGVwdGgudmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cImdldCgnY2FtZXJhTmVhcicpXCIgYXR0YWNoPVwidW5pZm9ybXMuY2FtZXJhTmVhci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdjYW1lcmFGYXInKVwiIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYUZhci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwiZ2V0KCdyZXNvbHV0aW9uJylcIiBhdHRhY2g9XCJ1bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlXCIgLz5cbiAgICAgICAgICAgIDwvbmd0LXByaW1pdGl2ZT5cbiAgICAgICAgPC9uZ3QtbWVzaD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNWb2x1bWV0cmljTWVzaCBleHRlbmRzIE5ndHNTcG90TGlnaHRJbnB1dCB7XG4gICAgcmVhZG9ubHkgbWVzaCA9IGluamVjdE5ndFJlZjxUSFJFRS5NZXNoPigpO1xuICAgIHJlYWRvbmx5IG1hdGVyaWFsID0gbmV3IFNwb3RMaWdodE1hdGVyaWFsKCk7XG4gICAgcmVhZG9ubHkgbnVsbFJheWNhc3QgPSAoKSA9PiBudWxsO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB2ZWMgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7IG9wYWNpdHk6IDEsIGNvbG9yOiAnd2hpdGUnLCBkaXN0YW5jZTogNSwgYW5nbGU6IDAuMTUsIGF0dGVudWF0aW9uOiA1LCBhbmdsZVBvd2VyOiA1IH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnbm9ybWFsaXplZFJhZGl1c1RvcCcsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdCgncmFkaXVzVG9wJykucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGhVbmRlZmluZWQoKSxcbiAgICAgICAgICAgICAgICBtYXAoKHJhZGl1c1RvcCkgPT4gKHJhZGl1c1RvcCA9PT0gdW5kZWZpbmVkID8gMC4xIDogcmFkaXVzVG9wKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ25vcm1hbGl6ZWRSYWRpdXNCb3R0b20nLFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3JhZGl1c0JvdHRvbScpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLCB0aGlzLnNlbGVjdCgnYW5nbGUnKV0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChbcmFkaXVzQm90dG9tLCBhbmdsZV0pID0+IChyYWRpdXNCb3R0b20gPT09IHVuZGVmaW5lZCA/IGFuZ2xlICogNyA6IHJhZGl1c0JvdHRvbSkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ2dlb21ldHJ5JyxcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdub3JtYWxpemVkUmFkaXVzVG9wJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ25vcm1hbGl6ZWRSYWRpdXNCb3R0b20nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnZGlzdGFuY2UnKSxcbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChbcmFkaXVzVG9wLCByYWRpdXNCb3R0b20sIGRpc3RhbmNlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBUSFJFRS5DeWxpbmRlckdlb21ldHJ5KHJhZGl1c1RvcCwgcmFkaXVzQm90dG9tLCBkaXN0YW5jZSwgMTI4LCA2NCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgVEhSRUUuTWF0cml4NCgpLm1ha2VUcmFuc2xhdGlvbigwLCAtZGlzdGFuY2UgLyAyLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgVEhSRUUuTWF0cml4NCgpLm1ha2VSb3RhdGlvblgoLU1hdGguUEkgLyAyKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdCgnY2FtZXJhTmVhcicsIHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKS5waXBlKG1hcCgoY2FtZXJhKSA9PiBjYW1lcmEubmVhcikpKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KCdjYW1lcmFGYXInLCB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJykucGlwZShtYXAoKGNhbWVyYSkgPT4gY2FtZXJhLmZhcikpKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2RlcHRoQnVmZmVyJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgndmlld3BvcnQnLCAnZHByJyksXG4gICAgICAgICAgICBdKS5waXBlKG1hcCgoW2RlcHRoQnVmZmVyLCBzaXplLCBkcHJdKSA9PiAoZGVwdGhCdWZmZXIgPyBbc2l6ZS53aWR0aCAqIGRwciwgc2l6ZS5oZWlnaHQgKiBkcHJdIDogWzAsIDBdKSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWwudW5pZm9ybXNbJ3Nwb3RQb3NpdGlvbiddLnZhbHVlLmNvcHkodGhpcy5tZXNoLm5hdGl2ZUVsZW1lbnQuZ2V0V29ybGRQb3NpdGlvbih0aGlzLnZlYykpO1xuICAgICAgICAgICAgdGhpcy5tZXNoLm5hdGl2ZUVsZW1lbnQubG9va0F0KFxuICAgICAgICAgICAgICAgICh0aGlzLm1lc2gubmF0aXZlRWxlbWVudC5wYXJlbnQgYXMgVEhSRUUuU3BvdExpZ2h0KS50YXJnZXQuZ2V0V29ybGRQb3NpdGlvbih0aGlzLnZlYylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,368 +0,0 @@
|
|
|
1
|
-
import { NgIf } from '@angular/common';
|
|
2
|
-
import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, Directive, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
3
|
-
import { extend, NgtArgs, NgtRxStore } from 'angular-three';
|
|
4
|
-
import { map } from 'rxjs';
|
|
5
|
-
import { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';
|
|
6
|
-
import { NgtsAccumulativeShadows } from '../accumulative-shadows/accumulative-shadows';
|
|
7
|
-
import { NgtsRandomizedLights } from '../accumulative-shadows/randomized-lights';
|
|
8
|
-
import { NgtsBounds, NGTS_BOUNDS_API } from '../bounds/bounds';
|
|
9
|
-
import { NgtsCenter } from '../center/center';
|
|
10
|
-
import { NgtsContactShadows } from '../contact-shadows/contact-shadows';
|
|
11
|
-
import { NgtsEnvironment } from '../environment/environment';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
const presets = {
|
|
14
|
-
rembrandt: {
|
|
15
|
-
main: [1, 2, 1],
|
|
16
|
-
fill: [-2, -0.5, -2],
|
|
17
|
-
},
|
|
18
|
-
portrait: {
|
|
19
|
-
main: [-1, 2, 0.5],
|
|
20
|
-
fill: [-1, 0.5, -1.5],
|
|
21
|
-
},
|
|
22
|
-
upfront: {
|
|
23
|
-
main: [0, 2, 1],
|
|
24
|
-
fill: [-1, 0.5, -1.5],
|
|
25
|
-
},
|
|
26
|
-
soft: {
|
|
27
|
-
main: [-2, 4, 4],
|
|
28
|
-
fill: [-1, 0.5, -1.5],
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
class NgtsStageRefit {
|
|
32
|
-
constructor() {
|
|
33
|
-
this.boundsApi = inject(NGTS_BOUNDS_API);
|
|
34
|
-
this.radius = 0;
|
|
35
|
-
this.adjustCamera = true;
|
|
36
|
-
}
|
|
37
|
-
ngOnChanges() {
|
|
38
|
-
if (this.adjustCamera) {
|
|
39
|
-
this.boundsApi.refresh().clip().fit();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
43
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: "radius", adjustCamera: "adjustCamera" }, usesOnChanges: true, ngImport: i0 }); }
|
|
44
|
-
}
|
|
45
|
-
export { NgtsStageRefit };
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStageRefit, decorators: [{
|
|
47
|
-
type: Directive,
|
|
48
|
-
args: [{ selector: 'ngts-stage-refit', standalone: true }]
|
|
49
|
-
}], propDecorators: { radius: [{
|
|
50
|
-
type: Input
|
|
51
|
-
}], adjustCamera: [{
|
|
52
|
-
type: Input
|
|
53
|
-
}] } });
|
|
54
|
-
extend({ AmbientLight, SpotLight, Vector2, PointLight, Group });
|
|
55
|
-
class NgtsStage extends NgtRxStore {
|
|
56
|
-
constructor() {
|
|
57
|
-
super(...arguments);
|
|
58
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
59
|
-
this.Number = Number;
|
|
60
|
-
this.centered = new EventEmitter();
|
|
61
|
-
}
|
|
62
|
-
set preset(preset) {
|
|
63
|
-
this.set({ preset });
|
|
64
|
-
}
|
|
65
|
-
set shadows(shadows) {
|
|
66
|
-
this.set({ shadows });
|
|
67
|
-
}
|
|
68
|
-
set adjustCamera(adjustCamera) {
|
|
69
|
-
this.set({ adjustCamera });
|
|
70
|
-
}
|
|
71
|
-
set environment(environment) {
|
|
72
|
-
this.set({ environment });
|
|
73
|
-
}
|
|
74
|
-
set intensity(intensity) {
|
|
75
|
-
this.set({ intensity });
|
|
76
|
-
}
|
|
77
|
-
set center(center) {
|
|
78
|
-
this.set({ center });
|
|
79
|
-
}
|
|
80
|
-
initialize() {
|
|
81
|
-
super.initialize();
|
|
82
|
-
this.set({
|
|
83
|
-
adjustCamera: true,
|
|
84
|
-
intensity: 0.5,
|
|
85
|
-
shadows: 'contact',
|
|
86
|
-
environment: 'city',
|
|
87
|
-
preset: 'rembrandt',
|
|
88
|
-
radius: 0,
|
|
89
|
-
width: 0,
|
|
90
|
-
height: 0,
|
|
91
|
-
depth: 0,
|
|
92
|
-
});
|
|
93
|
-
this.connect('config', this.select('preset').pipe(map((preset) => (typeof preset === 'string' ? presets[preset] : preset))));
|
|
94
|
-
this.connect('shadowsInfo', this.select('shadows').pipe(map((shadows) => {
|
|
95
|
-
return {
|
|
96
|
-
contactShadow: shadows === 'contact' || shadows?.type === 'contact',
|
|
97
|
-
accumulativeShadow: shadows === 'accumulative' || shadows?.type === 'accumulative',
|
|
98
|
-
shadowBias: shadows?.bias ?? -0.0001,
|
|
99
|
-
normalBias: shadows?.normalBias ?? 0,
|
|
100
|
-
shadowSize: shadows?.size ?? 1024,
|
|
101
|
-
shadowOffset: shadows?.offset ?? 0,
|
|
102
|
-
...(typeof shadows === 'string' ? {} : shadows || {}),
|
|
103
|
-
};
|
|
104
|
-
})));
|
|
105
|
-
this.connect('spotLightPosition', this.select(['config', 'radius'], ({ config, radius }) => [
|
|
106
|
-
config.main[0] * radius,
|
|
107
|
-
config.main[1] * radius,
|
|
108
|
-
config.main[2] * radius,
|
|
109
|
-
]));
|
|
110
|
-
this.connect('pointLightPosition', this.select(['config', 'radius'], ({ config, radius }) => [
|
|
111
|
-
config.fill[0] * radius,
|
|
112
|
-
config.fill[1] * radius,
|
|
113
|
-
config.fill[2] * radius,
|
|
114
|
-
]));
|
|
115
|
-
this.connect('environmentInfo', this.select('environment').pipe(map((environment) => {
|
|
116
|
-
if (!environment)
|
|
117
|
-
return null;
|
|
118
|
-
if (typeof environment === 'string')
|
|
119
|
-
return { preset: environment };
|
|
120
|
-
return environment;
|
|
121
|
-
})));
|
|
122
|
-
}
|
|
123
|
-
onCentered(props) {
|
|
124
|
-
const { boundingSphere, width, height, depth } = props;
|
|
125
|
-
this.set({ radius: boundingSphere.radius, width, height, depth });
|
|
126
|
-
this.cdr.detectChanges();
|
|
127
|
-
if (this.centered.observed)
|
|
128
|
-
this.centered.emit(props);
|
|
129
|
-
}
|
|
130
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { preset: "preset", shadows: "shadows", adjustCamera: "adjustCamera", environment: "environment", intensity: "intensity", center: "center" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
|
|
132
|
-
<ngt-ambient-light [intensity]="get('intensity')! / 3" />
|
|
133
|
-
<ngt-spot-light
|
|
134
|
-
[penumbra]="1"
|
|
135
|
-
[position]="get('spotLightPosition')"
|
|
136
|
-
[intensity]="get('intensity')! * 2"
|
|
137
|
-
[castShadow]="!!get('shadows')"
|
|
138
|
-
>
|
|
139
|
-
<ngt-value [rawValue]="get('shadowsInfo').shadowBias" attach="shadow.bias" />
|
|
140
|
-
<ngt-value [rawValue]="get('shadowsInfo').normalBias" attach="shadow.normalBias" />
|
|
141
|
-
<ngt-vector2
|
|
142
|
-
*args="[get('shadowsInfo').shadowSize, get('shadowsInfo').shadowSize]"
|
|
143
|
-
attach="shadow.mapSize"
|
|
144
|
-
/>
|
|
145
|
-
</ngt-spot-light>
|
|
146
|
-
<ngt-point-light [position]="get('pointLightPosition')" [intensity]="get('intensity')" />
|
|
147
|
-
|
|
148
|
-
<ngts-bounds
|
|
149
|
-
[fit]="!!get('adjustCamera')"
|
|
150
|
-
[clip]="!!get('adjustCamera')"
|
|
151
|
-
[margin]="Number(get('adjustCamera'))"
|
|
152
|
-
[observe]="true"
|
|
153
|
-
>
|
|
154
|
-
<ngts-stage-refit [radius]="get('radius')" [adjustCamera]="!!get('adjustCamera')" />
|
|
155
|
-
<ngts-center
|
|
156
|
-
[position]="[0, get('shadowsInfo').shadowOffset / 2, 0]"
|
|
157
|
-
[top]="!!get('center')?.top"
|
|
158
|
-
[right]="!!get('center')?.right"
|
|
159
|
-
[bottom]="!!get('center')?.bottom"
|
|
160
|
-
[left]="!!get('center')?.left"
|
|
161
|
-
[front]="!!get('center')?.front"
|
|
162
|
-
[back]="!!get('center')?.back"
|
|
163
|
-
[disableX]="!!get('center')?.disableX"
|
|
164
|
-
[disableY]="!!get('center')?.disableY"
|
|
165
|
-
[disableZ]="!!get('center')?.disableZ"
|
|
166
|
-
[precise]="!!get('center')?.precise"
|
|
167
|
-
(centered)="onCentered($event)"
|
|
168
|
-
>
|
|
169
|
-
<ng-content />
|
|
170
|
-
</ngts-center>
|
|
171
|
-
</ngts-bounds>
|
|
172
|
-
<ngt-group [position]="[0, -get('height') / 2 - get('shadowsInfo').shadowOffset / 2, 0]">
|
|
173
|
-
<ngts-contact-shadows
|
|
174
|
-
*ngIf="get('shadowsInfo').contactShadow"
|
|
175
|
-
[scale]="get('radius') * 4"
|
|
176
|
-
[far]="get('radius')"
|
|
177
|
-
[blur]="2"
|
|
178
|
-
[opacity]="get('shadowsInfo').opacity"
|
|
179
|
-
[width]="get('shadowsInfo').width"
|
|
180
|
-
[height]="get('shadowsInfo').height"
|
|
181
|
-
[smooth]="get('shadowsInfo').smooth"
|
|
182
|
-
[resolution]="get('shadowsInfo').resolution"
|
|
183
|
-
[frames]="get('shadowsInfo').frames"
|
|
184
|
-
[scale]="get('shadowsInfo').scale"
|
|
185
|
-
[color]="get('shadowsInfo').color"
|
|
186
|
-
[depthWrite]="get('shadowsInfo').depthWrite"
|
|
187
|
-
[renderOrder]="get('shadowsInfo').renderOrder"
|
|
188
|
-
/>
|
|
189
|
-
<ngts-accumulative-shadows
|
|
190
|
-
*ngIf="get('shadowsInfo').accumulativeShadow"
|
|
191
|
-
[temporal]="true"
|
|
192
|
-
[frames]="100"
|
|
193
|
-
[alphaTest]="0.9"
|
|
194
|
-
[toneMapped]="true"
|
|
195
|
-
[scale]="get('radius') * 4"
|
|
196
|
-
[opacity]="get('shadowsInfo').opacity"
|
|
197
|
-
[alphaTest]="get('shadowsInfo').alphaTest"
|
|
198
|
-
[color]="get('shadowsInfo').color"
|
|
199
|
-
[colorBlend]="get('shadowsInfo').colorBlend"
|
|
200
|
-
[resolution]="get('shadowsInfo').resolution"
|
|
201
|
-
>
|
|
202
|
-
<ngts-randomized-lights
|
|
203
|
-
[amount]="get('shadowsInfo').amount ?? 8"
|
|
204
|
-
[radius]="get('shadowsInfo').radius ?? get('radius')"
|
|
205
|
-
[ambient]="get('shadowsInfo').ambient ?? 0.5"
|
|
206
|
-
[intensity]="get('shadowsInfo').intensity ?? 1"
|
|
207
|
-
[position]="get('spotLightPosition')"
|
|
208
|
-
[size]="get('radius') * 4"
|
|
209
|
-
[bias]="-get('shadowsInfo').shadowBias"
|
|
210
|
-
[mapSize]="get('shadowsInfo').shadowSize"
|
|
211
|
-
/>
|
|
212
|
-
</ngts-accumulative-shadows>
|
|
213
|
-
</ngt-group>
|
|
214
|
-
<ngts-environment
|
|
215
|
-
*ngIf="get('environmentInfo')"
|
|
216
|
-
[frames]="get('environmentInfo').frames"
|
|
217
|
-
[near]="get('environmentInfo').near"
|
|
218
|
-
[far]="get('environmentInfo').far"
|
|
219
|
-
[resolution]="get('environmentInfo').resolution"
|
|
220
|
-
[background]="get('environmentInfo').background"
|
|
221
|
-
[blur]="get('environmentInfo').blur"
|
|
222
|
-
[map]="get('environmentInfo').map"
|
|
223
|
-
[files]="get('environmentInfo').files"
|
|
224
|
-
[path]="get('environmentInfo').path"
|
|
225
|
-
[preset]="get('environmentInfo').preset"
|
|
226
|
-
[scene]="get('environmentInfo').scene"
|
|
227
|
-
[extensions]="get('environmentInfo').extensions"
|
|
228
|
-
[ground]="get('environmentInfo').ground"
|
|
229
|
-
[encoding]="get('environmentInfo').encoding"
|
|
230
|
-
/>
|
|
231
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsBounds, selector: "ngts-bounds", inputs: ["boundsRef", "damping", "fit", "clip", "observe", "margin", "eps"], outputs: ["fitted"] }, { kind: "directive", type: NgtsStageRefit, selector: "ngts-stage-refit", inputs: ["radius", "adjustCamera"] }, { kind: "component", type: NgtsCenter, selector: "ngts-center", inputs: ["centerRef", "top", "right", "bottom", "left", "front", "back", "disableX", "disableY", "disableZ", "disabled", "precise"], outputs: ["centered"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsContactShadows, selector: "ngts-contact-shadows", inputs: ["contactShadowsRef", "opacity", "width", "height", "blur", "far", "smooth", "resolution", "frames", "scale", "color", "depthWrite", "renderOrder"] }, { kind: "component", type: NgtsAccumulativeShadows, selector: "ngts-accumulative-shadows", inputs: ["frames", "blend", "limit", "scale", "temporal", "opacity", "alphaTest", "color", "colorBlend", "resolution", "toneMapped"] }, { kind: "component", type: NgtsRandomizedLights, selector: "ngts-randomized-lights", inputs: ["lightsRef", "frames", "position", "radius", "amount", "intensity", "ambient", "castShadow", "bias", "mapSize", "size", "near", "far"] }, { kind: "component", type: NgtsEnvironment, selector: "ngts-environment" }] }); }
|
|
232
|
-
}
|
|
233
|
-
export { NgtsStage };
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsStage, decorators: [{
|
|
235
|
-
type: Component,
|
|
236
|
-
args: [{
|
|
237
|
-
selector: 'ngts-stage',
|
|
238
|
-
standalone: true,
|
|
239
|
-
template: `
|
|
240
|
-
<ngt-ambient-light [intensity]="get('intensity')! / 3" />
|
|
241
|
-
<ngt-spot-light
|
|
242
|
-
[penumbra]="1"
|
|
243
|
-
[position]="get('spotLightPosition')"
|
|
244
|
-
[intensity]="get('intensity')! * 2"
|
|
245
|
-
[castShadow]="!!get('shadows')"
|
|
246
|
-
>
|
|
247
|
-
<ngt-value [rawValue]="get('shadowsInfo').shadowBias" attach="shadow.bias" />
|
|
248
|
-
<ngt-value [rawValue]="get('shadowsInfo').normalBias" attach="shadow.normalBias" />
|
|
249
|
-
<ngt-vector2
|
|
250
|
-
*args="[get('shadowsInfo').shadowSize, get('shadowsInfo').shadowSize]"
|
|
251
|
-
attach="shadow.mapSize"
|
|
252
|
-
/>
|
|
253
|
-
</ngt-spot-light>
|
|
254
|
-
<ngt-point-light [position]="get('pointLightPosition')" [intensity]="get('intensity')" />
|
|
255
|
-
|
|
256
|
-
<ngts-bounds
|
|
257
|
-
[fit]="!!get('adjustCamera')"
|
|
258
|
-
[clip]="!!get('adjustCamera')"
|
|
259
|
-
[margin]="Number(get('adjustCamera'))"
|
|
260
|
-
[observe]="true"
|
|
261
|
-
>
|
|
262
|
-
<ngts-stage-refit [radius]="get('radius')" [adjustCamera]="!!get('adjustCamera')" />
|
|
263
|
-
<ngts-center
|
|
264
|
-
[position]="[0, get('shadowsInfo').shadowOffset / 2, 0]"
|
|
265
|
-
[top]="!!get('center')?.top"
|
|
266
|
-
[right]="!!get('center')?.right"
|
|
267
|
-
[bottom]="!!get('center')?.bottom"
|
|
268
|
-
[left]="!!get('center')?.left"
|
|
269
|
-
[front]="!!get('center')?.front"
|
|
270
|
-
[back]="!!get('center')?.back"
|
|
271
|
-
[disableX]="!!get('center')?.disableX"
|
|
272
|
-
[disableY]="!!get('center')?.disableY"
|
|
273
|
-
[disableZ]="!!get('center')?.disableZ"
|
|
274
|
-
[precise]="!!get('center')?.precise"
|
|
275
|
-
(centered)="onCentered($event)"
|
|
276
|
-
>
|
|
277
|
-
<ng-content />
|
|
278
|
-
</ngts-center>
|
|
279
|
-
</ngts-bounds>
|
|
280
|
-
<ngt-group [position]="[0, -get('height') / 2 - get('shadowsInfo').shadowOffset / 2, 0]">
|
|
281
|
-
<ngts-contact-shadows
|
|
282
|
-
*ngIf="get('shadowsInfo').contactShadow"
|
|
283
|
-
[scale]="get('radius') * 4"
|
|
284
|
-
[far]="get('radius')"
|
|
285
|
-
[blur]="2"
|
|
286
|
-
[opacity]="get('shadowsInfo').opacity"
|
|
287
|
-
[width]="get('shadowsInfo').width"
|
|
288
|
-
[height]="get('shadowsInfo').height"
|
|
289
|
-
[smooth]="get('shadowsInfo').smooth"
|
|
290
|
-
[resolution]="get('shadowsInfo').resolution"
|
|
291
|
-
[frames]="get('shadowsInfo').frames"
|
|
292
|
-
[scale]="get('shadowsInfo').scale"
|
|
293
|
-
[color]="get('shadowsInfo').color"
|
|
294
|
-
[depthWrite]="get('shadowsInfo').depthWrite"
|
|
295
|
-
[renderOrder]="get('shadowsInfo').renderOrder"
|
|
296
|
-
/>
|
|
297
|
-
<ngts-accumulative-shadows
|
|
298
|
-
*ngIf="get('shadowsInfo').accumulativeShadow"
|
|
299
|
-
[temporal]="true"
|
|
300
|
-
[frames]="100"
|
|
301
|
-
[alphaTest]="0.9"
|
|
302
|
-
[toneMapped]="true"
|
|
303
|
-
[scale]="get('radius') * 4"
|
|
304
|
-
[opacity]="get('shadowsInfo').opacity"
|
|
305
|
-
[alphaTest]="get('shadowsInfo').alphaTest"
|
|
306
|
-
[color]="get('shadowsInfo').color"
|
|
307
|
-
[colorBlend]="get('shadowsInfo').colorBlend"
|
|
308
|
-
[resolution]="get('shadowsInfo').resolution"
|
|
309
|
-
>
|
|
310
|
-
<ngts-randomized-lights
|
|
311
|
-
[amount]="get('shadowsInfo').amount ?? 8"
|
|
312
|
-
[radius]="get('shadowsInfo').radius ?? get('radius')"
|
|
313
|
-
[ambient]="get('shadowsInfo').ambient ?? 0.5"
|
|
314
|
-
[intensity]="get('shadowsInfo').intensity ?? 1"
|
|
315
|
-
[position]="get('spotLightPosition')"
|
|
316
|
-
[size]="get('radius') * 4"
|
|
317
|
-
[bias]="-get('shadowsInfo').shadowBias"
|
|
318
|
-
[mapSize]="get('shadowsInfo').shadowSize"
|
|
319
|
-
/>
|
|
320
|
-
</ngts-accumulative-shadows>
|
|
321
|
-
</ngt-group>
|
|
322
|
-
<ngts-environment
|
|
323
|
-
*ngIf="get('environmentInfo')"
|
|
324
|
-
[frames]="get('environmentInfo').frames"
|
|
325
|
-
[near]="get('environmentInfo').near"
|
|
326
|
-
[far]="get('environmentInfo').far"
|
|
327
|
-
[resolution]="get('environmentInfo').resolution"
|
|
328
|
-
[background]="get('environmentInfo').background"
|
|
329
|
-
[blur]="get('environmentInfo').blur"
|
|
330
|
-
[map]="get('environmentInfo').map"
|
|
331
|
-
[files]="get('environmentInfo').files"
|
|
332
|
-
[path]="get('environmentInfo').path"
|
|
333
|
-
[preset]="get('environmentInfo').preset"
|
|
334
|
-
[scene]="get('environmentInfo').scene"
|
|
335
|
-
[extensions]="get('environmentInfo').extensions"
|
|
336
|
-
[ground]="get('environmentInfo').ground"
|
|
337
|
-
[encoding]="get('environmentInfo').encoding"
|
|
338
|
-
/>
|
|
339
|
-
`,
|
|
340
|
-
imports: [
|
|
341
|
-
NgtArgs,
|
|
342
|
-
NgtsBounds,
|
|
343
|
-
NgtsStageRefit,
|
|
344
|
-
NgtsCenter,
|
|
345
|
-
NgIf,
|
|
346
|
-
NgtsContactShadows,
|
|
347
|
-
NgtsAccumulativeShadows,
|
|
348
|
-
NgtsRandomizedLights,
|
|
349
|
-
NgtsEnvironment,
|
|
350
|
-
],
|
|
351
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
352
|
-
}]
|
|
353
|
-
}], propDecorators: { preset: [{
|
|
354
|
-
type: Input
|
|
355
|
-
}], shadows: [{
|
|
356
|
-
type: Input
|
|
357
|
-
}], adjustCamera: [{
|
|
358
|
-
type: Input
|
|
359
|
-
}], environment: [{
|
|
360
|
-
type: Input
|
|
361
|
-
}], intensity: [{
|
|
362
|
-
type: Input
|
|
363
|
-
}], center: [{
|
|
364
|
-
type: Input
|
|
365
|
-
}], centered: [{
|
|
366
|
-
type: Output
|
|
367
|
-
}] } });
|
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3RhZ2Uvc3RhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLEdBQUc7SUFDWixTQUFTLEVBQUU7UUFDUCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENB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QixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBOZ3RBcmdzLCBOZ3RSeFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFtYmllbnRMaWdodCwgR3JvdXAsIFBvaW50TGlnaHQsIFNwb3RMaWdodCwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzIH0gZnJvbSAnLi4vYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c1JhbmRvbWl6ZWRMaWdodHMgfSBmcm9tICcuLi9hY2N1bXVsYXRpdmUtc2hhZG93cy9yYW5kb21pemVkLWxpZ2h0cyc7XG5pbXBvcnQgeyBOZ3RzQm91bmRzLCBOR1RTX0JPVU5EU19BUEkgfSBmcm9tICcuLi9ib3VuZHMvYm91bmRzJztcbmltcG9ydCB7IE5ndHNDZW50ZXIgfSBmcm9tICcuLi9jZW50ZXIvY2VudGVyJztcbmltcG9ydCB7IE5ndHNDb250YWN0U2hhZG93cyB9IGZyb20gJy4uL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50UHJlc2V0c1R5cGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudC9hc3NldHMnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50SW5wdXRzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQtaW5wdXRzJztcblxuY29uc3QgcHJlc2V0cyA9IHtcbiAgICByZW1icmFuZHQ6IHtcbiAgICAgICAgbWFpbjogWzEsIDIsIDFdLFxuICAgICAgICBmaWxsOiBbLTIsIC0wLjUsIC0yXSxcbiAgICB9LFxuICAgIHBvcnRyYWl0OiB7XG4gICAgICAgIG1haW46IFstMSwgMiwgMC41XSxcbiAgICAgICAgZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuICAgIH0sXG4gICAgdXBmcm9udDoge1xuICAgICAgICBtYWluOiBbMCwgMiwgMV0sXG4gICAgICAgIGZpbGw6IFstMSwgMC41LCAtMS41XSxcbiAgICB9LFxuICAgIHNvZnQ6IHtcbiAgICAgICAgbWFpbjogWy0yLCA0LCA0XSxcbiAgICAgICAgZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuICAgIH0sXG59O1xuXG50eXBlIE5ndHNTdGFnZVNoYWRvd3MgPSBQYXJ0aWFsPE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzPiAmXG4gICAgUGFydGlhbDxOZ3RzUmFuZG9taXplZExpZ2h0cz4gJlxuICAgIFBhcnRpYWw8Tmd0c0NvbnRhY3RTaGFkb3dzPiAmIHtcbiAgICAgICAgdHlwZTogJ2NvbnRhY3QnIHwgJ2FjY3VtdWxhdGl2ZSc7XG4gICAgICAgIC8qKiBTaGFkb3cgcGxhbmUgb2Zmc2V0LCBkZWZhdWx0OiAwICovXG4gICAgICAgIG9mZnNldD86IG51bWJlcjtcbiAgICAgICAgLyoqIFNoYWRvdyBiaWFzLCBkZWZhdWx0OiAtMC4wMDAxICovXG4gICAgICAgIGJpYXM/OiBudW1iZXI7XG4gICAgICAgIC8qKiBTaGFkb3cgbm9ybWFsIGJpYXMsIGRlZmF1bHQ6IDAgKi9cbiAgICAgICAgbm9ybWFsQmlhcz86IG51bWJlcjtcbiAgICAgICAgLyoqIFNoYWRvdyBtYXAgc2l6ZSwgZGVmYXVsdDogMTAyNCAqL1xuICAgICAgICBzaXplPzogbnVtYmVyO1xuICAgIH07XG5cbnR5cGUgTmd0c1N0YWdlUHJvcHMgPSB7XG4gICAgLyoqIExpZ2h0aW5nIHNldHVwLCBkZWZhdWx0OiBcInJlbWJyYW5kdFwiICovXG4gICAgcHJlc2V0PzpcbiAgICAgICAgfCAncmVtYnJhbmR0J1xuICAgICAgICB8ICdwb3J0cmFpdCdcbiAgICAgICAgfCAndXBmcm9udCdcbiAgICAgICAgfCAnc29mdCdcbiAgICAgICAgfCB7IG1haW46IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXTsgZmlsbDogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdIH07XG4gICAgLyoqIENvbnRyb2xzIHRoZSBncm91bmQgc2hhZG93cywgZGVmYXVsdDogXCJjb250YWN0XCIgKi9cbiAgICBzaGFkb3dzPzogYm9vbGVhbiB8ICdjb250YWN0JyB8ICdhY2N1bXVsYXRpdmUnIHwgTmd0c1N0YWdlU2hhZG93cztcbiAgICAvKiogT3B0aW9uYWxseSB3cmFwcyBhbmQgdGhlcmVieSBjZW50ZXJzIHRoZSBtb2RlbHMgdXNpbmcgPEJvdW5kcz4sIGNhbiBhbHNvIGJlIGEgbWFyZ2luLCBkZWZhdWx0OiB0cnVlICovXG4gICAgYWRqdXN0Q2FtZXJhPzogYm9vbGVhbiB8IG51bWJlcjtcbiAgICAvKiogVGhlIGRlZmF1bHQgZW52aXJvbm1lbnQsIGRlZmF1bHQ6IFwiY2l0eVwiICovXG4gICAgZW52aXJvbm1lbnQ/OiBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB8IFBhcnRpYWw8Tmd0c0Vudmlyb25tZW50SW5wdXRzPjtcbiAgICAvKiogVGhlIGxpZ2h0aW5nIGludGVuc2l0eSwgZGVmYXVsdDogMC41ICovXG4gICAgaW50ZW5zaXR5PzogbnVtYmVyO1xuICAgIC8qKiBUbyBhZGp1c3QgY2VudGVyaW5nLCBkZWZhdWx0OiB1bmRlZmluZWQgKi9cbiAgICBjZW50ZXI/OiBQYXJ0aWFsPE5ndHNDZW50ZXI+O1xufTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0cy1zdGFnZS1yZWZpdCcsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhZ2VSZWZpdCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBib3VuZHNBcGkgPSBpbmplY3QoTkdUU19CT1VORFNfQVBJKTtcblxuICAgIEBJbnB1dCgpIHJhZGl1cyA9IDA7XG4gICAgQElucHV0KCkgYWRqdXN0Q2FtZXJhID0gdHJ1ZTtcblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5hZGp1c3RDYW1lcmEpIHtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzQXBpLnJlZnJlc2goKS5jbGlwKCkuZml0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4dGVuZCh7IEFtYmllbnRMaWdodCwgU3BvdExpZ2h0LCBWZWN0b3IyLCBQb2ludExpZ2h0LCBHcm91cCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXN0YWdlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtYW1iaWVudC1saWdodCBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JykhIC8gM1wiIC8+XG4gICAgICAgIDxuZ3Qtc3BvdC1saWdodFxuICAgICAgICAgICAgW3BlbnVtYnJhXT1cIjFcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImdldCgnc3BvdExpZ2h0UG9zaXRpb24nKVwiXG4gICAgICAgICAgICBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JykhICogMlwiXG4gICAgICAgICAgICBbY2FzdFNoYWRvd109XCIhIWdldCgnc2hhZG93cycpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd0JpYXNcIiBhdHRhY2g9XCJzaGFkb3cuYmlhc1wiIC8+XG4gICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJnZXQoJ3NoYWRvd3NJbmZvJykubm9ybWFsQmlhc1wiIGF0dGFjaD1cInNoYWRvdy5ub3JtYWxCaWFzXCIgLz5cbiAgICAgICAgICAgIDxuZ3QtdmVjdG9yMlxuICAgICAgICAgICAgICAgICphcmdzPVwiW2dldCgnc2hhZG93c0luZm8nKS5zaGFkb3dTaXplLCBnZXQoJ3NoYWRvd3NJbmZvJykuc2hhZG93U2l6ZV1cIlxuICAgICAgICAgICAgICAgIGF0dGFjaD1cInNoYWRvdy5tYXBTaXplXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmd0LXNwb3QtbGlnaHQ+XG4gICAgICAgIDxuZ3QtcG9pbnQtbGlnaHQgW3Bvc2l0aW9uXT1cImdldCgncG9pbnRMaWdodFBvc2l0aW9uJylcIiBbaW50ZW5zaXR5XT1cImdldCgnaW50ZW5zaXR5JylcIiAvPlxuXG4gICAgICAgIDxuZ3RzLWJvdW5kc1xuICAgICAgICAgICAgW2ZpdF09XCIhIWdldCgnYWRqdXN0Q2FtZXJhJylcIlxuICAgICAgICAgICAgW2NsaXBdPVwiISFnZXQoJ2FkanVzdENhbWVyYScpXCJcbiAgICAgICAgICAgIFttYXJnaW5dPVwiTnVtYmVyKGdldCgnYWRqdXN0Q2FtZXJhJykpXCJcbiAgICAgICAgICAgIFtvYnNlcnZlXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmd0cy1zdGFnZS1yZWZpdCBbcmFkaXVzXT1cImdldCgncmFkaXVzJylcIiBbYWRqdXN0Q2FtZXJhXT1cIiEhZ2V0KCdhZGp1c3RDYW1lcmEnKVwiIC8+XG4gICAgICAgICAgICA8bmd0cy1jZW50ZXJcbiAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiWzAsIGdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dPZmZzZXQgLyAyLCAwXVwiXG4gICAgICAgICAgICAgICAgW3RvcF09XCIhIWdldCgnY2VudGVyJyk/LnRvcFwiXG4gICAgICAgICAgICAgICAgW3JpZ2h0XT1cIiEhZ2V0KCdjZW50ZXInKT8ucmlnaHRcIlxuICAgICAgICAgICAgICAgIFtib3R0b21dPVwiISFnZXQoJ2NlbnRlcicpPy5ib3R0b21cIlxuICAgICAgICAgICAgICAgIFtsZWZ0XT1cIiEhZ2V0KCdjZW50ZXInKT8ubGVmdFwiXG4gICAgICAgICAgICAgICAgW2Zyb250XT1cIiEhZ2V0KCdjZW50ZXInKT8uZnJvbnRcIlxuICAgICAgICAgICAgICAgIFtiYWNrXT1cIiEhZ2V0KCdjZW50ZXInKT8uYmFja1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVYXT1cIiEhZ2V0KCdjZW50ZXInKT8uZGlzYWJsZVhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlWV09XCIhIWdldCgnY2VudGVyJyk/LmRpc2FibGVZXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVpdPVwiISFnZXQoJ2NlbnRlcicpPy5kaXNhYmxlWlwiXG4gICAgICAgICAgICAgICAgW3ByZWNpc2VdPVwiISFnZXQoJ2NlbnRlcicpPy5wcmVjaXNlXCJcbiAgICAgICAgICAgICAgICAoY2VudGVyZWQpPVwib25DZW50ZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgPC9uZ3RzLWNlbnRlcj5cbiAgICAgICAgPC9uZ3RzLWJvdW5kcz5cbiAgICAgICAgPG5ndC1ncm91cCBbcG9zaXRpb25dPVwiWzAsIC1nZXQoJ2hlaWdodCcpIC8gMiAtIGdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dPZmZzZXQgLyAyLCAwXVwiPlxuICAgICAgICAgICAgPG5ndHMtY29udGFjdC1zaGFkb3dzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ3NoYWRvd3NJbmZvJykuY29udGFjdFNoYWRvd1wiXG4gICAgICAgICAgICAgICAgW3NjYWxlXT1cImdldCgncmFkaXVzJykgKiA0XCJcbiAgICAgICAgICAgICAgICBbZmFyXT1cImdldCgncmFkaXVzJylcIlxuICAgICAgICAgICAgICAgIFtibHVyXT1cIjJcIlxuICAgICAgICAgICAgICAgIFtvcGFjaXR5XT1cImdldCgnc2hhZG93c0luZm8nKS5vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImdldCgnc2hhZG93c0luZm8nKS5oZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzbW9vdGhdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNtb290aFwiXG4gICAgICAgICAgICAgICAgW3Jlc29sdXRpb25dPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnJlc29sdXRpb25cIlxuICAgICAgICAgICAgICAgIFtmcmFtZXNdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmZyYW1lc1wiXG4gICAgICAgICAgICAgICAgW3NjYWxlXT1cImdldCgnc2hhZG93c0luZm8nKS5zY2FsZVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cImdldCgnc2hhZG93c0luZm8nKS5jb2xvclwiXG4gICAgICAgICAgICAgICAgW2RlcHRoV3JpdGVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmRlcHRoV3JpdGVcIlxuICAgICAgICAgICAgICAgIFtyZW5kZXJPcmRlcl09XCJnZXQoJ3NoYWRvd3NJbmZvJykucmVuZGVyT3JkZXJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZ3RzLWFjY3VtdWxhdGl2ZS1zaGFkb3dzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ3NoYWRvd3NJbmZvJykuYWNjdW11bGF0aXZlU2hhZG93XCJcbiAgICAgICAgICAgICAgICBbdGVtcG9yYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2ZyYW1lc109XCIxMDBcIlxuICAgICAgICAgICAgICAgIFthbHBoYVRlc3RdPVwiMC45XCJcbiAgICAgICAgICAgICAgICBbdG9uZU1hcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2NhbGVdPVwiZ2V0KCdyYWRpdXMnKSAqIDRcIlxuICAgICAgICAgICAgICAgIFtvcGFjaXR5XT1cImdldCgnc2hhZG93c0luZm8nKS5vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICBbYWxwaGFUZXN0XT1cImdldCgnc2hhZG93c0luZm8nKS5hbHBoYVRlc3RcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJnZXQoJ3NoYWRvd3NJbmZvJykuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtjb2xvckJsZW5kXT1cImdldCgnc2hhZG93c0luZm8nKS5jb2xvckJsZW5kXCJcbiAgICAgICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJnZXQoJ3NoYWRvd3NJbmZvJykucmVzb2x1dGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndHMtcmFuZG9taXplZC1saWdodHNcbiAgICAgICAgICAgICAgICAgICAgW2Ftb3VudF09XCJnZXQoJ3NoYWRvd3NJbmZvJykuYW1vdW50ID8/IDhcIlxuICAgICAgICAgICAgICAgICAgICBbcmFkaXVzXT1cImdldCgnc2hhZG93c0luZm8nKS5yYWRpdXMgPz8gZ2V0KCdyYWRpdXMnKVwiXG4gICAgICAgICAgICAgICAgICAgIFthbWJpZW50XT1cImdldCgnc2hhZG93c0luZm8nKS5hbWJpZW50ID8/IDAuNVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnRlbnNpdHldPVwiZ2V0KCdzaGFkb3dzSW5mbycpLmludGVuc2l0eSA/PyAxXCJcbiAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImdldCgnc3BvdExpZ2h0UG9zaXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImdldCgncmFkaXVzJykgKiA0XCJcbiAgICAgICAgICAgICAgICAgICAgW2JpYXNdPVwiLWdldCgnc2hhZG93c0luZm8nKS5zaGFkb3dCaWFzXCJcbiAgICAgICAgICAgICAgICAgICAgW21hcFNpemVdPVwiZ2V0KCdzaGFkb3dzSW5mbycpLnNoYWRvd1NpemVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L25ndHMtYWNjdW11bGF0aXZlLXNoYWRvd3M+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgICAgICA8bmd0cy1lbnZpcm9ubWVudFxuICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpXCJcbiAgICAgICAgICAgIFtmcmFtZXNdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5mcmFtZXNcIlxuICAgICAgICAgICAgW25lYXJdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5uZWFyXCJcbiAgICAgICAgICAgIFtmYXJdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5mYXJcIlxuICAgICAgICAgICAgW3Jlc29sdXRpb25dPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5yZXNvbHV0aW9uXCJcbiAgICAgICAgICAgIFtiYWNrZ3JvdW5kXT1cImdldCgnZW52aXJvbm1lbnRJbmZvJykuYmFja2dyb3VuZFwiXG4gICAgICAgICAgICBbYmx1cl09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmJsdXJcIlxuICAgICAgICAgICAgW21hcF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLm1hcFwiXG4gICAgICAgICAgICBbZmlsZXNdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5maWxlc1wiXG4gICAgICAgICAgICBbcGF0aF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLnBhdGhcIlxuICAgICAgICAgICAgW3ByZXNldF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLnByZXNldFwiXG4gICAgICAgICAgICBbc2NlbmVdPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5zY2VuZVwiXG4gICAgICAgICAgICBbZXh0ZW5zaW9uc109XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgW2dyb3VuZF09XCJnZXQoJ2Vudmlyb25tZW50SW5mbycpLmdyb3VuZFwiXG4gICAgICAgICAgICBbZW5jb2RpbmddPVwiZ2V0KCdlbnZpcm9ubWVudEluZm8nKS5lbmNvZGluZ1wiXG4gICAgICAgIC8+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5ndEFyZ3MsXG4gICAgICAgIE5ndHNCb3VuZHMsXG4gICAgICAgIE5ndHNTdGFnZVJlZml0LFxuICAgICAgICBOZ3RzQ2VudGVyLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ3RzQ29udGFjdFNoYWRvd3MsXG4gICAgICAgIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzLFxuICAgICAgICBOZ3RzUmFuZG9taXplZExpZ2h0cyxcbiAgICAgICAgTmd0c0Vudmlyb25tZW50LFxuICAgIF0sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhZ2UgZXh0ZW5kcyBOZ3RSeFN0b3JlPE5ndHNTdGFnZVByb3BzPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHJlYWRvbmx5IE51bWJlciA9IE51bWJlcjtcblxuICAgIEBJbnB1dCgpIHNldCBwcmVzZXQocHJlc2V0OiBOZ3RzU3RhZ2VQcm9wc1sncHJlc2V0J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwcmVzZXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNoYWRvd3Moc2hhZG93czogTmd0c1N0YWdlUHJvcHNbJ3NoYWRvd3MnXSkge1xuICAgICAgICB0aGlzLnNldCh7IHNoYWRvd3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGFkanVzdENhbWVyYShhZGp1c3RDYW1lcmE6IE5ndHNTdGFnZVByb3BzWydhZGp1c3RDYW1lcmEnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGFkanVzdENhbWVyYSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IE5ndHNTdGFnZVByb3BzWydlbnZpcm9ubWVudCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZW52aXJvbm1lbnQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGludGVuc2l0eShpbnRlbnNpdHk6IE5ndHNTdGFnZVByb3BzWydpbnRlbnNpdHknXSkge1xuICAgICAgICB0aGlzLnNldCh7IGludGVuc2l0eSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY2VudGVyKGNlbnRlcjogTmd0c1N0YWdlUHJvcHNbJ2NlbnRlciddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2VudGVyIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBjZW50ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKSBhcyBOZ3RzQ2VudGVyWydjZW50ZXJlZCddO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBhZGp1c3RDYW1lcmE6IHRydWUsXG4gICAgICAgICAgICBpbnRlbnNpdHk6IDAuNSxcbiAgICAgICAgICAgIHNoYWRvd3M6ICdjb250YWN0JyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiAnY2l0eScsXG4gICAgICAgICAgICBwcmVzZXQ6ICdyZW1icmFuZHQnLFxuXG4gICAgICAgICAgICByYWRpdXM6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnY29uZmlnJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdwcmVzZXQnKS5waXBlKG1hcCgocHJlc2V0KSA9PiAodHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycgPyBwcmVzZXRzW3ByZXNldF0gOiBwcmVzZXQpKSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc2hhZG93c0luZm8nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3NoYWRvd3MnKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc2hhZG93cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdFNoYWRvdzogc2hhZG93cyA9PT0gJ2NvbnRhY3QnIHx8IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpPy50eXBlID09PSAnY29udGFjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRpdmVTaGFkb3c6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93cyA9PT0gJ2FjY3VtdWxhdGl2ZScgfHwgKHNoYWRvd3MgYXMgTmd0c1N0YWdlU2hhZG93cyk/LnR5cGUgPT09ICdhY2N1bXVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93QmlhczogKHNoYWRvd3MgYXMgTmd0c1N0YWdlU2hhZG93cyk/LmJpYXMgPz8gLTAuMDAwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbEJpYXM6IChzaGFkb3dzIGFzIE5ndHNTdGFnZVNoYWRvd3MpPy5ub3JtYWxCaWFzID8/IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTaXplOiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKT8uc2l6ZSA/PyAxMDI0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKT8ub2Zmc2V0ID8/IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHNoYWRvd3MgPT09ICdzdHJpbmcnID8ge30gOiAoc2hhZG93cyBhcyBOZ3RzU3RhZ2VTaGFkb3dzKSB8fCB7fSksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc3BvdExpZ2h0UG9zaXRpb24nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoWydjb25maWcnLCAncmFkaXVzJ10sICh7IGNvbmZpZywgcmFkaXVzIH0pID0+IFtcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblswXSAqIHJhZGl1cyxcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblsxXSAqIHJhZGl1cyxcbiAgICAgICAgICAgICAgICBjb25maWcubWFpblsyXSAqIHJhZGl1cyxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ3BvaW50TGlnaHRQb3NpdGlvbicsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ2NvbmZpZycsICdyYWRpdXMnXSwgKHsgY29uZmlnLCByYWRpdXMgfSkgPT4gW1xuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzBdICogcmFkaXVzLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzFdICogcmFkaXVzLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5maWxsWzJdICogcmFkaXVzLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnZW52aXJvbm1lbnRJbmZvJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdlbnZpcm9ubWVudCcpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChlbnZpcm9ubWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVudmlyb25tZW50KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbnZpcm9ubWVudCA9PT0gJ3N0cmluZycpIHJldHVybiB7IHByZXNldDogZW52aXJvbm1lbnQgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25DZW50ZXJlZChwcm9wczoge1xuICAgICAgICAvKiogVGhlIG5leHQgcGFyZW50IGFib3ZlIDxDZW50ZXI+ICovXG4gICAgICAgIHBhcmVudDogVEhSRUUuT2JqZWN0M0Q7XG4gICAgICAgIC8qKiBUaGUgb3V0bW9zdCBjb250YWluZXIgZ3JvdXAgb2YgdGhlIDxDZW50ZXI+IGNvbXBvbmVudCAqL1xuICAgICAgICBjb250YWluZXI6IFRIUkVFLk9iamVjdDNEO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgZGVwdGg6IG51bWJlcjtcbiAgICAgICAgYm91bmRpbmdCb3g6IFRIUkVFLkJveDM7XG4gICAgICAgIGJvdW5kaW5nU3BoZXJlOiBUSFJFRS5TcGhlcmU7XG4gICAgICAgIGNlbnRlcjogVEhSRUUuVmVjdG9yMztcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IG51bWJlcjtcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogbnVtYmVyO1xuICAgICAgICBkZXB0aEFsaWdubWVudDogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgY29uc3QgeyBib3VuZGluZ1NwaGVyZSwgd2lkdGgsIGhlaWdodCwgZGVwdGggfSA9IHByb3BzO1xuICAgICAgICB0aGlzLnNldCh7IHJhZGl1czogYm91bmRpbmdTcGhlcmUucmFkaXVzLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCB9KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBpZiAodGhpcy5jZW50ZXJlZC5vYnNlcnZlZCkgdGhpcy5jZW50ZXJlZC5lbWl0KHByb3BzKTtcbiAgICB9XG59XG4iXX0=
|