angular-three-soba 2.0.0-beta.8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -4
- package/abstractions/README.md +279 -2
- package/abstractions/index.d.ts +13 -6
- package/abstractions/lib/billboard.d.ts +19 -0
- package/abstractions/lib/catmull-rom-line.d.ts +617 -0
- package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
- package/abstractions/lib/edges.d.ts +800 -0
- package/abstractions/lib/gradient-texture.d.ts +24 -0
- package/abstractions/lib/grid.d.ts +315 -0
- package/abstractions/lib/helper.d.ts +25 -0
- package/abstractions/lib/line.d.ts +41 -0
- package/abstractions/lib/prism-geometry.d.ts +32 -0
- package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
- package/abstractions/lib/rounded-box.d.ts +41 -0
- package/abstractions/lib/text-3d.d.ts +314 -0
- package/abstractions/lib/text.d.ts +54 -0
- package/cameras/README.md +91 -2
- package/cameras/index.d.ts +4 -4
- package/cameras/lib/camera-content.d.ts +10 -0
- package/cameras/lib/cube-camera.d.ts +38 -0
- package/cameras/lib/orthographic-camera.d.ts +40 -0
- package/cameras/lib/perspective-camera.d.ts +36 -0
- package/controls/README.md +96 -2
- package/controls/index.d.ts +4 -1
- package/controls/lib/camera-controls.d.ts +31 -0
- package/controls/lib/orbit-controls.d.ts +38 -0
- package/controls/lib/pivot-controls/axis-arrow.d.ts +31 -0
- package/controls/lib/pivot-controls/axis-rotator.d.ts +30 -0
- package/controls/lib/pivot-controls/pivot-controls.d.ts +110 -0
- package/controls/lib/pivot-controls/plane-slider.d.ts +32 -0
- package/controls/lib/pivot-controls/scaling-sphere.d.ts +32 -0
- package/controls/lib/scroll-controls.d.ts +78 -0
- package/esm2022/abstractions/index.mjs +14 -7
- package/esm2022/abstractions/lib/billboard.mjs +69 -0
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
- package/esm2022/abstractions/lib/edges.mjs +70 -0
- package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
- package/esm2022/abstractions/lib/grid.mjs +103 -0
- package/esm2022/abstractions/lib/helper.mjs +76 -0
- package/esm2022/abstractions/lib/line.mjs +126 -0
- package/esm2022/abstractions/lib/prism-geometry.mjs +46 -0
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
- package/esm2022/abstractions/lib/rounded-box.mjs +111 -0
- package/esm2022/abstractions/lib/text-3d.mjs +98 -0
- package/esm2022/abstractions/lib/text.mjs +91 -0
- package/esm2022/cameras/index.mjs +5 -5
- package/esm2022/cameras/lib/camera-content.mjs +14 -0
- package/esm2022/cameras/lib/cube-camera.mjs +111 -0
- package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
- package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
- package/esm2022/controls/index.mjs +5 -2
- package/esm2022/controls/lib/camera-controls.mjs +127 -0
- package/esm2022/controls/lib/orbit-controls.mjs +132 -0
- package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +263 -0
- package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +264 -0
- package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +340 -0
- package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +266 -0
- package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +232 -0
- package/esm2022/controls/lib/scroll-controls.mjs +268 -0
- package/esm2022/loaders/index.mjs +6 -5
- package/esm2022/loaders/lib/font-loader.mjs +49 -0
- package/esm2022/loaders/lib/gltf-loader.mjs +51 -0
- package/esm2022/loaders/lib/loader.mjs +109 -0
- package/esm2022/loaders/lib/progress.mjs +51 -0
- package/esm2022/loaders/lib/texture-loader.mjs +32 -0
- package/esm2022/materials/index.mjs +8 -7
- package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
- package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
- package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
- package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
- package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
- package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
- package/esm2022/materials/lib/point-material.mjs +33 -0
- package/esm2022/misc/index.mjs +14 -14
- package/esm2022/misc/lib/animations.mjs +71 -0
- package/esm2022/misc/lib/bake-shadows.mjs +26 -0
- package/esm2022/misc/lib/computed-attribute.mjs +55 -0
- package/esm2022/misc/lib/constants.mjs +5 -0
- package/esm2022/misc/lib/decal.mjs +139 -0
- package/esm2022/misc/lib/deprecated.mjs +15 -0
- package/esm2022/misc/lib/depth-buffer.mjs +39 -0
- package/esm2022/misc/lib/fbo.mjs +86 -0
- package/esm2022/misc/lib/html/html-content.mjs +327 -0
- package/esm2022/misc/lib/html/html.mjs +129 -0
- package/esm2022/misc/lib/html/utils.mjs +74 -0
- package/esm2022/misc/lib/intersect.mjs +52 -0
- package/esm2022/misc/lib/sampler.mjs +122 -0
- package/esm2022/misc/lib/scale-factor.mjs +29 -0
- package/esm2022/performances/index.mjs +7 -6
- package/esm2022/performances/lib/adaptive-dpr.mjs +52 -0
- package/esm2022/performances/lib/adaptive-events.mjs +28 -0
- package/esm2022/performances/lib/detailed.mjs +57 -0
- package/esm2022/performances/lib/instances/instances.mjs +183 -0
- package/esm2022/performances/lib/instances/position-mesh.mjs +51 -0
- package/esm2022/performances/lib/points/points.mjs +278 -0
- package/esm2022/performances/lib/points/position-point.mjs +53 -0
- package/esm2022/performances/lib/segments/segment-object.mjs +9 -0
- package/esm2022/performances/lib/segments/segments.mjs +129 -0
- package/esm2022/shaders/index.mjs +4 -18
- package/esm2022/shaders/lib/grid-material.mjs +81 -0
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
- package/esm2022/shaders/lib/point-material.mjs +24 -0
- package/esm2022/staging/index.mjs +19 -22
- package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
- package/esm2022/staging/lib/backdrop.mjs +73 -0
- package/esm2022/staging/lib/bb-anchor.mjs +58 -0
- package/esm2022/staging/lib/bounds.mjs +286 -0
- package/esm2022/staging/lib/camera-shake.mjs +69 -0
- package/esm2022/staging/lib/caustics.mjs +188 -0
- package/esm2022/staging/lib/center.mjs +118 -0
- package/esm2022/staging/lib/contact-shadows.mjs +214 -0
- package/esm2022/staging/lib/environment.mjs +481 -0
- package/esm2022/staging/lib/float.mjs +70 -0
- package/esm2022/staging/lib/lightformer.mjs +107 -0
- package/esm2022/staging/lib/matcap-texture.mjs +81 -0
- package/esm2022/staging/lib/normal-texture.mjs +81 -0
- package/esm2022/staging/lib/randomized-lights.mjs +104 -0
- package/esm2022/staging/lib/render-texture.mjs +203 -0
- package/esm2022/staging/lib/sky.mjs +86 -0
- package/esm2022/staging/lib/spot-light.mjs +453 -0
- package/esm2022/staging/lib/stage.mjs +236 -0
- package/esm2022/{utils/angular-three-soba-utils.mjs → stats/angular-three-soba-stats.mjs} +1 -1
- package/esm2022/stats/index.mjs +2 -0
- package/esm2022/stats/lib/stats.mjs +63 -0
- package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
- package/esm2022/vanilla-exports/index.mjs +3 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +884 -697
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +261 -308
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +1776 -109
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +191 -145
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +527 -748
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +783 -1935
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +591 -475
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +51 -1369
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2350 -3521
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +70 -0
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -0
- package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
- package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
- package/loaders/README.md +130 -2
- package/loaders/index.d.ts +5 -4
- package/loaders/lib/font-loader.d.ts +27 -0
- package/loaders/lib/gltf-loader.d.ts +24 -0
- package/loaders/lib/loader.d.ts +29 -0
- package/loaders/lib/progress.d.ts +9 -0
- package/loaders/lib/texture-loader.d.ts +13 -0
- package/materials/README.md +160 -2
- package/materials/index.d.ts +7 -6
- package/materials/lib/custom-shader-material.d.ts +20 -0
- package/materials/lib/mesh-distort-material.d.ts +17 -0
- package/materials/lib/mesh-reflector-material.d.ts +51 -0
- package/materials/lib/mesh-refraction-material.d.ts +42 -0
- package/materials/lib/mesh-transmission-material.d.ts +77 -0
- package/materials/lib/mesh-wobble-material.d.ts +15 -0
- package/materials/lib/point-material.d.ts +11 -0
- package/metadata.json +1 -1
- package/misc/README.md +217 -2
- package/misc/index.d.ts +13 -13
- package/misc/lib/animations.d.ts +17 -0
- package/misc/lib/computed-attribute.d.ts +64 -0
- package/misc/lib/constants.d.ts +1 -0
- package/misc/lib/decal.d.ts +27 -0
- package/misc/lib/deprecated.d.ts +14 -0
- package/misc/lib/depth-buffer.d.ts +8 -0
- package/misc/lib/fbo.d.ts +46 -0
- package/misc/lib/html/html-content.d.ts +47 -0
- package/misc/lib/html/html.d.ts +30 -0
- package/misc/lib/html/utils.d.ts +14 -0
- package/misc/lib/intersect.d.ts +13 -0
- package/misc/lib/sampler.d.ts +73 -0
- package/misc/lib/scale-factor.d.ts +3 -0
- package/package.json +89 -48
- package/performances/index.d.ts +6 -5
- package/performances/lib/adaptive-dpr.d.ts +7 -0
- package/performances/{adaptive-events → lib}/adaptive-events.d.ts +0 -3
- package/performances/lib/detailed.d.ts +17 -0
- package/performances/lib/instances/instances.d.ts +122 -0
- package/performances/lib/instances/position-mesh.d.ts +20 -0
- package/performances/lib/points/points.d.ts +224 -0
- package/performances/lib/points/position-point.d.ts +21 -0
- package/performances/lib/segments/segment-object.d.ts +17 -0
- package/performances/lib/segments/segments.d.ts +97 -0
- package/shaders/index.d.ts +3 -17
- package/shaders/lib/grid-material.d.ts +69 -0
- package/shaders/lib/mesh-refraction-material.d.ts +11 -0
- package/shaders/lib/point-material.d.ts +14 -0
- package/staging/README.md +473 -2
- package/staging/index.d.ts +18 -21
- package/staging/lib/accumulative-shadows.d.ts +75 -0
- package/staging/lib/backdrop.d.ts +22 -0
- package/staging/lib/bb-anchor.d.ts +17 -0
- package/staging/lib/bounds.d.ts +47 -0
- package/staging/lib/camera-shake.d.ts +29 -0
- package/staging/lib/caustics.d.ts +53 -0
- package/staging/lib/center.d.ts +390 -0
- package/staging/lib/contact-shadows.d.ts +55 -0
- package/staging/lib/environment.d.ts +132 -0
- package/staging/lib/float.d.ts +20 -0
- package/staging/lib/lightformer.d.ts +310 -0
- package/staging/lib/matcap-texture.d.ts +32 -0
- package/staging/lib/normal-texture.d.ts +37 -0
- package/staging/lib/randomized-lights.d.ts +54 -0
- package/staging/lib/render-texture.d.ts +64 -0
- package/staging/lib/sky.d.ts +32 -0
- package/staging/lib/spot-light.d.ts +119 -0
- package/staging/lib/stage.d.ts +352 -0
- package/stats/README.md +3 -0
- package/stats/index.d.ts +1 -0
- package/stats/lib/stats.d.ts +14 -0
- package/vanilla-exports/README.md +3 -0
- package/vanilla-exports/index.d.ts +27 -0
- package/web-types.json +1 -1
- package/abstractions/billboard/billboard.d.ts +0 -28
- package/abstractions/detailed/detailed.d.ts +0 -26
- package/abstractions/edges/edges.d.ts +0 -34
- package/abstractions/grid/grid.d.ts +0 -50
- package/abstractions/text/text.d.ts +0 -82
- package/abstractions/text-3d/text-3d.d.ts +0 -81
- package/assets/distort.vert.glsl +0 -1
- package/cameras/camera/camera-content.d.ts +0 -13
- package/cameras/camera/camera.d.ts +0 -26
- package/cameras/cube-camera/cube-camera.d.ts +0 -69
- package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
- package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
- package/controls/orbit-controls/orbit-controls.d.ts +0 -54
- package/esm2022/abstractions/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/detailed/detailed.mjs +0 -64
- package/esm2022/abstractions/edges/edges.mjs +0 -88
- package/esm2022/abstractions/grid/grid.mjs +0 -180
- package/esm2022/abstractions/text/text.mjs +0 -274
- package/esm2022/abstractions/text-3d/text-3d.mjs +0 -165
- package/esm2022/cameras/camera/camera-content.mjs +0 -20
- package/esm2022/cameras/camera/camera.mjs +0 -77
- package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -181
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
- package/esm2022/loaders/loader/loader.mjs +0 -138
- package/esm2022/loaders/progress/progress.mjs +0 -45
- package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/materials/point-material/point-material.mjs +0 -46
- package/esm2022/misc/animations/animations.mjs +0 -59
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
- package/esm2022/misc/caustics/caustics.mjs +0 -387
- package/esm2022/misc/decal/decal.mjs +0 -187
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
- package/esm2022/misc/example/example.mjs +0 -160
- package/esm2022/misc/fbo/fbo.mjs +0 -47
- package/esm2022/misc/html/html-wrapper.mjs +0 -478
- package/esm2022/misc/html/html.mjs +0 -304
- package/esm2022/misc/sampler/sampler.mjs +0 -142
- package/esm2022/misc/shadow/shadow.mjs +0 -111
- package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
- package/esm2022/misc/trail/trail.mjs +0 -209
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
- package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
- package/esm2022/modifiers/index.mjs +0 -2
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
- package/esm2022/performances/points/points-input.mjs +0 -64
- package/esm2022/performances/points/points.mjs +0 -329
- package/esm2022/performances/points/position-point.mjs +0 -54
- package/esm2022/performances/segments/segment-object.mjs +0 -9
- package/esm2022/performances/segments/segments.mjs +0 -182
- package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
- package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
- package/esm2022/staging/backdrop/backdrop.mjs +0 -77
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -70
- package/esm2022/staging/bounds/bounds.mjs +0 -308
- package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
- package/esm2022/staging/center/center.mjs +0 -163
- package/esm2022/staging/cloud/cloud.mjs +0 -158
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
- package/esm2022/staging/environment/assets.mjs +0 -13
- package/esm2022/staging/environment/environment-cube.mjs +0 -47
- package/esm2022/staging/environment/environment-ground.mjs +0 -41
- package/esm2022/staging/environment/environment-input.mjs +0 -119
- package/esm2022/staging/environment/environment-map.mjs +0 -53
- package/esm2022/staging/environment/environment-portal.mjs +0 -113
- package/esm2022/staging/environment/environment.mjs +0 -61
- package/esm2022/staging/environment/utils.mjs +0 -105
- package/esm2022/staging/float/float.mjs +0 -94
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
- package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
- package/esm2022/staging/sky/sky.mjs +0 -119
- package/esm2022/staging/sparkles/sparkles.mjs +0 -164
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
- package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
- package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
- package/esm2022/staging/spot-light/spot-light.mjs +0 -81
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
- package/esm2022/staging/stage/stage.mjs +0 -388
- package/esm2022/staging/stars/stars.mjs +0 -147
- package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
- package/esm2022/staging/wireframe/wireframe.mjs +0 -224
- package/esm2022/utils/content/content.mjs +0 -15
- package/esm2022/utils/index.mjs +0 -2
- package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
- package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
- package/fesm2022/angular-three-soba-utils.mjs +0 -22
- package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
- package/loaders/loader/loader.d.ts +0 -33
- package/loaders/progress/progress.d.ts +0 -9
- package/loaders/texture-loader/texture-loader.d.ts +0 -7
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
- package/materials/point-material/point-material.d.ts +0 -24
- package/misc/animations/animations.d.ts +0 -15
- package/misc/caustics/caustics.d.ts +0 -87
- package/misc/decal/decal.d.ts +0 -49
- package/misc/depth-buffer/depth-buffer.d.ts +0 -9
- package/misc/example/example.d.ts +0 -81
- package/misc/fbo/fbo.d.ts +0 -17
- package/misc/html/html-wrapper.d.ts +0 -559
- package/misc/html/html.d.ts +0 -214
- package/misc/sampler/sampler.d.ts +0 -67
- package/misc/shadow/shadow.d.ts +0 -37
- package/misc/stats-gl/stats-gl.d.ts +0 -24
- package/misc/trail/trail.d.ts +0 -57
- package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
- package/misc/trail-texture/trail-texture.d.ts +0 -50
- package/modifiers/README.md +0 -3
- package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
- package/modifiers/index.d.ts +0 -1
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
- package/performances/points/points-input.d.ts +0 -32
- package/performances/points/points.d.ts +0 -92
- package/performances/points/position-point.d.ts +0 -11
- package/performances/segments/segment-object.d.ts +0 -7
- package/performances/segments/segments.d.ts +0 -124
- package/shaders/blur-pass/blur-pass.d.ts +0 -23
- package/shaders/caustics/caustics-material.d.ts +0 -4
- package/shaders/caustics/caustics-projection-material.d.ts +0 -4
- package/shaders/convolution-material/convolution-material.d.ts +0 -7
- package/shaders/discard-material/discard-material.d.ts +0 -3
- package/shaders/grid-material/grid-material.d.ts +0 -37
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
- package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
- package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
- package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
- package/shaders/shader-material/shader-material.d.ts +0 -6
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
- package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
- package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
- package/shaders/star-field-material/star-field-material.d.ts +0 -13
- package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
- package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
- package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
- package/staging/backdrop/backdrop.d.ts +0 -30
- package/staging/bb-anchor/bb-anchor.d.ts +0 -27
- package/staging/bounds/bounds.d.ts +0 -134
- package/staging/camera-shake/camera-shake.d.ts +0 -43
- package/staging/center/center.d.ts +0 -70
- package/staging/cloud/cloud.d.ts +0 -51
- package/staging/contact-shadows/contact-shadows.d.ts +0 -70
- package/staging/environment/assets.d.ts +0 -13
- package/staging/environment/environment-cube.d.ts +0 -15
- package/staging/environment/environment-ground.d.ts +0 -13
- package/staging/environment/environment-input.d.ts +0 -68
- package/staging/environment/environment-map.d.ts +0 -16
- package/staging/environment/environment-portal.d.ts +0 -18
- package/staging/environment/environment.d.ts +0 -8
- package/staging/environment/utils.d.ts +0 -7
- package/staging/float/float.d.ts +0 -31
- package/staging/matcap-texture/matcap-texture.d.ts +0 -13
- package/staging/normal-texture/normal-texture.d.ts +0 -16
- package/staging/sky/sky.d.ts +0 -48
- package/staging/sparkles/sparkles.d.ts +0 -63
- package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/shadow-mesh.d.ts +0 -37
- package/staging/spot-light/spot-light-input.d.ts +0 -38
- package/staging/spot-light/spot-light.d.ts +0 -39
- package/staging/spot-light/volumetric-mesh.d.ts +0 -24
- package/staging/stage/stage.d.ts +0 -130
- package/staging/stars/stars.d.ts +0 -45
- package/staging/wireframe/wireframe-input.d.ts +0 -65
- package/staging/wireframe/wireframe.d.ts +0 -28
- package/utils/README.md +0 -3
- package/utils/content/content.d.ts +0 -8
- package/utils/index.d.ts +0 -1
- /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, afterNextRender, input, viewChild, } from '@angular/core';
|
|
2
|
+
import { NgtArgs, getLocalState } from 'angular-three';
|
|
3
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
|
+
import { BufferAttribute } from 'three';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Used exclusively as a child of a BufferGeometry.
|
|
8
|
+
* Computes the BufferAttribute by calling the `compute` function
|
|
9
|
+
* and attaches the attribute to the geometry.
|
|
10
|
+
*/
|
|
11
|
+
export class NgtsComputedAttribute {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.compute = input.required();
|
|
14
|
+
this.name = input.required();
|
|
15
|
+
this.options = input({});
|
|
16
|
+
this.bufferAttribute = new BufferAttribute(new Float32Array(0), 1);
|
|
17
|
+
this.attributeRef = viewChild('attribute');
|
|
18
|
+
const autoEffect = injectAutoEffect();
|
|
19
|
+
afterNextRender(() => {
|
|
20
|
+
autoEffect(() => {
|
|
21
|
+
const bufferAttribute = this.attributeRef()?.nativeElement;
|
|
22
|
+
if (!bufferAttribute)
|
|
23
|
+
return;
|
|
24
|
+
const localState = getLocalState(bufferAttribute);
|
|
25
|
+
if (!localState)
|
|
26
|
+
return;
|
|
27
|
+
const geometry = bufferAttribute.parent ?? localState.parent();
|
|
28
|
+
const attribute = this.compute()(geometry);
|
|
29
|
+
bufferAttribute.copy(attribute);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsComputedAttribute, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsComputedAttribute, isStandalone: true, selector: "ngts-computed-attribute", inputs: { compute: { classPropertyName: "compute", publicName: "compute", isSignal: true, isRequired: true, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "attributeRef", first: true, predicate: ["attribute"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
35
|
+
<ngt-primitive #attribute *args="[bufferAttribute]" [attach]="['attributes', name()]" [parameters]="options()">
|
|
36
|
+
<ng-content />
|
|
37
|
+
</ngt-primitive>
|
|
38
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsComputedAttribute, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{
|
|
43
|
+
selector: 'ngts-computed-attribute',
|
|
44
|
+
standalone: true,
|
|
45
|
+
template: `
|
|
46
|
+
<ngt-primitive #attribute *args="[bufferAttribute]" [attach]="['attributes', name()]" [parameters]="options()">
|
|
47
|
+
<ng-content />
|
|
48
|
+
</ngt-primitive>
|
|
49
|
+
`,
|
|
50
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
51
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
52
|
+
imports: [NgtArgs],
|
|
53
|
+
}]
|
|
54
|
+
}], ctorParameters: () => [] });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQtYXR0cmlidXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9jb21wdXRlZC1hdHRyaWJ1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULGVBQWUsRUFDZixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQXNCLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLE9BQU8sQ0FBQzs7QUFjeEQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFRakM7UUFQQSxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBaUQsQ0FBQztRQUMxRSxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBaUMsQ0FBQyxDQUFDO1FBRW5ELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsaUJBQVksR0FBRyxTQUFTLENBQThCLFdBQVcsQ0FBQyxDQUFDO1FBR2xFLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFFdEMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNmLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxhQUFhLENBQUM7Z0JBQzNELElBQUksQ0FBQyxlQUFlO29CQUFFLE9BQU87Z0JBRTdCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFVBQVU7b0JBQUUsT0FBTztnQkFFeEIsTUFBTSxRQUFRLEdBQUssZUFBdUIsQ0FBQyxNQUF5QixJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFFNUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXpCVyxxQkFBcUI7a0dBQXJCLHFCQUFxQix5a0JBZHZCOzs7O0VBSVQsNERBR1MsT0FBTzs7MkZBT0wscUJBQXFCO2tCQWpCakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RWxlbWVudFJlZixcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRpbnB1dCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIE5ndEJ1ZmZlckF0dHJpYnV0ZSwgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgQnVmZmVyQXR0cmlidXRlLCBCdWZmZXJHZW9tZXRyeSB9IGZyb20gJ3RocmVlJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jb21wdXRlZC1hdHRyaWJ1dGUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICNhdHRyaWJ1dGUgKmFyZ3M9XCJbYnVmZmVyQXR0cmlidXRlXVwiIFthdHRhY2hdPVwiWydhdHRyaWJ1dGVzJywgbmFtZSgpXVwiIFtwYXJhbWV0ZXJzXT1cIm9wdGlvbnMoKVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wcmltaXRpdmU+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG4vKipcbiAqIFVzZWQgZXhjbHVzaXZlbHkgYXMgYSBjaGlsZCBvZiBhIEJ1ZmZlckdlb21ldHJ5LlxuICogQ29tcHV0ZXMgdGhlIEJ1ZmZlckF0dHJpYnV0ZSBieSBjYWxsaW5nIHRoZSBgY29tcHV0ZWAgZnVuY3Rpb25cbiAqIGFuZCBhdHRhY2hlcyB0aGUgYXR0cmlidXRlIHRvIHRoZSBnZW9tZXRyeS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ndHNDb21wdXRlZEF0dHJpYnV0ZSB7XG5cdGNvbXB1dGUgPSBpbnB1dC5yZXF1aXJlZDwoZ2VvbWV0cnk6IEJ1ZmZlckdlb21ldHJ5KSA9PiBCdWZmZXJBdHRyaWJ1dGU+KCk7XG5cdG5hbWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBQYXJ0aWFsPE5ndEJ1ZmZlckF0dHJpYnV0ZT4pO1xuXG5cdGJ1ZmZlckF0dHJpYnV0ZSA9IG5ldyBCdWZmZXJBdHRyaWJ1dGUobmV3IEZsb2F0MzJBcnJheSgwKSwgMSk7XG5cdGF0dHJpYnV0ZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEJ1ZmZlckF0dHJpYnV0ZT4+KCdhdHRyaWJ1dGUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBidWZmZXJBdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZVJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoIWJ1ZmZlckF0dHJpYnV0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGJ1ZmZlckF0dHJpYnV0ZSk7XG5cdFx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IGdlb21ldHJ5ID0gKChidWZmZXJBdHRyaWJ1dGUgYXMgYW55KS5wYXJlbnQgYXMgQnVmZmVyR2VvbWV0cnkpID8/IGxvY2FsU3RhdGUucGFyZW50KCk7XG5cblx0XHRcdFx0Y29uc3QgYXR0cmlidXRlID0gdGhpcy5jb21wdXRlKCkoZ2VvbWV0cnkpO1xuXHRcdFx0XHRidWZmZXJBdHRyaWJ1dGUuY29weShhdHRyaWJ1dGUpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { REVISION } from 'three';
|
|
2
|
+
export function getVersion() {
|
|
3
|
+
return parseInt(REVISION.replace(/\D+/g, ''));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVqQyxNQUFNLFVBQVUsVUFBVTtJQUN6QixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSRVZJU0lPTiB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNpb24oKSB7XG5cdHJldHVybiBwYXJzZUludChSRVZJU0lPTi5yZXBsYWNlKC9cXEQrL2csICcnKSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { afterNextRender, ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input, viewChild, } from '@angular/core';
|
|
2
|
+
import { applyProps, extend, getLocalState, omit, pick, resolveRef } from 'angular-three';
|
|
3
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
|
+
import { AxesHelper, BoxGeometry, Euler, Mesh, MeshNormalMaterial, Object3D, Vector3 } from 'three';
|
|
6
|
+
import { DecalGeometry } from 'three-stdlib';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
const defaultOptions = {
|
|
9
|
+
polygonOffsetFactor: -10,
|
|
10
|
+
debug: false,
|
|
11
|
+
depthTest: false,
|
|
12
|
+
};
|
|
13
|
+
export class NgtsDecal {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.mesh = input();
|
|
16
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
17
|
+
this.parameters = omit(this.options, [
|
|
18
|
+
'debug',
|
|
19
|
+
'map',
|
|
20
|
+
'depthTest',
|
|
21
|
+
'polygonOffsetFactor',
|
|
22
|
+
'position',
|
|
23
|
+
'scale',
|
|
24
|
+
'rotation',
|
|
25
|
+
]);
|
|
26
|
+
this.meshRef = viewChild.required('mesh');
|
|
27
|
+
this.helperRef = viewChild('helper');
|
|
28
|
+
this.map = pick(this.options, 'map');
|
|
29
|
+
this.depthTest = pick(this.options, 'depthTest');
|
|
30
|
+
this.polygonOffsetFactor = pick(this.options, 'polygonOffsetFactor');
|
|
31
|
+
this.debug = pick(this.options, 'debug');
|
|
32
|
+
this.position = pick(this.options, 'position');
|
|
33
|
+
this.rotation = pick(this.options, 'rotation');
|
|
34
|
+
this.scale = pick(this.options, 'scale');
|
|
35
|
+
extend({ Mesh, BoxGeometry, MeshNormalMaterial, AxesHelper });
|
|
36
|
+
const autoEffect = injectAutoEffect();
|
|
37
|
+
afterNextRender(() => {
|
|
38
|
+
autoEffect(() => {
|
|
39
|
+
const thisMesh = this.meshRef().nativeElement;
|
|
40
|
+
const localState = getLocalState(thisMesh);
|
|
41
|
+
if (!localState)
|
|
42
|
+
return;
|
|
43
|
+
const mesh = resolveRef(this.mesh());
|
|
44
|
+
const parent = mesh || localState.parent();
|
|
45
|
+
if (parent && !parent.isMesh) {
|
|
46
|
+
throw new Error('<ngts-decal> must have a Mesh as parent or specify its "mesh" input');
|
|
47
|
+
}
|
|
48
|
+
if (!parent)
|
|
49
|
+
return;
|
|
50
|
+
const [position, rotation, scale] = [this.position(), this.rotation(), this.scale()];
|
|
51
|
+
const state = {
|
|
52
|
+
position: new Vector3(),
|
|
53
|
+
rotation: new Euler(),
|
|
54
|
+
scale: new Vector3(1, 1, 1),
|
|
55
|
+
};
|
|
56
|
+
applyProps(state, { position, scale });
|
|
57
|
+
// zero out the parents matrix world for this operation
|
|
58
|
+
const matrixWorld = parent.matrixWorld.clone();
|
|
59
|
+
parent.matrixWorld.identity();
|
|
60
|
+
if (!rotation || typeof rotation === 'number') {
|
|
61
|
+
const o = new Object3D();
|
|
62
|
+
o.position.copy(state.position);
|
|
63
|
+
o.lookAt(parent.position);
|
|
64
|
+
if (typeof rotation === 'number')
|
|
65
|
+
o.rotateZ(rotation);
|
|
66
|
+
applyProps(state, { rotation: o.rotation });
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
applyProps(state, { rotation });
|
|
70
|
+
}
|
|
71
|
+
thisMesh.geometry = new DecalGeometry(parent, state.position, state.rotation, state.scale);
|
|
72
|
+
const helper = this.helperRef()?.nativeElement;
|
|
73
|
+
if (helper) {
|
|
74
|
+
applyProps(helper, state);
|
|
75
|
+
// Prevent the helpers from blocking rays
|
|
76
|
+
helper.traverse((child) => (child.raycast = () => null));
|
|
77
|
+
}
|
|
78
|
+
// Reset parents matrix-world
|
|
79
|
+
parent.matrixWorld = matrixWorld;
|
|
80
|
+
return () => {
|
|
81
|
+
thisMesh.geometry.dispose();
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsDecal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
87
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsDecal, isStandalone: true, selector: "ngts-decal", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }, { propertyName: "helperRef", first: true, predicate: ["helper"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
88
|
+
<ngt-mesh #mesh [parameters]="parameters()">
|
|
89
|
+
<ngt-value [rawValue]="true" attach="material.transparent" />
|
|
90
|
+
<ngt-value [rawValue]="true" attach="material.polygonOffset" />
|
|
91
|
+
<ngt-value [rawValue]="map()" attach="material.map" />
|
|
92
|
+
|
|
93
|
+
<ng-content>
|
|
94
|
+
<!-- we only want to pass through these material properties if they don't use a custom material -->
|
|
95
|
+
<ngt-value [rawValue]="polygonOffsetFactor()" attach="material.polygonOffsetFactor" />
|
|
96
|
+
<ngt-value [rawValue]="depthTest()" attach="material.depthTest" />
|
|
97
|
+
</ng-content>
|
|
98
|
+
|
|
99
|
+
@if (debug()) {
|
|
100
|
+
<ngt-mesh #helper>
|
|
101
|
+
<ngt-box-geometry />
|
|
102
|
+
<ngt-mesh-normal-material [wireframe]="true" />
|
|
103
|
+
<ngt-axes-helper />
|
|
104
|
+
</ngt-mesh>
|
|
105
|
+
}
|
|
106
|
+
</ngt-mesh>
|
|
107
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
108
|
+
}
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsDecal, decorators: [{
|
|
110
|
+
type: Component,
|
|
111
|
+
args: [{
|
|
112
|
+
selector: 'ngts-decal',
|
|
113
|
+
standalone: true,
|
|
114
|
+
template: `
|
|
115
|
+
<ngt-mesh #mesh [parameters]="parameters()">
|
|
116
|
+
<ngt-value [rawValue]="true" attach="material.transparent" />
|
|
117
|
+
<ngt-value [rawValue]="true" attach="material.polygonOffset" />
|
|
118
|
+
<ngt-value [rawValue]="map()" attach="material.map" />
|
|
119
|
+
|
|
120
|
+
<ng-content>
|
|
121
|
+
<!-- we only want to pass through these material properties if they don't use a custom material -->
|
|
122
|
+
<ngt-value [rawValue]="polygonOffsetFactor()" attach="material.polygonOffsetFactor" />
|
|
123
|
+
<ngt-value [rawValue]="depthTest()" attach="material.depthTest" />
|
|
124
|
+
</ng-content>
|
|
125
|
+
|
|
126
|
+
@if (debug()) {
|
|
127
|
+
<ngt-mesh #helper>
|
|
128
|
+
<ngt-box-geometry />
|
|
129
|
+
<ngt-mesh-normal-material [wireframe]="true" />
|
|
130
|
+
<ngt-axes-helper />
|
|
131
|
+
</ngt-mesh>
|
|
132
|
+
}
|
|
133
|
+
</ngt-mesh>
|
|
134
|
+
`,
|
|
135
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
136
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
137
|
+
}]
|
|
138
|
+
}], ctorParameters: () => [] });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvbGliL2RlY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxzQkFBc0IsRUFFdEIsS0FBSyxFQUNMLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQVcsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFXLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVM3QyxNQUFNLGNBQWMsR0FBcUI7SUFDeEMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEtBQUssRUFBRSxLQUFLO0lBQ1osU0FBUyxFQUFFLEtBQUs7Q0FDaEIsQ0FBQztBQTZCRixNQUFNLE9BQU8sU0FBUztJQXdCckI7UUF2QkEsU0FBSSxHQUFHLEtBQUssRUFBa0MsQ0FBQztRQUMvQyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixPQUFPO1lBQ1AsS0FBSztZQUNMLFdBQVc7WUFDWCxxQkFBcUI7WUFDckIsVUFB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b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcywgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBOZ3RNZXNoLCBvbWl0LCBwaWNrLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBBeGVzSGVscGVyLCBCb3hHZW9tZXRyeSwgRXVsZXIsIE1lc2gsIE1lc2hOb3JtYWxNYXRlcmlhbCwgT2JqZWN0M0QsIFRleHR1cmUsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBEZWNhbEdlb21ldHJ5IH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzRGVjYWxPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RNZXNoPiB7XG5cdHBvbHlnb25PZmZzZXRGYWN0b3I6IG51bWJlcjtcblx0ZGVwdGhUZXN0OiBib29sZWFuO1xuXHRkZWJ1ZzogYm9vbGVhbjtcblx0bWFwPzogVGV4dHVyZSB8IG51bGw7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzRGVjYWxPcHRpb25zID0ge1xuXHRwb2x5Z29uT2Zmc2V0RmFjdG9yOiAtMTAsXG5cdGRlYnVnOiBmYWxzZSxcblx0ZGVwdGhUZXN0OiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtZGVjYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaCAjbWVzaCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInRydWVcIiBhdHRhY2g9XCJtYXRlcmlhbC50cmFuc3BhcmVudFwiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJ0cnVlXCIgYXR0YWNoPVwibWF0ZXJpYWwucG9seWdvbk9mZnNldFwiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJtYXAoKVwiIGF0dGFjaD1cIm1hdGVyaWFsLm1hcFwiIC8+XG5cblx0XHRcdDxuZy1jb250ZW50PlxuXHRcdFx0XHQ8IS0tIHdlIG9ubHkgd2FudCB0byBwYXNzIHRocm91Z2ggdGhlc2UgbWF0ZXJpYWwgcHJvcGVydGllcyBpZiB0aGV5IGRvbid0IHVzZSBhIGN1c3RvbSBtYXRlcmlhbCAtLT5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwicG9seWdvbk9mZnNldEZhY3RvcigpXCIgYXR0YWNoPVwibWF0ZXJpYWwucG9seWdvbk9mZnNldEZhY3RvclwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImRlcHRoVGVzdCgpXCIgYXR0YWNoPVwibWF0ZXJpYWwuZGVwdGhUZXN0XCIgLz5cblx0XHRcdDwvbmctY29udGVudD5cblxuXHRcdFx0QGlmIChkZWJ1ZygpKSB7XG5cdFx0XHRcdDxuZ3QtbWVzaCAjaGVscGVyPlxuXHRcdFx0XHRcdDxuZ3QtYm94LWdlb21ldHJ5IC8+XG5cdFx0XHRcdFx0PG5ndC1tZXNoLW5vcm1hbC1tYXRlcmlhbCBbd2lyZWZyYW1lXT1cInRydWVcIiAvPlxuXHRcdFx0XHRcdDxuZ3QtYXhlcy1oZWxwZXIgLz5cblx0XHRcdFx0PC9uZ3QtbWVzaD5cblx0XHRcdH1cblx0XHQ8L25ndC1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzRGVjYWwge1xuXHRtZXNoID0gaW5wdXQ8RWxlbWVudFJlZjxNZXNoPiB8IE1lc2ggfCBudWxsPigpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdkZWJ1ZycsXG5cdFx0J21hcCcsXG5cdFx0J2RlcHRoVGVzdCcsXG5cdFx0J3BvbHlnb25PZmZzZXRGYWN0b3InLFxuXHRcdCdwb3NpdGlvbicsXG5cdFx0J3NjYWxlJyxcblx0XHQncm90YXRpb24nLFxuXHRdKTtcblxuXHRtZXNoUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8TWVzaD4+KCdtZXNoJyk7XG5cdGhlbHBlclJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPE1lc2g+PignaGVscGVyJyk7XG5cblx0bWFwID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXAnKTtcblx0ZGVwdGhUZXN0ID0gcGljayh0aGlzLm9wdGlvbnMsICdkZXB0aFRlc3QnKTtcblx0cG9seWdvbk9mZnNldEZhY3RvciA9IHBpY2sodGhpcy5vcHRpb25zLCAncG9seWdvbk9mZnNldEZhY3RvcicpO1xuXHRkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0cHJpdmF0ZSBwb3NpdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncG9zaXRpb24nKTtcblx0cHJpdmF0ZSByb3RhdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncm90YXRpb24nKTtcblx0cHJpdmF0ZSBzY2FsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoLCBCb3hHZW9tZXRyeSwgTWVzaE5vcm1hbE1hdGVyaWFsLCBBeGVzSGVscGVyIH0pO1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRoaXNNZXNoID0gdGhpcy5tZXNoUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUodGhpc01lc2gpO1xuXHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBtZXNoID0gcmVzb2x2ZVJlZih0aGlzLm1lc2goKSk7XG5cdFx0XHRcdGNvbnN0IHBhcmVudCA9IG1lc2ggfHwgbG9jYWxTdGF0ZS5wYXJlbnQoKTtcblxuXHRcdFx0XHRpZiAocGFyZW50ICYmICEocGFyZW50IGFzIE1lc2gpLmlzTWVzaCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignPG5ndHMtZGVjYWw+IG11c3QgaGF2ZSBhIE1lc2ggYXMgcGFyZW50IG9yIHNwZWNpZnkgaXRzIFwibWVzaFwiIGlucHV0Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IFtwb3NpdGlvbiwgcm90YXRpb24sIHNjYWxlXSA9IFt0aGlzLnBvc2l0aW9uKCksIHRoaXMucm90YXRpb24oKSwgdGhpcy5zY2FsZSgpXTtcblx0XHRcdFx0Y29uc3Qgc3RhdGUgPSB7XG5cdFx0XHRcdFx0cG9zaXRpb246IG5ldyBWZWN0b3IzKCksXG5cdFx0XHRcdFx0cm90YXRpb246IG5ldyBFdWxlcigpLFxuXHRcdFx0XHRcdHNjYWxlOiBuZXcgVmVjdG9yMygxLCAxLCAxKSxcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRhcHBseVByb3BzKHN0YXRlLCB7IHBvc2l0aW9uLCBzY2FsZSB9KTtcblxuXHRcdFx0XHQvLyB6ZXJvIG91dCB0aGUgcGFyZW50cyBtYXRyaXggd29ybGQgZm9yIHRoaXMgb3BlcmF0aW9uXG5cdFx0XHRcdGNvbnN0IG1hdHJpeFdvcmxkID0gcGFyZW50Lm1hdHJpeFdvcmxkLmNsb25lKCk7XG5cdFx0XHRcdHBhcmVudC5tYXRyaXhXb3JsZC5pZGVudGl0eSgpO1xuXG5cdFx0XHRcdGlmICghcm90YXRpb24gfHwgdHlwZW9mIHJvdGF0aW9uID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdGNvbnN0IG8gPSBuZXcgT2JqZWN0M0QoKTtcblx0XHRcdFx0XHRvLnBvc2l0aW9uLmNvcHkoc3RhdGUucG9zaXRpb24pO1xuXHRcdFx0XHRcdG8ubG9va0F0KHBhcmVudC5wb3NpdGlvbik7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiByb3RhdGlvbiA9PT0gJ251bWJlcicpIG8ucm90YXRlWihyb3RhdGlvbik7XG5cdFx0XHRcdFx0YXBwbHlQcm9wcyhzdGF0ZSwgeyByb3RhdGlvbjogby5yb3RhdGlvbiB9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHBseVByb3BzKHN0YXRlLCB7IHJvdGF0aW9uIH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpc01lc2guZ2VvbWV0cnkgPSBuZXcgRGVjYWxHZW9tZXRyeShwYXJlbnQsIHN0YXRlLnBvc2l0aW9uLCBzdGF0ZS5yb3RhdGlvbiwgc3RhdGUuc2NhbGUpO1xuXHRcdFx0XHRjb25zdCBoZWxwZXIgPSB0aGlzLmhlbHBlclJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoaGVscGVyKSB7XG5cdFx0XHRcdFx0YXBwbHlQcm9wcyhoZWxwZXIsIHN0YXRlKTtcblx0XHRcdFx0XHQvLyBQcmV2ZW50IHRoZSBoZWxwZXJzIGZyb20gYmxvY2tpbmcgcmF5c1xuXHRcdFx0XHRcdGhlbHBlci50cmF2ZXJzZSgoY2hpbGQpID0+IChjaGlsZC5yYXljYXN0ID0gKCkgPT4gbnVsbCkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVzZXQgcGFyZW50cyBtYXRyaXgtd29ybGRcblx0XHRcdFx0cGFyZW50Lm1hdHJpeFdvcmxkID0gbWF0cml4V29ybGQ7XG5cblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHR0aGlzTWVzaC5nZW9tZXRyeS5kaXNwb3NlKCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NOTE: Sets `BufferAttribute.updateRange` since r159.
|
|
3
|
+
*/
|
|
4
|
+
export const setUpdateRange = (attribute, updateRange) => {
|
|
5
|
+
if ('updateRanges' in attribute) {
|
|
6
|
+
// attribute.updateRanges[0] = updateRange;
|
|
7
|
+
attribute.addUpdateRange(updateRange.offset, updateRange.count);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
Object.assign(attribute, { updateRange });
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export const LinearEncoding = 3000;
|
|
14
|
+
export const sRGBEncoding = 3001;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9saWIvZGVwcmVjYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQTBCLEVBQUUsV0FBOEMsRUFBUSxFQUFFO0lBQ2xILElBQUksY0FBYyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLDJDQUEyQztRQUMzQyxTQUFTLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7U0FBTSxDQUFDO1FBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUgfSBmcm9tICd0aHJlZSc7XG5cbi8qKlxuICogTk9URTogU2V0cyBgQnVmZmVyQXR0cmlidXRlLnVwZGF0ZVJhbmdlYCBzaW5jZSByMTU5LlxuICovXG5leHBvcnQgY29uc3Qgc2V0VXBkYXRlUmFuZ2UgPSAoYXR0cmlidXRlOiBCdWZmZXJBdHRyaWJ1dGUsIHVwZGF0ZVJhbmdlOiB7IG9mZnNldDogbnVtYmVyOyBjb3VudDogbnVtYmVyIH0pOiB2b2lkID0+IHtcblx0aWYgKCd1cGRhdGVSYW5nZXMnIGluIGF0dHJpYnV0ZSkge1xuXHRcdC8vIGF0dHJpYnV0ZS51cGRhdGVSYW5nZXNbMF0gPSB1cGRhdGVSYW5nZTtcblx0XHRhdHRyaWJ1dGUuYWRkVXBkYXRlUmFuZ2UodXBkYXRlUmFuZ2Uub2Zmc2V0LCB1cGRhdGVSYW5nZS5jb3VudCk7XG5cdH0gZWxzZSB7XG5cdFx0T2JqZWN0LmFzc2lnbihhdHRyaWJ1dGUsIHsgdXBkYXRlUmFuZ2UgfSk7XG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaW5lYXJFbmNvZGluZyA9IDMwMDA7XG5leHBvcnQgY29uc3Qgc1JHQkVuY29kaW5nID0gMzAwMTtcblxuLyoqXG4gKiBOT1RFOiBUZXh0dXJlRW5jb2Rpbmcgd2FzIGRlcHJlY2F0ZWQgaW4gcjE1MiwgYW5kIHJlbW92ZWQgaW4gcjE2Mi5cbiAqL1xuZXhwb3J0IHR5cGUgVGV4dHVyZUVuY29kaW5nID0gdHlwZW9mIExpbmVhckVuY29kaW5nIHwgdHlwZW9mIHNSR0JFbmNvZGluZztcbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { computed } from '@angular/core';
|
|
2
|
+
import { injectBeforeRender, injectStore, pick } from 'angular-three';
|
|
3
|
+
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
|
+
import { DepthFormat, DepthTexture, UnsignedShortType } from 'three';
|
|
5
|
+
import { injectFBO } from './fbo';
|
|
6
|
+
export function injectDepthBuffer(params = () => ({}), { injector } = {}) {
|
|
7
|
+
return assertInjector(injectDepthBuffer, injector, () => {
|
|
8
|
+
const size = computed(() => params().size || 256);
|
|
9
|
+
const frames = computed(() => params().frames || Infinity);
|
|
10
|
+
const store = injectStore();
|
|
11
|
+
const width = store.select('size', 'width');
|
|
12
|
+
const height = store.select('size', 'height');
|
|
13
|
+
const dpr = store.select('viewport', 'dpr');
|
|
14
|
+
const w = computed(() => size() || width() * dpr());
|
|
15
|
+
const h = computed(() => size() || height() * dpr());
|
|
16
|
+
const depthConfig = computed(() => {
|
|
17
|
+
const depthTexture = new DepthTexture(w(), h());
|
|
18
|
+
depthTexture.format = DepthFormat;
|
|
19
|
+
depthTexture.type = UnsignedShortType;
|
|
20
|
+
return { depthTexture };
|
|
21
|
+
});
|
|
22
|
+
const depthFBO = injectFBO(() => ({
|
|
23
|
+
width: w(),
|
|
24
|
+
height: h(),
|
|
25
|
+
settings: depthConfig(),
|
|
26
|
+
}));
|
|
27
|
+
let count = 0;
|
|
28
|
+
injectBeforeRender(({ gl, scene, camera }) => {
|
|
29
|
+
if (frames() === Infinity || count < frames()) {
|
|
30
|
+
gl.setRenderTarget(depthFBO());
|
|
31
|
+
gl.render(scene, camera);
|
|
32
|
+
gl.setRenderTarget(null);
|
|
33
|
+
count++;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return pick(depthFBO, 'depthTexture');
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGgtYnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9kZXB0aC1idWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVsQyxNQUFNLFVBQVUsaUJBQWlCLENBQ2hDLFNBQW1ELEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQzdELEVBQUUsUUFBUSxLQUE4QixFQUFFO0lBRTFDLE9BQU8sY0FBYyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDdkQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBRTNELE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXJELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRCxZQUFZLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxZQUFZLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDVixNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQ1gsUUFBUSxFQUFFLFdBQVcsRUFBRTtTQUN2QixDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLGtCQUFrQixDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxNQUFNLEVBQUUsS0FBSyxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7Z0JBQy9DLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDL0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3pCLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLEtBQUssRUFBRSxDQUFDO1lBQ1QsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3RTdG9yZSwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBEZXB0aEZvcm1hdCwgRGVwdGhUZXh0dXJlLCBVbnNpZ25lZFNob3J0VHlwZSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGluamVjdEZCTyB9IGZyb20gJy4vZmJvJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlcHRoQnVmZmVyKFxuXHRwYXJhbXM6ICgpID0+IHsgc2l6ZT86IG51bWJlcjsgZnJhbWVzPzogbnVtYmVyIH0gPSAoKSA9PiAoe30pLFxuXHR7IGluamVjdG9yIH06IHsgaW5qZWN0b3I/OiBJbmplY3RvciB9ID0ge30sXG4pIHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKGluamVjdERlcHRoQnVmZmVyLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHNpemUgPSBjb21wdXRlZCgoKSA9PiBwYXJhbXMoKS5zaXplIHx8IDI1Nik7XG5cdFx0Y29uc3QgZnJhbWVzID0gY29tcHV0ZWQoKCkgPT4gcGFyYW1zKCkuZnJhbWVzIHx8IEluZmluaXR5KTtcblxuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCB3aWR0aCA9IHN0b3JlLnNlbGVjdCgnc2l6ZScsICd3aWR0aCcpO1xuXHRcdGNvbnN0IGhlaWdodCA9IHN0b3JlLnNlbGVjdCgnc2l6ZScsICdoZWlnaHQnKTtcblx0XHRjb25zdCBkcHIgPSBzdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0JywgJ2RwcicpO1xuXG5cdFx0Y29uc3QgdyA9IGNvbXB1dGVkKCgpID0+IHNpemUoKSB8fCB3aWR0aCgpICogZHByKCkpO1xuXHRcdGNvbnN0IGggPSBjb21wdXRlZCgoKSA9PiBzaXplKCkgfHwgaGVpZ2h0KCkgKiBkcHIoKSk7XG5cblx0XHRjb25zdCBkZXB0aENvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IGRlcHRoVGV4dHVyZSA9IG5ldyBEZXB0aFRleHR1cmUodygpLCBoKCkpO1xuXHRcdFx0ZGVwdGhUZXh0dXJlLmZvcm1hdCA9IERlcHRoRm9ybWF0O1xuXHRcdFx0ZGVwdGhUZXh0dXJlLnR5cGUgPSBVbnNpZ25lZFNob3J0VHlwZTtcblx0XHRcdHJldHVybiB7IGRlcHRoVGV4dHVyZSB9O1xuXHRcdH0pO1xuXG5cdFx0Y29uc3QgZGVwdGhGQk8gPSBpbmplY3RGQk8oKCkgPT4gKHtcblx0XHRcdHdpZHRoOiB3KCksXG5cdFx0XHRoZWlnaHQ6IGgoKSxcblx0XHRcdHNldHRpbmdzOiBkZXB0aENvbmZpZygpLFxuXHRcdH0pKTtcblxuXHRcdGxldCBjb3VudCA9IDA7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGdsLCBzY2VuZSwgY2FtZXJhIH0pID0+IHtcblx0XHRcdGlmIChmcmFtZXMoKSA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMoKSkge1xuXHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQoZGVwdGhGQk8oKSk7XG5cdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHBpY2soZGVwdGhGQk8sICdkZXB0aFRleHR1cmUnKTtcblx0fSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DestroyRef, Directive, Injector, TemplateRef, ViewContainerRef, afterNextRender, computed, effect, inject, input, untracked, } from '@angular/core';
|
|
2
|
+
import { injectStore } from 'angular-three';
|
|
3
|
+
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
|
+
import { DepthTexture, FloatType, HalfFloatType, LinearFilter, WebGLRenderTarget, } from 'three';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export function injectFBO(params, { injector } = {}) {
|
|
7
|
+
return assertInjector(injectFBO, injector, () => {
|
|
8
|
+
const store = injectStore();
|
|
9
|
+
const size = store.select('size');
|
|
10
|
+
const viewport = store.select('viewport');
|
|
11
|
+
const width = computed(() => {
|
|
12
|
+
const { width } = params();
|
|
13
|
+
return typeof width === 'number' ? width : size().width * viewport().dpr;
|
|
14
|
+
});
|
|
15
|
+
const height = computed(() => {
|
|
16
|
+
const { height } = params();
|
|
17
|
+
return typeof height === 'number' ? height : size().height * viewport().dpr;
|
|
18
|
+
});
|
|
19
|
+
const settings = computed(() => {
|
|
20
|
+
const { width, settings } = params();
|
|
21
|
+
const _settings = (typeof width === 'number' ? settings : width) || {};
|
|
22
|
+
if (_settings.samples === undefined) {
|
|
23
|
+
_settings.samples = 0;
|
|
24
|
+
}
|
|
25
|
+
return _settings;
|
|
26
|
+
});
|
|
27
|
+
const target = computed(() => {
|
|
28
|
+
const [{ samples = 0, depth, ...targetSettings }, _width, _height] = [
|
|
29
|
+
untracked(settings),
|
|
30
|
+
untracked(width),
|
|
31
|
+
untracked(height),
|
|
32
|
+
];
|
|
33
|
+
const target = new WebGLRenderTarget(_width, _height, {
|
|
34
|
+
minFilter: LinearFilter,
|
|
35
|
+
magFilter: LinearFilter,
|
|
36
|
+
type: HalfFloatType,
|
|
37
|
+
...targetSettings,
|
|
38
|
+
});
|
|
39
|
+
if (depth) {
|
|
40
|
+
target.depthTexture = new DepthTexture(_width, _height, FloatType);
|
|
41
|
+
}
|
|
42
|
+
target.samples = samples;
|
|
43
|
+
return target;
|
|
44
|
+
});
|
|
45
|
+
effect(() => {
|
|
46
|
+
const [{ samples = 0 }, _width, _height, _target] = [settings(), width(), height(), target()];
|
|
47
|
+
_target.setSize(_width, _height);
|
|
48
|
+
if (samples)
|
|
49
|
+
_target.samples = samples;
|
|
50
|
+
});
|
|
51
|
+
inject(DestroyRef).onDestroy(() => target().dispose());
|
|
52
|
+
return target;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export class NgtsFBO {
|
|
56
|
+
constructor() {
|
|
57
|
+
this.fbo = input({});
|
|
58
|
+
this.template = inject(TemplateRef);
|
|
59
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
60
|
+
let ref;
|
|
61
|
+
const injector = inject(Injector);
|
|
62
|
+
afterNextRender(() => {
|
|
63
|
+
const fboTarget = injectFBO(() => {
|
|
64
|
+
const { width, height, ...settings } = this.fbo();
|
|
65
|
+
return { width, height, settings };
|
|
66
|
+
}, { injector });
|
|
67
|
+
untracked(() => {
|
|
68
|
+
ref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: fboTarget });
|
|
69
|
+
ref.detectChanges();
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
inject(DestroyRef).onDestroy(() => {
|
|
73
|
+
ref?.destroy();
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
static ngTemplateContextGuard(_, ctx) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsFBO, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
80
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtsFBO, isStandalone: true, selector: "ng-template[fbo]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
81
|
+
}
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsFBO, decorators: [{
|
|
83
|
+
type: Directive,
|
|
84
|
+
args: [{ selector: 'ng-template[fbo]', standalone: true }]
|
|
85
|
+
}], ctorParameters: () => [] });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9mYm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFVBQVUsRUFDVixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUVOLFlBQVksRUFDWixTQUFTLEVBQ1QsYUFBYSxFQUNiLFlBQVksRUFJWixpQkFBaUIsR0FFakIsTUFBTSxPQUFPLENBQUM7O0FBK0JmLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBMkIsRUFBRSxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUNoRyxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDM0IsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FB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QyxRQUFRLENBQUMsQ0FBQztRQUVsQyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FDMUIsR0FBRyxFQUFFO2dCQUNKLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNwQyxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsQ0FDWixDQUFDO1lBRUYsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDeEYsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQVUsRUFBRSxHQUFZO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQzs4R0FoQ1csT0FBTztrR0FBUCxPQUFPOzsyRkFBUCxPQUFPO2tCQURuQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHREZXN0cm95UmVmLFxuXHREaXJlY3RpdmUsXG5cdEVtYmVkZGVkVmlld1JlZixcblx0SW5qZWN0b3IsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQge1xuXHRDb2xvclNwYWNlLFxuXHREZXB0aFRleHR1cmUsXG5cdEZsb2F0VHlwZSxcblx0SGFsZkZsb2F0VHlwZSxcblx0TGluZWFyRmlsdGVyLFxuXHRNYWduaWZpY2F0aW9uVGV4dHVyZUZpbHRlcixcblx0TWluaWZpY2F0aW9uVGV4dHVyZUZpbHRlcixcblx0VGV4dHVyZURhdGFUeXBlLFxuXHRXZWJHTFJlbmRlclRhcmdldCxcblx0V3JhcHBpbmcsXG59IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFRleHR1cmVFbmNvZGluZyB9IGZyb20gJy4vZGVwcmVjYXRlZCc7XG5cbmludGVyZmFjZSBGQk9TZXR0aW5ncyB7XG5cdC8qKiBEZWZpbmVzIHRoZSBjb3VudCBvZiBNU0FBIHNhbXBsZXMuIENhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTCAyLiBEZWZhdWx0OiAwICovXG5cdHNhbXBsZXM/OiBudW1iZXI7XG5cdC8qKiBJZiBzZXQsIHRoZSBzY2VuZSBkZXB0aCB3aWxsIGJlIHJlbmRlcmVkIGludG8gYnVmZmVyLmRlcHRoVGV4dHVyZS4gRGVmYXVsdDogZmFsc2UgKi9cblx0ZGVwdGg/OiBib29sZWFuO1xuXG5cdC8vIFdlYkdMUmVuZGVyVGFyZ2V0T3B0aW9ucyA9PiBSZW5kZXJUYXJnZXRPcHRpb25zXG5cdHdyYXBTPzogV3JhcHBpbmcgfCB1bmRlZmluZWQ7XG5cdHdyYXBUPzogV3JhcHBpbmcgfCB1bmRlZmluZWQ7XG5cdG1hZ0ZpbHRlcj86IE1hZ25pZmljYXRpb25UZXh0dXJlRmlsdGVyIHwgdW5kZWZpbmVkO1xuXHRtaW5GaWx0ZXI/OiBNaW5pZmljYXRpb25UZXh0dXJlRmlsdGVyIHwgdW5kZWZpbmVkO1xuXHRmb3JtYXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7IC8vIFJHQkFGb3JtYXQ7XG5cdHR5cGU/OiBUZXh0dXJlRGF0YVR5cGUgfCB1bmRlZmluZWQ7IC8vIFVuc2lnbmVkQnl0ZVR5cGU7XG5cdGFuaXNvdHJvcHk/OiBudW1iZXIgfCB1bmRlZmluZWQ7IC8vIDE7XG5cdGRlcHRoQnVmZmVyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsgLy8gdHJ1ZTtcblx0c3RlbmNpbEJ1ZmZlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7IC8vIGZhbHNlO1xuXHRnZW5lcmF0ZU1pcG1hcHM/OiBib29sZWFuIHwgdW5kZWZpbmVkOyAvLyB0cnVlO1xuXHRkZXB0aFRleHR1cmU/OiBEZXB0aFRleHR1cmUgfCB1bmRlZmluZWQ7XG5cdGVuY29kaW5nPzogVGV4dHVyZUVuY29kaW5nIHwgdW5kZWZpbmVkO1xuXHRjb2xvclNwYWNlPzogQ29sb3JTcGFjZSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzRkJPUGFyYW1zIHtcblx0d2lkdGg/OiBudW1iZXIgfCBGQk9TZXR0aW5ncztcblx0aGVpZ2h0PzogbnVtYmVyO1xuXHRzZXR0aW5ncz86IEZCT1NldHRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RkJPKHBhcmFtczogKCkgPT4gTmd0c0ZCT1BhcmFtcywgeyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9KSB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3RGQk8sIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IHNpemUgPSBzdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0XHRjb25zdCB2aWV3cG9ydCA9IHN0b3JlLnNlbGVjdCgndmlld3BvcnQnKTtcblxuXHRcdGNvbnN0IHdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgeyB3aWR0aCB9ID0gcGFyYW1zKCk7XG5cdFx0XHRyZXR1cm4gdHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyA/IHdpZHRoIDogc2l6ZSgpLndpZHRoICogdmlld3BvcnQoKS5kcHI7XG5cdFx0fSk7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgeyBoZWlnaHQgfSA9IHBhcmFtcygpO1xuXHRcdFx0cmV0dXJuIHR5cGVvZiBoZWlnaHQgPT09ICdudW1iZXInID8gaGVpZ2h0IDogc2l6ZSgpLmhlaWdodCAqIHZpZXdwb3J0KCkuZHByO1xuXHRcdH0pO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgeyB3aWR0aCwgc2V0dGluZ3MgfSA9IHBhcmFtcygpO1xuXHRcdFx0Y29uc3QgX3NldHRpbmdzID0gKHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgPyBzZXR0aW5ncyA6ICh3aWR0aCBhcyBGQk9TZXR0aW5ncykpIHx8IHt9O1xuXHRcdFx0aWYgKF9zZXR0aW5ncy5zYW1wbGVzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0X3NldHRpbmdzLnNhbXBsZXMgPSAwO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIF9zZXR0aW5ncztcblx0XHR9KTtcblxuXHRcdGNvbnN0IHRhcmdldCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IFt7IHNhbXBsZXMgPSAwLCBkZXB0aCwgLi4udGFyZ2V0U2V0dGluZ3MgfSwgX3dpZHRoLCBfaGVpZ2h0XSA9IFtcblx0XHRcdFx0dW50cmFja2VkKHNldHRpbmdzKSxcblx0XHRcdFx0dW50cmFja2VkKHdpZHRoKSxcblx0XHRcdFx0dW50cmFja2VkKGhlaWdodCksXG5cdFx0XHRdO1xuXHRcdFx0Y29uc3QgdGFyZ2V0ID0gbmV3IFdlYkdMUmVuZGVyVGFyZ2V0KF93aWR0aCwgX2hlaWdodCwge1xuXHRcdFx0XHRtaW5GaWx0ZXI6IExpbmVhckZpbHRlcixcblx0XHRcdFx0bWFnRmlsdGVyOiBMaW5lYXJGaWx0ZXIsXG5cdFx0XHRcdHR5cGU6IEhhbGZGbG9hdFR5cGUsXG5cdFx0XHRcdC4uLnRhcmdldFNldHRpbmdzLFxuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChkZXB0aCkge1xuXHRcdFx0XHR0YXJnZXQuZGVwdGhUZXh0dXJlID0gbmV3IERlcHRoVGV4dHVyZShfd2lkdGgsIF9oZWlnaHQsIEZsb2F0VHlwZSk7XG5cdFx0XHR9XG5cblx0XHRcdHRhcmdldC5zYW1wbGVzID0gc2FtcGxlcztcblx0XHRcdHJldHVybiB0YXJnZXQ7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW3sgc2FtcGxlcyA9IDAgfSwgX3dpZHRoLCBfaGVpZ2h0LCBfdGFyZ2V0XSA9IFtzZXR0aW5ncygpLCB3aWR0aCgpLCBoZWlnaHQoKSwgdGFyZ2V0KCldO1xuXHRcdFx0X3RhcmdldC5zZXRTaXplKF93aWR0aCwgX2hlaWdodCk7XG5cdFx0XHRpZiAoc2FtcGxlcykgX3RhcmdldC5zYW1wbGVzID0gc2FtcGxlcztcblx0XHR9KTtcblxuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4gdGFyZ2V0KCkuZGlzcG9zZSgpKTtcblxuXHRcdHJldHVybiB0YXJnZXQ7XG5cdH0pO1xufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtmYm9dJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNGQk8ge1xuXHRmYm8gPSBpbnB1dCh7fSBhcyB7IHdpZHRoOiBOZ3RzRkJPUGFyYW1zWyd3aWR0aCddOyBoZWlnaHQ6IE5ndHNGQk9QYXJhbXNbJ2hlaWdodCddIH0gJiBGQk9TZXR0aW5ncyk7XG5cblx0cHJpdmF0ZSB0ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZik7XG5cdHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRsZXQgcmVmOiBFbWJlZGRlZFZpZXdSZWY8eyAkaW1wbGljaXQ6IFJldHVyblR5cGU8dHlwZW9mIGluamVjdEZCTz4gfT47XG5cdFx0Y29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IGZib1RhcmdldCA9IGluamVjdEZCTyhcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgLi4uc2V0dGluZ3MgfSA9IHRoaXMuZmJvKCk7XG5cdFx0XHRcdFx0cmV0dXJuIHsgd2lkdGgsIGhlaWdodCwgc2V0dGluZ3MgfTtcblx0XHRcdFx0fSxcblx0XHRcdFx0eyBpbmplY3RvciB9LFxuXHRcdFx0KTtcblxuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0cmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlLCB7ICRpbXBsaWNpdDogZmJvVGFyZ2V0IH0pO1xuXHRcdFx0XHRyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHJlZj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoXzogTmd0c0ZCTywgY3R4OiB1bmtub3duKTogY3R4IGlzIHsgJGltcGxpY2l0OiBSZXR1cm5UeXBlPHR5cGVvZiBpbmplY3RGQk8+IH0ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG4iXX0=
|