angular-three-soba 2.0.0-beta.26 → 2.0.0-beta.261
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -4
- package/abstractions/README.md +278 -2
- package/abstractions/index.d.ts +11 -6
- package/abstractions/lib/catmull-rom-line.d.ts +648 -0
- package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
- package/abstractions/lib/edges.d.ts +850 -0
- package/abstractions/lib/gradient-texture.d.ts +24 -0
- package/abstractions/lib/grid.d.ts +339 -0
- package/abstractions/lib/helper.d.ts +25 -0
- package/abstractions/lib/line.d.ts +41 -0
- package/abstractions/lib/prism-geometry.d.ts +30 -0
- package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
- package/abstractions/lib/text-3d.d.ts +338 -0
- package/abstractions/lib/text.d.ts +55 -0
- package/cameras/README.md +91 -2
- package/cameras/index.d.ts +4 -4
- package/cameras/lib/camera-content.d.ts +10 -0
- package/cameras/lib/cube-camera.d.ts +38 -0
- package/cameras/lib/orthographic-camera.d.ts +40 -0
- package/cameras/lib/perspective-camera.d.ts +36 -0
- package/controls/README.md +95 -2
- package/controls/index.d.ts +2 -1
- package/controls/lib/camera-controls.d.ts +31 -0
- package/controls/lib/orbit-controls.d.ts +38 -0
- package/esm2022/abstractions/index.mjs +12 -7
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
- package/esm2022/abstractions/lib/edges.mjs +70 -0
- package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
- package/esm2022/abstractions/lib/grid.mjs +103 -0
- package/esm2022/abstractions/lib/helper.mjs +80 -0
- package/esm2022/abstractions/lib/line.mjs +123 -0
- package/esm2022/abstractions/lib/prism-geometry.mjs +55 -0
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
- package/esm2022/abstractions/lib/text-3d.mjs +98 -0
- package/esm2022/abstractions/lib/text.mjs +92 -0
- package/esm2022/cameras/index.mjs +5 -5
- package/esm2022/cameras/lib/camera-content.mjs +14 -0
- package/esm2022/cameras/lib/cube-camera.mjs +111 -0
- package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
- package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
- package/esm2022/controls/index.mjs +3 -2
- package/esm2022/controls/lib/camera-controls.mjs +127 -0
- package/esm2022/controls/lib/orbit-controls.mjs +126 -0
- package/esm2022/loaders/index.mjs +6 -5
- package/esm2022/loaders/lib/font-loader.mjs +49 -0
- package/esm2022/loaders/lib/gltf-loader.mjs +33 -0
- package/esm2022/loaders/lib/loader.mjs +109 -0
- package/esm2022/loaders/lib/progress.mjs +51 -0
- package/esm2022/loaders/lib/texture-loader.mjs +32 -0
- package/esm2022/materials/index.mjs +7 -7
- package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
- package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
- package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
- package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
- package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
- package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
- package/esm2022/misc/index.mjs +10 -14
- package/esm2022/misc/lib/animations.mjs +74 -0
- package/esm2022/misc/lib/bake-shadows.mjs +26 -0
- package/esm2022/misc/lib/computed-attribute.mjs +56 -0
- package/esm2022/misc/lib/constants.mjs +5 -0
- package/esm2022/misc/lib/decal.mjs +135 -0
- package/esm2022/misc/lib/deprecated.mjs +15 -0
- package/esm2022/misc/lib/depth-buffer.mjs +39 -0
- package/esm2022/misc/lib/fbo.mjs +89 -0
- package/esm2022/misc/lib/sampler.mjs +121 -0
- package/esm2022/shaders/index.mjs +3 -18
- package/esm2022/shaders/lib/grid-material.mjs +81 -0
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
- package/esm2022/staging/index.mjs +19 -22
- package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
- package/esm2022/staging/lib/backdrop.mjs +73 -0
- package/esm2022/staging/lib/bb-anchor.mjs +58 -0
- package/esm2022/staging/lib/bounds.mjs +286 -0
- package/esm2022/staging/lib/camera-shake.mjs +69 -0
- package/esm2022/staging/lib/caustics.mjs +188 -0
- package/esm2022/staging/lib/center.mjs +113 -0
- package/esm2022/staging/lib/contact-shadows.mjs +201 -0
- package/esm2022/staging/lib/environment.mjs +465 -0
- package/esm2022/staging/lib/float.mjs +60 -0
- package/esm2022/staging/lib/lightformer.mjs +107 -0
- package/esm2022/staging/lib/matcap-texture.mjs +81 -0
- package/esm2022/staging/lib/normal-texture.mjs +85 -0
- package/esm2022/staging/lib/randomized-lights.mjs +104 -0
- package/esm2022/staging/lib/render-texture.mjs +213 -0
- package/esm2022/staging/lib/sky.mjs +86 -0
- package/esm2022/staging/lib/spot-light.mjs +450 -0
- package/esm2022/staging/lib/stage.mjs +236 -0
- package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
- package/esm2022/vanilla-exports/index.mjs +3 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +739 -718
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +260 -307
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +174 -110
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +151 -129
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +511 -764
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +405 -2149
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +33 -1373
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2329 -3538
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
- package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
- package/loaders/README.md +130 -2
- package/loaders/index.d.ts +5 -4
- package/loaders/lib/font-loader.d.ts +27 -0
- package/loaders/lib/gltf-loader.d.ts +21 -0
- package/loaders/lib/loader.d.ts +29 -0
- package/loaders/lib/progress.d.ts +9 -0
- package/loaders/lib/texture-loader.d.ts +13 -0
- package/materials/README.md +160 -2
- package/materials/index.d.ts +6 -6
- package/materials/lib/custom-shader-material.d.ts +19 -0
- package/materials/lib/mesh-distort-material.d.ts +18 -0
- package/materials/lib/mesh-reflector-material.d.ts +50 -0
- package/materials/lib/mesh-refraction-material.d.ts +42 -0
- package/materials/lib/mesh-transmission-material.d.ts +77 -0
- package/materials/lib/mesh-wobble-material.d.ts +15 -0
- package/metadata.json +1 -1
- package/misc/README.md +217 -2
- package/misc/index.d.ts +9 -13
- package/misc/lib/animations.d.ts +14 -0
- package/misc/lib/computed-attribute.d.ts +69 -0
- package/misc/lib/constants.d.ts +1 -0
- package/misc/lib/decal.d.ts +27 -0
- package/misc/lib/deprecated.d.ts +14 -0
- package/misc/lib/depth-buffer.d.ts +8 -0
- package/misc/lib/fbo.d.ts +47 -0
- package/misc/lib/sampler.d.ts +73 -0
- package/package.json +60 -38
- package/shaders/index.d.ts +2 -17
- package/shaders/lib/grid-material.d.ts +69 -0
- package/shaders/lib/mesh-refraction-material.d.ts +11 -0
- package/staging/README.md +472 -2
- package/staging/index.d.ts +18 -21
- package/staging/lib/accumulative-shadows.d.ts +75 -0
- package/staging/lib/backdrop.d.ts +22 -0
- package/staging/lib/bb-anchor.d.ts +17 -0
- package/staging/lib/bounds.d.ts +47 -0
- package/staging/lib/camera-shake.d.ts +29 -0
- package/staging/lib/caustics.d.ts +53 -0
- package/staging/lib/center.d.ts +422 -0
- package/staging/lib/contact-shadows.d.ts +45 -0
- package/staging/lib/environment.d.ts +159 -0
- package/staging/lib/float.d.ts +19 -0
- package/staging/lib/lightformer.d.ts +334 -0
- package/staging/lib/matcap-texture.d.ts +32 -0
- package/staging/lib/normal-texture.d.ts +37 -0
- package/staging/lib/randomized-lights.d.ts +54 -0
- package/staging/lib/render-texture.d.ts +64 -0
- package/staging/lib/sky.d.ts +32 -0
- package/staging/lib/spot-light.d.ts +120 -0
- package/staging/lib/stage.d.ts +376 -0
- package/vanilla-exports/README.md +3 -0
- package/vanilla-exports/index.d.ts +27 -0
- package/web-types.json +1 -1
- package/abstractions/billboard/billboard.d.ts +0 -28
- package/abstractions/detailed/detailed.d.ts +0 -26
- package/abstractions/edges/edges.d.ts +0 -34
- package/abstractions/grid/grid.d.ts +0 -50
- package/abstractions/text/text.d.ts +0 -82
- package/abstractions/text-3d/text-3d.d.ts +0 -84
- package/assets/distort.vert.glsl +0 -1
- package/cameras/camera/camera-content.d.ts +0 -13
- package/cameras/camera/camera.d.ts +0 -26
- package/cameras/cube-camera/cube-camera.d.ts +0 -69
- package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
- package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
- package/controls/orbit-controls/orbit-controls.d.ts +0 -54
- package/esm2022/abstractions/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/detailed/detailed.mjs +0 -64
- package/esm2022/abstractions/edges/edges.mjs +0 -88
- package/esm2022/abstractions/grid/grid.mjs +0 -180
- package/esm2022/abstractions/text/text.mjs +0 -274
- package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
- package/esm2022/cameras/camera/camera-content.mjs +0 -21
- package/esm2022/cameras/camera/camera.mjs +0 -77
- package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -185
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
- package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
- package/esm2022/gizmos/index.mjs +0 -4
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
- package/esm2022/loaders/loader/loader.mjs +0 -138
- package/esm2022/loaders/progress/progress.mjs +0 -52
- package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/materials/point-material/point-material.mjs +0 -50
- package/esm2022/misc/animations/animations.mjs +0 -59
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
- package/esm2022/misc/caustics/caustics.mjs +0 -387
- package/esm2022/misc/decal/decal.mjs +0 -187
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
- package/esm2022/misc/example/example.mjs +0 -160
- package/esm2022/misc/fbo/fbo.mjs +0 -47
- package/esm2022/misc/html/html-wrapper.mjs +0 -478
- package/esm2022/misc/html/html.mjs +0 -304
- package/esm2022/misc/sampler/sampler.mjs +0 -142
- package/esm2022/misc/shadow/shadow.mjs +0 -111
- package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
- package/esm2022/misc/trail/trail.mjs +0 -209
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
- package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
- package/esm2022/modifiers/index.mjs +0 -2
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
- package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
- package/esm2022/performances/index.mjs +0 -8
- package/esm2022/performances/instances/instances.mjs +0 -220
- package/esm2022/performances/instances/position-mesh.mjs +0 -52
- package/esm2022/performances/points/points-input.mjs +0 -64
- package/esm2022/performances/points/points.mjs +0 -326
- package/esm2022/performances/points/position-point.mjs +0 -54
- package/esm2022/performances/segments/segment-object.mjs +0 -9
- package/esm2022/performances/segments/segments.mjs +0 -182
- package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
- package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
- package/esm2022/staging/backdrop/backdrop.mjs +0 -77
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
- package/esm2022/staging/bounds/bounds.mjs +0 -308
- package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
- package/esm2022/staging/center/center.mjs +0 -165
- package/esm2022/staging/cloud/cloud.mjs +0 -158
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
- package/esm2022/staging/environment/assets.mjs +0 -13
- package/esm2022/staging/environment/environment-cube.mjs +0 -47
- package/esm2022/staging/environment/environment-ground.mjs +0 -41
- package/esm2022/staging/environment/environment-input.mjs +0 -119
- package/esm2022/staging/environment/environment-map.mjs +0 -53
- package/esm2022/staging/environment/environment-portal.mjs +0 -113
- package/esm2022/staging/environment/environment.mjs +0 -61
- package/esm2022/staging/environment/utils.mjs +0 -106
- package/esm2022/staging/float/float.mjs +0 -94
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
- package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
- package/esm2022/staging/sky/sky.mjs +0 -119
- package/esm2022/staging/sparkles/sparkles.mjs +0 -164
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
- package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
- package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
- package/esm2022/staging/spot-light/spot-light.mjs +0 -81
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
- package/esm2022/staging/stage/stage.mjs +0 -389
- package/esm2022/staging/stars/stars.mjs +0 -147
- package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
- package/esm2022/staging/wireframe/wireframe.mjs +0 -228
- package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
- package/esm2022/utils/content/content.mjs +0 -15
- package/esm2022/utils/index.mjs +0 -2
- package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
- package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
- package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
- package/fesm2022/angular-three-soba-performances.mjs +0 -956
- package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
- package/fesm2022/angular-three-soba-utils.mjs +0 -22
- package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
- package/gizmos/README.md +0 -3
- package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
- package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
- package/gizmos/index.d.ts +0 -3
- package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
- package/loaders/loader/loader.d.ts +0 -33
- package/loaders/progress/progress.d.ts +0 -9
- package/loaders/texture-loader/texture-loader.d.ts +0 -7
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
- package/materials/point-material/point-material.d.ts +0 -24
- package/misc/animations/animations.d.ts +0 -15
- package/misc/caustics/caustics.d.ts +0 -87
- package/misc/decal/decal.d.ts +0 -49
- package/misc/depth-buffer/depth-buffer.d.ts +0 -9
- package/misc/example/example.d.ts +0 -81
- package/misc/fbo/fbo.d.ts +0 -17
- package/misc/html/html-wrapper.d.ts +0 -559
- package/misc/html/html.d.ts +0 -214
- package/misc/sampler/sampler.d.ts +0 -67
- package/misc/shadow/shadow.d.ts +0 -37
- package/misc/stats-gl/stats-gl.d.ts +0 -24
- package/misc/trail/trail.d.ts +0 -57
- package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
- package/misc/trail-texture/trail-texture.d.ts +0 -50
- package/modifiers/README.md +0 -3
- package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
- package/modifiers/index.d.ts +0 -1
- package/performances/README.md +0 -3
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
- package/performances/adaptive-events/adaptive-events.d.ts +0 -9
- package/performances/index.d.ts +0 -7
- package/performances/instances/instances.d.ts +0 -79
- package/performances/instances/position-mesh.d.ts +0 -10
- package/performances/points/points-input.d.ts +0 -32
- package/performances/points/points.d.ts +0 -92
- package/performances/points/position-point.d.ts +0 -11
- package/performances/segments/segment-object.d.ts +0 -7
- package/performances/segments/segments.d.ts +0 -124
- package/shaders/blur-pass/blur-pass.d.ts +0 -23
- package/shaders/caustics/caustics-material.d.ts +0 -4
- package/shaders/caustics/caustics-projection-material.d.ts +0 -4
- package/shaders/convolution-material/convolution-material.d.ts +0 -7
- package/shaders/discard-material/discard-material.d.ts +0 -3
- package/shaders/grid-material/grid-material.d.ts +0 -37
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
- package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
- package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
- package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
- package/shaders/shader-material/shader-material.d.ts +0 -6
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
- package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
- package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
- package/shaders/star-field-material/star-field-material.d.ts +0 -13
- package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
- package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
- package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
- package/staging/backdrop/backdrop.d.ts +0 -30
- package/staging/bb-anchor/bb-anchor.d.ts +0 -27
- package/staging/bounds/bounds.d.ts +0 -134
- package/staging/camera-shake/camera-shake.d.ts +0 -43
- package/staging/center/center.d.ts +0 -70
- package/staging/cloud/cloud.d.ts +0 -51
- package/staging/contact-shadows/contact-shadows.d.ts +0 -70
- package/staging/environment/assets.d.ts +0 -13
- package/staging/environment/environment-cube.d.ts +0 -15
- package/staging/environment/environment-ground.d.ts +0 -13
- package/staging/environment/environment-input.d.ts +0 -68
- package/staging/environment/environment-map.d.ts +0 -16
- package/staging/environment/environment-portal.d.ts +0 -18
- package/staging/environment/environment.d.ts +0 -8
- package/staging/environment/utils.d.ts +0 -7
- package/staging/float/float.d.ts +0 -31
- package/staging/matcap-texture/matcap-texture.d.ts +0 -13
- package/staging/normal-texture/normal-texture.d.ts +0 -16
- package/staging/sky/sky.d.ts +0 -48
- package/staging/sparkles/sparkles.d.ts +0 -63
- package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/shadow-mesh.d.ts +0 -37
- package/staging/spot-light/spot-light-input.d.ts +0 -38
- package/staging/spot-light/spot-light.d.ts +0 -39
- package/staging/spot-light/volumetric-mesh.d.ts +0 -24
- package/staging/stage/stage.d.ts +0 -130
- package/staging/stars/stars.d.ts +0 -45
- package/staging/wireframe/wireframe-input.d.ts +0 -65
- package/staging/wireframe/wireframe.d.ts +0 -28
- package/utils/README.md +0 -3
- package/utils/content/content.d.ts +0 -8
- package/utils/index.d.ts +0 -1
- /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Directive, Input, computed, effect, inject } from '@angular/core';
|
|
3
|
-
import { addAfterEffect, addEffect, injectNgtStore, is, signalStore } from 'angular-three';
|
|
4
|
-
import Stats from 'stats-gl';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class NgtsStatsGL {
|
|
7
|
-
set _parent(parent) {
|
|
8
|
-
this.inputs.set({ parent });
|
|
9
|
-
}
|
|
10
|
-
set _containerClass(containerClass) {
|
|
11
|
-
this.inputs.set({ containerClass });
|
|
12
|
-
}
|
|
13
|
-
set _config(config) {
|
|
14
|
-
this.inputs.set({ config });
|
|
15
|
-
}
|
|
16
|
-
constructor() {
|
|
17
|
-
this.inputs = signalStore();
|
|
18
|
-
this.document = inject(DOCUMENT);
|
|
19
|
-
this.store = injectNgtStore();
|
|
20
|
-
this.gl = this.store.select('gl');
|
|
21
|
-
this.config = this.inputs.select('config');
|
|
22
|
-
this.parent = this.inputs.select('parent');
|
|
23
|
-
this.containerClass = this.inputs.select('containerClass');
|
|
24
|
-
this.stats = computed(() => {
|
|
25
|
-
const [config, gl] = [this.config() || {}, this.gl()];
|
|
26
|
-
const stats = new Stats(config);
|
|
27
|
-
stats.init(gl.domElement);
|
|
28
|
-
return stats;
|
|
29
|
-
});
|
|
30
|
-
effect((onCleanup) => {
|
|
31
|
-
const [parent, stats, containerClass] = [this.parent(), this.stats(), this.containerClass()];
|
|
32
|
-
const node = parent ? (is.ref(parent) ? parent.nativeElement : parent) : this.document.body;
|
|
33
|
-
node.appendChild(stats.container);
|
|
34
|
-
if (containerClass)
|
|
35
|
-
stats.container.classList.add(...containerClass.split(' ').filter(Boolean));
|
|
36
|
-
const begin = addEffect(() => stats.begin());
|
|
37
|
-
const end = addAfterEffect(() => stats.end());
|
|
38
|
-
onCleanup(() => {
|
|
39
|
-
node.removeChild(stats.container);
|
|
40
|
-
begin();
|
|
41
|
-
end();
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsStatsGL, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
46
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsStatsGL, isStandalone: true, selector: "ngts-stats-gl", inputs: { _parent: ["parent", "_parent"], _containerClass: ["containerClass", "_containerClass"], _config: ["config", "_config"] }, ngImport: i0 }); }
|
|
47
|
-
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsStatsGL, decorators: [{
|
|
49
|
-
type: Directive,
|
|
50
|
-
args: [{ selector: 'ngts-stats-gl', standalone: true }]
|
|
51
|
-
}], ctorParameters: function () { return []; }, propDecorators: { _parent: [{
|
|
52
|
-
type: Input,
|
|
53
|
-
args: [{ alias: 'parent' }]
|
|
54
|
-
}], _containerClass: [{
|
|
55
|
-
type: Input,
|
|
56
|
-
args: [{ alias: 'containerClass' }]
|
|
57
|
-
}], _config: [{
|
|
58
|
-
type: Input,
|
|
59
|
-
args: [{ alias: 'config' }]
|
|
60
|
-
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMtZ2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvc3RhdHMtZ2wvc3RhdHMtZ2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sS0FBSyxNQUFNLFVBQVUsQ0FBQzs7QUFTN0IsTUFBTSxPQUFPLFdBQVc7SUFHdkIsSUFBZ0MsT0FBTyxDQUFDLE1BQTJCO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBd0MsZUFBZSxDQUFDLGNBQXNCO1FBQzdFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBZ0MsT0FBTyxDQUFDLE1BQWtDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBaUJEO1FBN0JRLFdBQU0sR0FBRyxXQUFXLEVBQW9CLENBQUM7UUFjekMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixVQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekIsT0FBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRELFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFHRixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDN0YsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUM1RixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLGNBQWM7Z0JBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUVoRyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDN0MsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xDLEtBQUssRUFBRSxDQUFDO2dCQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBN0NXLFdBQVc7a0dBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTswRUFJekIsT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSWMsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFJRixPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWRkQWZ0ZXJFZmZlY3QsIGFkZEVmZmVjdCwgaW5qZWN0Tmd0U3RvcmUsIGlzLCBzaWduYWxTdG9yZSwgdHlwZSBOZ3RSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCBTdGF0cyBmcm9tICdzdGF0cy1nbCc7XG5cbmV4cG9ydCB0eXBlIE5ndHNTdGF0c0dMU3RhdGUgPSB7XG5cdHBhcmVudD86IE5ndFJlZjxIVE1MRWxlbWVudD47XG5cdGNvbnRhaW5lckNsYXNzPzogc3RyaW5nO1xuXHRjb25maWc/OiBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIFN0YXRzPlswXTtcbn07XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndHMtc3RhdHMtZ2wnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c1N0YXRzR0wge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTdGF0c0dMU3RhdGU+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdwYXJlbnQnIH0pIHNldCBfcGFyZW50KHBhcmVudDogTmd0UmVmPEhUTUxFbGVtZW50Pikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHBhcmVudCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29udGFpbmVyQ2xhc3MnIH0pIHNldCBfY29udGFpbmVyQ2xhc3MoY29udGFpbmVyQ2xhc3M6IHN0cmluZykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGNvbnRhaW5lckNsYXNzIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdjb25maWcnIH0pIHNldCBfY29uZmlnKGNvbmZpZzogTmd0c1N0YXRzR0xTdGF0ZVsnY29uZmlnJ10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb25maWcgfSk7XG5cdH1cblxuXHRwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgZ2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblxuXHRwcml2YXRlIGNvbmZpZyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29uZmlnJyk7XG5cdHByaXZhdGUgcGFyZW50ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdwYXJlbnQnKTtcblx0cHJpdmF0ZSBjb250YWluZXJDbGFzcyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29udGFpbmVyQ2xhc3MnKTtcblxuXHRwcml2YXRlIHN0YXRzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtjb25maWcsIGdsXSA9IFt0aGlzLmNvbmZpZygpIHx8IHt9LCB0aGlzLmdsKCldO1xuXHRcdGNvbnN0IHN0YXRzID0gbmV3IFN0YXRzKGNvbmZpZyk7XG5cdFx0c3RhdHMuaW5pdChnbC5kb21FbGVtZW50KTtcblx0XHRyZXR1cm4gc3RhdHM7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbcGFyZW50LCBzdGF0cywgY29udGFpbmVyQ2xhc3NdID0gW3RoaXMucGFyZW50KCksIHRoaXMuc3RhdHMoKSwgdGhpcy5jb250YWluZXJDbGFzcygpXTtcblx0XHRcdGNvbnN0IG5vZGUgPSBwYXJlbnQgPyAoaXMucmVmKHBhcmVudCkgPyBwYXJlbnQubmF0aXZlRWxlbWVudCA6IHBhcmVudCkgOiB0aGlzLmRvY3VtZW50LmJvZHk7XG5cdFx0XHRub2RlLmFwcGVuZENoaWxkKHN0YXRzLmNvbnRhaW5lcik7XG5cdFx0XHRpZiAoY29udGFpbmVyQ2xhc3MpIHN0YXRzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKC4uLmNvbnRhaW5lckNsYXNzLnNwbGl0KCcgJykuZmlsdGVyKEJvb2xlYW4pKTtcblxuXHRcdFx0Y29uc3QgYmVnaW4gPSBhZGRFZmZlY3QoKCkgPT4gc3RhdHMuYmVnaW4oKSk7XG5cdFx0XHRjb25zdCBlbmQgPSBhZGRBZnRlckVmZmVjdCgoKSA9PiBzdGF0cy5lbmQoKSk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRub2RlLnJlbW92ZUNoaWxkKHN0YXRzLmNvbnRhaW5lcik7XG5cdFx0XHRcdGJlZ2luKCk7XG5cdFx0XHRcdGVuZCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect, runInInjectionContext, } from '@angular/core';
|
|
2
|
-
import { NgtPortal, NgtPortalContent, assertInjectionContext, extend, injectBeforeRender, injectNgtRef, injectNgtStore, is, signalStore, } from 'angular-three';
|
|
3
|
-
import { MeshLineGeometry, MeshLineMaterial } from 'meshline';
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import { Group, Mesh } from 'three';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
const shiftLeft = (collection, steps = 1) => {
|
|
8
|
-
collection.set(collection.subarray(steps));
|
|
9
|
-
collection.fill(-Infinity, -steps);
|
|
10
|
-
return collection;
|
|
11
|
-
};
|
|
12
|
-
const defaultSettings = {
|
|
13
|
-
width: 0.2,
|
|
14
|
-
length: 1,
|
|
15
|
-
decay: 1,
|
|
16
|
-
local: false,
|
|
17
|
-
stride: 0,
|
|
18
|
-
interval: 1,
|
|
19
|
-
};
|
|
20
|
-
export function injectNgtsTrail(targetFactory, settingsFactory, { injector } = {}) {
|
|
21
|
-
injector = assertInjectionContext(injectNgtsTrail, injector);
|
|
22
|
-
return runInInjectionContext(injector, () => {
|
|
23
|
-
const points = injectNgtRef();
|
|
24
|
-
let frameCount = 0;
|
|
25
|
-
const prevPosition = new THREE.Vector3();
|
|
26
|
-
const worldPosition = new THREE.Vector3();
|
|
27
|
-
const _target = computed(() => {
|
|
28
|
-
const _target = targetFactory();
|
|
29
|
-
if (is.ref(_target))
|
|
30
|
-
return _target.nativeElement;
|
|
31
|
-
return _target;
|
|
32
|
-
});
|
|
33
|
-
const _settings = computed(() => ({ ...defaultSettings, ...settingsFactory() }));
|
|
34
|
-
const _length = computed(() => _settings().length);
|
|
35
|
-
effect(() => {
|
|
36
|
-
const [target, length] = [_target(), _length()];
|
|
37
|
-
if (target) {
|
|
38
|
-
points.nativeElement = Float32Array.from({ length: length * 10 * 3 }, (_, i) => target.position.getComponent(i % 3));
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
injectBeforeRender(() => {
|
|
42
|
-
const [target, _points, { local, decay, stride, interval }] = [
|
|
43
|
-
_target(),
|
|
44
|
-
points.nativeElement,
|
|
45
|
-
_settings(),
|
|
46
|
-
];
|
|
47
|
-
if (!target)
|
|
48
|
-
return;
|
|
49
|
-
if (!_points)
|
|
50
|
-
return;
|
|
51
|
-
if (frameCount === 0) {
|
|
52
|
-
let newPosition;
|
|
53
|
-
if (local) {
|
|
54
|
-
newPosition = target.position;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
target.getWorldPosition(worldPosition);
|
|
58
|
-
newPosition = worldPosition;
|
|
59
|
-
}
|
|
60
|
-
const steps = 1 * decay;
|
|
61
|
-
for (let i = 0; i < steps; i++) {
|
|
62
|
-
if (newPosition.distanceTo(prevPosition) < stride)
|
|
63
|
-
continue;
|
|
64
|
-
shiftLeft(_points, 3);
|
|
65
|
-
_points.set(newPosition.toArray(), _points.length - 3);
|
|
66
|
-
}
|
|
67
|
-
prevPosition.copy(newPosition);
|
|
68
|
-
}
|
|
69
|
-
frameCount++;
|
|
70
|
-
frameCount = frameCount % interval;
|
|
71
|
-
});
|
|
72
|
-
return points;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
extend({ Group, Mesh });
|
|
76
|
-
export class NgtsTrail {
|
|
77
|
-
set _color(color) {
|
|
78
|
-
this.inputs.set({ color });
|
|
79
|
-
}
|
|
80
|
-
set _attenuation(attenuation) {
|
|
81
|
-
this.inputs.set({ attenuation });
|
|
82
|
-
}
|
|
83
|
-
set _target(target) {
|
|
84
|
-
this.inputs.set({ target });
|
|
85
|
-
}
|
|
86
|
-
set _settings(settings) {
|
|
87
|
-
this.inputs.set({ settings: { ...defaultSettings, ...settings } });
|
|
88
|
-
}
|
|
89
|
-
constructor() {
|
|
90
|
-
this.inputs = signalStore({ settings: defaultSettings, color: 'hotpink' });
|
|
91
|
-
this.trailRef = injectNgtRef();
|
|
92
|
-
this.groupRef = injectNgtRef();
|
|
93
|
-
this.children = this.groupRef.children('both');
|
|
94
|
-
this.store = injectNgtStore();
|
|
95
|
-
this.size = this.store.select('size');
|
|
96
|
-
this.target = this.inputs.select('target');
|
|
97
|
-
this.settings = this.inputs.select('settings');
|
|
98
|
-
this.width = computed(() => this.settings().width);
|
|
99
|
-
this.color = this.inputs.select('color');
|
|
100
|
-
this.attenuation = this.inputs.select('attenuation');
|
|
101
|
-
this.anchor = computed(() => {
|
|
102
|
-
const target = this.target();
|
|
103
|
-
if (target)
|
|
104
|
-
return target;
|
|
105
|
-
const group = this.groupRef.nativeElement;
|
|
106
|
-
if (group) {
|
|
107
|
-
return group.children.find((child) => child instanceof THREE.Object3D) || null;
|
|
108
|
-
}
|
|
109
|
-
return null;
|
|
110
|
-
});
|
|
111
|
-
this.points = injectNgtsTrail(this.anchor, this.settings);
|
|
112
|
-
this.scene = this.store.select('scene');
|
|
113
|
-
this.geometry = new MeshLineGeometry();
|
|
114
|
-
this.material = computed(() => {
|
|
115
|
-
const [width, color, size] = [this.width(), this.color(), this.size()];
|
|
116
|
-
const m = new MeshLineMaterial({
|
|
117
|
-
lineWidth: 0.1 * width,
|
|
118
|
-
color,
|
|
119
|
-
sizeAttenuation: 1,
|
|
120
|
-
resolution: new THREE.Vector2(size.width, size.height),
|
|
121
|
-
});
|
|
122
|
-
// TODO: understand this first
|
|
123
|
-
// Get and apply first <meshLineMaterial /> from children
|
|
124
|
-
// let matOverride: React.ReactElement | undefined;
|
|
125
|
-
// if (children) {
|
|
126
|
-
// if (Array.isArray(children)) {
|
|
127
|
-
// matOverride = children.find((child: React.ReactNode) => {
|
|
128
|
-
// const c = child as React.ReactElement;
|
|
129
|
-
// return typeof c.type === 'string' && c.type === 'meshLineMaterial';
|
|
130
|
-
// }) as React.ReactElement | undefined;
|
|
131
|
-
// } else {
|
|
132
|
-
// const c = children as React.ReactElement;
|
|
133
|
-
// if (typeof c.type === 'string' && c.type === 'meshLineMaterial') {
|
|
134
|
-
// matOverride = c;
|
|
135
|
-
// }
|
|
136
|
-
// }
|
|
137
|
-
// }
|
|
138
|
-
// if (typeof matOverride?.props === 'object') {
|
|
139
|
-
// m.setValues(matOverride.props);
|
|
140
|
-
// }
|
|
141
|
-
return m;
|
|
142
|
-
});
|
|
143
|
-
this.setMaterialSize();
|
|
144
|
-
this.beforeRender();
|
|
145
|
-
}
|
|
146
|
-
setMaterialSize() {
|
|
147
|
-
effect(() => {
|
|
148
|
-
const [material, size] = [this.material(), this.size()];
|
|
149
|
-
material.uniforms['resolution'].value.set(size.width, size.height);
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
beforeRender() {
|
|
153
|
-
injectBeforeRender(() => {
|
|
154
|
-
const [points, attenuation] = [this.points.nativeElement, this.attenuation()];
|
|
155
|
-
if (!points)
|
|
156
|
-
return;
|
|
157
|
-
this.geometry.setPoints(points, attenuation);
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsTrail, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
161
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsTrail, isStandalone: true, selector: "ngts-trail", inputs: { trailRef: "trailRef", _color: ["color", "_color"], _attenuation: ["attenuation", "_attenuation"], _target: ["target", "_target"], _settings: ["settings", "_settings"] }, ngImport: i0, template: `
|
|
162
|
-
<ngt-group>
|
|
163
|
-
<ngt-portal [container]="scene()" [autoRender]="false">
|
|
164
|
-
<ng-template ngtPortalContent>
|
|
165
|
-
<ngt-mesh [ref]="trailRef" [geometry]="geometry" [material]="material()" />
|
|
166
|
-
</ng-template>
|
|
167
|
-
</ngt-portal>
|
|
168
|
-
<ngt-group [ref]="groupRef">
|
|
169
|
-
<ng-content />
|
|
170
|
-
</ngt-group>
|
|
171
|
-
</ngt-group>
|
|
172
|
-
`, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }] }); }
|
|
173
|
-
}
|
|
174
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsTrail, decorators: [{
|
|
175
|
-
type: Component,
|
|
176
|
-
args: [{
|
|
177
|
-
selector: 'ngts-trail',
|
|
178
|
-
standalone: true,
|
|
179
|
-
template: `
|
|
180
|
-
<ngt-group>
|
|
181
|
-
<ngt-portal [container]="scene()" [autoRender]="false">
|
|
182
|
-
<ng-template ngtPortalContent>
|
|
183
|
-
<ngt-mesh [ref]="trailRef" [geometry]="geometry" [material]="material()" />
|
|
184
|
-
</ng-template>
|
|
185
|
-
</ngt-portal>
|
|
186
|
-
<ngt-group [ref]="groupRef">
|
|
187
|
-
<ng-content />
|
|
188
|
-
</ngt-group>
|
|
189
|
-
</ngt-group>
|
|
190
|
-
`,
|
|
191
|
-
imports: [NgtPortal, NgtPortalContent],
|
|
192
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
193
|
-
}]
|
|
194
|
-
}], ctorParameters: function () { return []; }, propDecorators: { trailRef: [{
|
|
195
|
-
type: Input
|
|
196
|
-
}], _color: [{
|
|
197
|
-
type: Input,
|
|
198
|
-
args: [{ alias: 'color' }]
|
|
199
|
-
}], _attenuation: [{
|
|
200
|
-
type: Input,
|
|
201
|
-
args: [{ alias: 'attenuation' }]
|
|
202
|
-
}], _target: [{
|
|
203
|
-
type: Input,
|
|
204
|
-
args: [{ alias: 'target' }]
|
|
205
|
-
}], _settings: [{
|
|
206
|
-
type: Input,
|
|
207
|
-
args: [{ alias: 'settings' }]
|
|
208
|
-
}] } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvdHJhaWwvdHJhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04scUJBQXFCLEdBRXJCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsRUFBRSxFQUNGLFdBQVcsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRXBDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBd0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFnQixFQUFFO0lBQ3ZFLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxPQUFPLFVBQVUsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFnQkYsTUFBTSxlQUFlLEdBQXNCO0lBQzFDLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLENBQUM7SUFDVCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxLQUFLO0lBQ1osTUFBTSxFQUFFLENBQUM7SUFDVCxRQUFRLEVBQUUsQ0FBQztDQUNYLENBQUM7QUFFRixNQUFNLFVBQVUs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dCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRydW5JbkluamVjdGlvbkNvbnRleHQsXG5cdHR5cGUgSW5qZWN0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Tmd0UG9ydGFsLFxuXHROZ3RQb3J0YWxDb250ZW50LFxuXHRhc3NlcnRJbmplY3Rpb25Db250ZXh0LFxuXHRleHRlbmQsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpbmplY3ROZ3RTdG9yZSxcblx0aXMsXG5cdHNpZ25hbFN0b3JlLFxuXHR0eXBlIE5ndFJlZixcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBNZXNoTGluZUdlb21ldHJ5LCBNZXNoTGluZU1hdGVyaWFsIH0gZnJvbSAnbWVzaGxpbmUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAsIE1lc2ggfSBmcm9tICd0aHJlZSc7XG5cbmNvbnN0IHNoaWZ0TGVmdCA9IChjb2xsZWN0aW9uOiBGbG9hdDMyQXJyYXksIHN0ZXBzID0gMSk6IEZsb2F0MzJBcnJheSA9PiB7XG5cdGNvbGxlY3Rpb24uc2V0KGNvbGxlY3Rpb24uc3ViYXJyYXkoc3RlcHMpKTtcblx0Y29sbGVjdGlvbi5maWxsKC1JbmZpbml0eSwgLXN0ZXBzKTtcblx0cmV0dXJuIGNvbGxlY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzVHJhaWxTZXR0aW5ncyA9IHtcblx0d2lkdGg6IG51bWJlcjtcblx0bGVuZ3RoOiBudW1iZXI7XG5cdGRlY2F5OiBudW1iZXI7XG5cdC8qKlxuXHQgKiBXZXRoZXIgdG8gdXNlIHRoZSB0YXJnZXQncyB3b3JsZCBvciBsb2NhbCBwb3NpdGlvbnNcblx0ICovXG5cdGxvY2FsOiBib29sZWFuO1xuXHQvLyBNaW4gZGlzdGFuY2UgYmV0d2VlbiBwcmV2aW91cyBhbmQgY3VycmVudCBwb2ludHNcblx0c3RyaWRlOiBudW1iZXI7XG5cdC8vIE51bWJlciBvZiBmcmFtZXMgdG8gd2FpdCBiZWZvcmUgbmV4dCBjYWxjdWxhdGlvblxuXHRpbnRlcnZhbDogbnVtYmVyO1xufTtcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzOiBOZ3RzVHJhaWxTZXR0aW5ncyA9IHtcblx0d2lkdGg6IDAuMixcblx0bGVuZ3RoOiAxLFxuXHRkZWNheTogMSxcblx0bG9jYWw6IGZhbHNlLFxuXHRzdHJpZGU6IDAsXG5cdGludGVydmFsOiAxLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNUcmFpbChcblx0dGFyZ2V0RmFjdG9yeTogKCkgPT4gTmd0UmVmPFRIUkVFLk9iamVjdDNEPiB8IG51bGwsXG5cdHNldHRpbmdzRmFjdG9yeTogKCkgPT4gUGFydGlhbDxOZ3RzVHJhaWxTZXR0aW5ncz4sXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0c1RyYWlsLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBwb2ludHMgPSBpbmplY3ROZ3RSZWY8RmxvYXQzMkFycmF5PigpO1xuXHRcdGxldCBmcmFtZUNvdW50ID0gMDtcblxuXHRcdGNvbnN0IHByZXZQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdFx0Y29uc3Qgd29ybGRQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cblx0XHRjb25zdCBfdGFyZ2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgX3RhcmdldCA9IHRhcmdldEZhY3RvcnkoKTtcblx0XHRcdGlmIChpcy5yZWYoX3RhcmdldCkpIHJldHVybiBfdGFyZ2V0Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRyZXR1cm4gX3RhcmdldDtcblx0XHR9KTtcblxuXHRcdGNvbnN0IF9zZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+ICh7IC4uLmRlZmF1bHRTZXR0aW5ncywgLi4uc2V0dGluZ3NGYWN0b3J5KCkgfSkpO1xuXHRcdGNvbnN0IF9sZW5ndGggPSBjb21wdXRlZCgoKSA9PiBfc2V0dGluZ3MoKS5sZW5ndGgpO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFt0YXJnZXQsIGxlbmd0aF0gPSBbX3RhcmdldCgpLCBfbGVuZ3RoKCldO1xuXHRcdFx0aWYgKHRhcmdldCkge1xuXHRcdFx0XHRwb2ludHMubmF0aXZlRWxlbWVudCA9IEZsb2F0MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBsZW5ndGggKiAxMCAqIDMgfSwgKF8sIGkpID0+XG5cdFx0XHRcdFx0dGFyZ2V0LnBvc2l0aW9uLmdldENvbXBvbmVudChpICUgMyksXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW3RhcmdldCwgX3BvaW50cywgeyBsb2NhbCwgZGVjYXksIHN0cmlkZSwgaW50ZXJ2YWwgfV0gPSBbXG5cdFx0XHRcdF90YXJnZXQoKSxcblx0XHRcdFx0cG9pbnRzLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdF9zZXR0aW5ncygpLFxuXHRcdFx0XTtcblx0XHRcdGlmICghdGFyZ2V0KSByZXR1cm47XG5cdFx0XHRpZiAoIV9wb2ludHMpIHJldHVybjtcblxuXHRcdFx0aWYgKGZyYW1lQ291bnQgPT09IDApIHtcblx0XHRcdFx0bGV0IG5ld1Bvc2l0aW9uOiBUSFJFRS5WZWN0b3IzO1xuXHRcdFx0XHRpZiAobG9jYWwpIHtcblx0XHRcdFx0XHRuZXdQb3NpdGlvbiA9IHRhcmdldC5wb3NpdGlvbjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YXJnZXQuZ2V0V29ybGRQb3NpdGlvbih3b3JsZFBvc2l0aW9uKTtcblx0XHRcdFx0XHRuZXdQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBzdGVwcyA9IDEgKiBkZWNheTtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdGVwczsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKG5ld1Bvc2l0aW9uLmRpc3RhbmNlVG8ocHJldlBvc2l0aW9uKSA8IHN0cmlkZSkgY29udGludWU7XG5cblx0XHRcdFx0XHRzaGlmdExlZnQoX3BvaW50cywgMyk7XG5cdFx0XHRcdFx0X3BvaW50cy5zZXQobmV3UG9zaXRpb24udG9BcnJheSgpLCBfcG9pbnRzLmxlbmd0aCAtIDMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByZXZQb3NpdGlvbi5jb3B5KG5ld1Bvc2l0aW9uKTtcblx0XHRcdH1cblxuXHRcdFx0ZnJhbWVDb3VudCsrO1xuXHRcdFx0ZnJhbWVDb3VudCA9IGZyYW1lQ291bnQgJSBpbnRlcnZhbDtcblx0XHR9KTtcblxuXHRcdHJldHVybiBwb2ludHM7XG5cdH0pO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RzVHJhaWxTdGF0ZSA9IHtcblx0Y29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb247XG5cdGF0dGVudWF0aW9uOiAod2lkdGg6IG51bWJlcikgPT4gbnVtYmVyO1xuXHRzZXR0aW5nczogTmd0c1RyYWlsU2V0dGluZ3M7XG5cdHRhcmdldD86IE5ndFJlZjxUSFJFRS5PYmplY3QzRD47XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3RzLXRyYWlsJzogTmd0c1RyYWlsU3RhdGU7XG5cdH1cbn1cblxuZXh0ZW5kKHsgR3JvdXAsIE1lc2ggfSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtdHJhaWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXA+XG5cdFx0XHQ8bmd0LXBvcnRhbCBbY29udGFpbmVyXT1cInNjZW5lKClcIiBbYXV0b1JlbmRlcl09XCJmYWxzZVwiPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgbmd0UG9ydGFsQ29udGVudD5cblx0XHRcdFx0XHQ8bmd0LW1lc2ggW3JlZl09XCJ0cmFpbFJlZlwiIFtnZW9tZXRyeV09XCJnZW9tZXRyeVwiIFttYXRlcmlhbF09XCJtYXRlcmlhbCgpXCIgLz5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvbmd0LXBvcnRhbD5cblx0XHRcdDxuZ3QtZ3JvdXAgW3JlZl09XCJncm91cFJlZlwiPlxuXHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0PC9uZ3QtZ3JvdXA+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RQb3J0YWwsIE5ndFBvcnRhbENvbnRlbnRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNUcmFpbCB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c1RyYWlsU3RhdGU+KHsgc2V0dGluZ3M6IGRlZmF1bHRTZXR0aW5ncywgY29sb3I6ICdob3RwaW5rJyB9KTtcblxuXHRASW5wdXQoKSB0cmFpbFJlZiA9IGluamVjdE5ndFJlZjxNZXNoPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29sb3InIH0pIHNldCBfY29sb3IoY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb2xvciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYXR0ZW51YXRpb24nIH0pIHNldCBfYXR0ZW51YXRpb24oYXR0ZW51YXRpb246ICh3aWR0aDogbnVtYmVyKSA9PiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhdHRlbnVhdGlvbiB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAndGFyZ2V0JyB9KSBzZXQgX3RhcmdldCh0YXJnZXQ6IE5ndFJlZjxUSFJFRS5PYmplY3QzRD4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyB0YXJnZXQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NldHRpbmdzJyB9KSBzZXQgX3NldHRpbmdzKHNldHRpbmdzOiBQYXJ0aWFsPE5ndHNUcmFpbFNldHRpbmdzPikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNldHRpbmdzOiB7IC4uLmRlZmF1bHRTZXR0aW5ncywgLi4uc2V0dGluZ3MgfSB9KTtcblx0fVxuXG5cdGdyb3VwUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuXG5cdHByaXZhdGUgY2hpbGRyZW4gPSB0aGlzLmdyb3VwUmVmLmNoaWxkcmVuKCdib3RoJyk7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSB0YXJnZXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3RhcmdldCcpO1xuXHRwcml2YXRlIHNldHRpbmdzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzZXR0aW5ncycpO1xuXHRwcml2YXRlIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZXR0aW5ncygpLndpZHRoKTtcblx0cHJpdmF0ZSBjb2xvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29sb3InKTtcblx0cHJpdmF0ZSBhdHRlbnVhdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYXR0ZW51YXRpb24nKTtcblxuXHRwcml2YXRlIGFuY2hvciA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldCgpO1xuXHRcdGlmICh0YXJnZXQpIHJldHVybiB0YXJnZXQ7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKGdyb3VwKSB7XG5cdFx0XHRyZXR1cm4gZ3JvdXAuY2hpbGRyZW4uZmluZCgoY2hpbGQpID0+IGNoaWxkIGluc3RhbmNlb2YgVEhSRUUuT2JqZWN0M0QpIHx8IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9KTtcblxuXHRwcml2YXRlIHBvaW50cyA9IGluamVjdE5ndHNUcmFpbCh0aGlzLmFuY2hvciwgdGhpcy5zZXR0aW5ncyk7XG5cblx0c2NlbmUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblx0Z2VvbWV0cnkgPSBuZXcgTWVzaExpbmVHZW9tZXRyeSgpO1xuXHRtYXRlcmlhbCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbd2lkdGgsIGNvbG9yLCBzaXplXSA9IFt0aGlzLndpZHRoKCksIHRoaXMuY29sb3IoKSwgdGhpcy5zaXplKCldO1xuXG5cdFx0Y29uc3QgbSA9IG5ldyBNZXNoTGluZU1hdGVyaWFsKHtcblx0XHRcdGxpbmVXaWR0aDogMC4xICogd2lkdGgsXG5cdFx0XHRjb2xvcixcblx0XHRcdHNpemVBdHRlbnVhdGlvbjogMSxcblx0XHRcdHJlc29sdXRpb246IG5ldyBUSFJFRS5WZWN0b3IyKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KSxcblx0XHR9KTtcblxuXHRcdC8vIFRPRE86IHVuZGVyc3RhbmQgdGhpcyBmaXJzdFxuXHRcdC8vIEdldCBhbmQgYXBwbHkgZmlyc3QgPG1lc2hMaW5lTWF0ZXJpYWwgLz4gZnJvbSBjaGlsZHJlblxuXHRcdC8vIGxldCBtYXRPdmVycmlkZTogUmVhY3QuUmVhY3RFbGVtZW50IHwgdW5kZWZpbmVkO1xuXHRcdC8vIGlmIChjaGlsZHJlbikge1xuXHRcdC8vIFx0aWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdFx0Ly8gXHRcdG1hdE92ZXJyaWRlID0gY2hpbGRyZW4uZmluZCgoY2hpbGQ6IFJlYWN0LlJlYWN0Tm9kZSkgPT4ge1xuXHRcdC8vIFx0XHRcdGNvbnN0IGMgPSBjaGlsZCBhcyBSZWFjdC5SZWFjdEVsZW1lbnQ7XG5cdFx0Ly8gXHRcdFx0cmV0dXJuIHR5cGVvZiBjLnR5cGUgPT09ICdzdHJpbmcnICYmIGMudHlwZSA9PT0gJ21lc2hMaW5lTWF0ZXJpYWwnO1xuXHRcdC8vIFx0XHR9KSBhcyBSZWFjdC5SZWFjdEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdFx0Ly8gXHR9IGVsc2Uge1xuXHRcdC8vIFx0XHRjb25zdCBjID0gY2hpbGRyZW4gYXMgUmVhY3QuUmVhY3RFbGVtZW50O1xuXHRcdC8vIFx0XHRpZiAodHlwZW9mIGMudHlwZSA9PT0gJ3N0cmluZycgJiYgYy50eXBlID09PSAnbWVzaExpbmVNYXRlcmlhbCcpIHtcblx0XHQvLyBcdFx0XHRtYXRPdmVycmlkZSA9IGM7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyB9XG5cdFx0Ly8gaWYgKHR5cGVvZiBtYXRPdmVycmlkZT8ucHJvcHMgPT09ICdvYmplY3QnKSB7XG5cdFx0Ly8gXHRtLnNldFZhbHVlcyhtYXRPdmVycmlkZS5wcm9wcyk7XG5cdFx0Ly8gfVxuXG5cdFx0cmV0dXJuIG07XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuc2V0TWF0ZXJpYWxTaXplKCk7XG5cdFx0dGhpcy5iZWZvcmVSZW5kZXIoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0TWF0ZXJpYWxTaXplKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbbWF0ZXJpYWwsIHNpemVdID0gW3RoaXMubWF0ZXJpYWwoKSwgdGhpcy5zaXplKCldO1xuXHRcdFx0bWF0ZXJpYWwudW5pZm9ybXNbJ3Jlc29sdXRpb24nXS52YWx1ZS5zZXQoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFtwb2ludHMsIGF0dGVudWF0aW9uXSA9IFt0aGlzLnBvaW50cy5uYXRpdmVFbGVtZW50LCB0aGlzLmF0dGVudWF0aW9uKCldO1xuXHRcdFx0aWYgKCFwb2ludHMpIHJldHVybjtcblx0XHRcdHRoaXMuZ2VvbWV0cnkuc2V0UG9pbnRzKHBvaW50cywgYXR0ZW51YXRpb24pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Injector, computed, runInInjectionContext } from '@angular/core';
|
|
2
|
-
import { assertInjectionContext, injectBeforeRender } from 'angular-three';
|
|
3
|
-
import { TrailTexture } from './trail-texture';
|
|
4
|
-
export function injectNgtsTrailTexture(trailConfigFn, { injector } = {}) {
|
|
5
|
-
injector = assertInjectionContext(injectNgtsTrailTexture, injector);
|
|
6
|
-
return runInInjectionContext(injector, () => {
|
|
7
|
-
const config = computed(() => trailConfigFn() || {});
|
|
8
|
-
const trail = computed(() => new TrailTexture(config()));
|
|
9
|
-
const texture = computed(() => trail().texture);
|
|
10
|
-
injectBeforeRender(({ delta }) => {
|
|
11
|
-
trail().update(delta);
|
|
12
|
-
});
|
|
13
|
-
const onMove = (ev) => trail().addTouch(ev.uv);
|
|
14
|
-
return { texture, onMove };
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXRyYWlsLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvdHJhaWwtdGV4dHVyZS9pbmplY3QtdHJhaWwtdGV4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQW9CLE1BQU0saUJBQWlCLENBQUM7QUFFakUsTUFBTSxVQUFVLHNCQUFzQixDQUNyQyxhQUF5QyxFQUN6QyxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUUxQyxRQUFRLEdBQUcsc0JBQXNCLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEUsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQzNDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNoQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQStCLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRyxDQUFDLENBQUM7UUFFN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgY29tcHV0ZWQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0QmVmb3JlUmVuZGVyLCB0eXBlIE5ndFRocmVlRXZlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFRyYWlsVGV4dHVyZSwgdHlwZSBUcmFpbENvbmZpZyB9IGZyb20gJy4vdHJhaWwtdGV4dHVyZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzVHJhaWxUZXh0dXJlKFxuXHR0cmFpbENvbmZpZ0ZuOiAoKSA9PiBQYXJ0aWFsPFRyYWlsQ29uZmlnPixcblx0eyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKSB7XG5cdGluamVjdG9yID0gYXNzZXJ0SW5qZWN0aW9uQ29udGV4dChpbmplY3ROZ3RzVHJhaWxUZXh0dXJlLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBjb25maWcgPSBjb21wdXRlZCgoKSA9PiB0cmFpbENvbmZpZ0ZuKCkgfHwge30pO1xuXHRcdGNvbnN0IHRyYWlsID0gY29tcHV0ZWQoKCkgPT4gbmV3IFRyYWlsVGV4dHVyZShjb25maWcoKSkpO1xuXHRcdGNvbnN0IHRleHR1cmUgPSBjb21wdXRlZCgoKSA9PiB0cmFpbCgpLnRleHR1cmUpO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IHtcblx0XHRcdHRyYWlsKCkudXBkYXRlKGRlbHRhKTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IG9uTW92ZSA9IChldjogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB0cmFpbCgpLmFkZFRvdWNoKGV2LnV2ISk7XG5cblx0XHRyZXR1cm4geyB0ZXh0dXJlLCBvbk1vdmUgfTtcblx0fSk7XG59XG4iXX0=
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { Texture } from 'three';
|
|
2
|
-
// default ease
|
|
3
|
-
const easeCircleOut = (x) => Math.sqrt(1 - Math.pow(x - 1, 2));
|
|
4
|
-
// smooth new sample (measurement) based on previous sample (current)
|
|
5
|
-
function smoothAverage(current, measurement, smoothing = 0.9) {
|
|
6
|
-
return measurement * smoothing + current * (1.0 - smoothing);
|
|
7
|
-
}
|
|
8
|
-
export class TrailTexture {
|
|
9
|
-
constructor({ size = 256, maxAge = 750, radius = 0.3, intensity = 0.2, interpolate = 0, smoothing = 0, minForce = 0.3, blend = 'screen', // source-over is canvas default. Others are slower
|
|
10
|
-
ease = easeCircleOut, } = {}) {
|
|
11
|
-
this.size = size;
|
|
12
|
-
this.maxAge = maxAge;
|
|
13
|
-
this.radius = radius;
|
|
14
|
-
this.intensity = intensity;
|
|
15
|
-
this.ease = ease;
|
|
16
|
-
this.interpolate = interpolate;
|
|
17
|
-
this.smoothing = smoothing;
|
|
18
|
-
this.minForce = minForce;
|
|
19
|
-
this.blend = blend;
|
|
20
|
-
this.trail = [];
|
|
21
|
-
this.force = 0;
|
|
22
|
-
this.initTexture();
|
|
23
|
-
}
|
|
24
|
-
initTexture() {
|
|
25
|
-
this.canvas = document.createElement('canvas');
|
|
26
|
-
this.canvas.width = this.canvas.height = this.size;
|
|
27
|
-
this.ctx = this.canvas.getContext('2d');
|
|
28
|
-
this.ctx.fillStyle = 'black';
|
|
29
|
-
this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
30
|
-
this.texture = new Texture(this.canvas);
|
|
31
|
-
this.canvas.id = 'touchTexture';
|
|
32
|
-
this.canvas.style.width = this.canvas.style.height = `${this.canvas.width}px`;
|
|
33
|
-
}
|
|
34
|
-
update(delta) {
|
|
35
|
-
this.clear();
|
|
36
|
-
// age points
|
|
37
|
-
this.trail.forEach((point, i) => {
|
|
38
|
-
point.age += delta * 1000;
|
|
39
|
-
// remove old
|
|
40
|
-
if (point.age > this.maxAge) {
|
|
41
|
-
this.trail.splice(i, 1);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
// reset force when empty (when smoothing)
|
|
45
|
-
if (!this.trail.length)
|
|
46
|
-
this.force = 0;
|
|
47
|
-
this.trail.forEach((point) => {
|
|
48
|
-
this.drawTouch(point);
|
|
49
|
-
});
|
|
50
|
-
this.texture.needsUpdate = true;
|
|
51
|
-
}
|
|
52
|
-
clear() {
|
|
53
|
-
this.ctx.globalCompositeOperation = 'source-over';
|
|
54
|
-
this.ctx.fillStyle = 'black';
|
|
55
|
-
this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
56
|
-
}
|
|
57
|
-
addTouch(point) {
|
|
58
|
-
const last = this.trail[this.trail.length - 1];
|
|
59
|
-
if (last) {
|
|
60
|
-
const dx = last.x - point.x;
|
|
61
|
-
const dy = last.y - point.y;
|
|
62
|
-
const dd = dx * dx + dy * dy;
|
|
63
|
-
const force = Math.max(this.minForce, Math.min(dd * 10000, 1));
|
|
64
|
-
this.force = smoothAverage(force, this.force, this.smoothing);
|
|
65
|
-
if (!!this.interpolate) {
|
|
66
|
-
const lines = Math.ceil(dd / Math.pow((this.radius * 0.5) / this.interpolate, 2));
|
|
67
|
-
if (lines > 1) {
|
|
68
|
-
for (let i = 1; i < lines; i++) {
|
|
69
|
-
this.trail.push({
|
|
70
|
-
x: last.x - (dx / lines) * i,
|
|
71
|
-
y: last.y - (dy / lines) * i,
|
|
72
|
-
age: 0,
|
|
73
|
-
force,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
this.trail.push({ x: point.x, y: point.y, age: 0, force: this.force });
|
|
80
|
-
}
|
|
81
|
-
drawTouch(point) {
|
|
82
|
-
const pos = {
|
|
83
|
-
x: point.x * this.size,
|
|
84
|
-
y: (1 - point.y) * this.size,
|
|
85
|
-
};
|
|
86
|
-
let intensity = 1;
|
|
87
|
-
if (point.age < this.maxAge * 0.3) {
|
|
88
|
-
intensity = this.ease(point.age / (this.maxAge * 0.3));
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
intensity = this.ease(1 - (point.age - this.maxAge * 0.3) / (this.maxAge * 0.7));
|
|
92
|
-
}
|
|
93
|
-
intensity *= point.force;
|
|
94
|
-
// apply blending
|
|
95
|
-
this.ctx.globalCompositeOperation = this.blend;
|
|
96
|
-
const radius = this.size * this.radius * intensity;
|
|
97
|
-
const grd = this.ctx.createRadialGradient(pos.x, pos.y, Math.max(0, radius * 0.25), pos.x, pos.y, Math.max(0, radius));
|
|
98
|
-
grd.addColorStop(0, `rgba(255, 255, 255, ${this.intensity})`);
|
|
99
|
-
grd.addColorStop(1, `rgba(0, 0, 0, 0.0)`);
|
|
100
|
-
this.ctx.beginPath();
|
|
101
|
-
this.ctx.fillStyle = grd;
|
|
102
|
-
this.ctx.arc(pos.x, pos.y, Math.max(0, radius), 0, Math.PI * 2);
|
|
103
|
-
this.ctx.fill();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaWwtdGV4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy90cmFpbC10ZXh0dXJlL3RyYWlsLXRleHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQThCaEMsZUFBZTtBQUNmLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV2RSxxRUFBcUU7QUFDckUsU0FBUyxhQUFhLENBQUMsT0FBZSxFQUFFLFdBQW1CLEVBQUUsU0FBUyxHQUFHLEdBQUc7SUFDM0UsT0FBTyxXQUFXLEdBQUcsU0FBUyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsTUFBTSxPQUFPLFlBQVk7SUFnQnhCLFlBQVksRUFDWCxJQUFJLEdBQUcsR0FBRyxFQUNWLE1BQU0sR0FBRyxHQUFHLEVBQ1osTUFBTSxHQUFHLEdBQUcsRUFDWixTQUFTLEdBQUcsR0FBRyxFQUNmLFdBQVcsR0FBRyxDQUFDLEVBQ2YsU0FBUyxHQUFHLENBQUMsRUFDYixRQUFRLEdBQUcsR0FBRyxFQUNkLEtBQUssR0FBRyxRQUFRLEVBQUUsbURBQW1EO0lBQ3JFLElBQUksR0FBRyxhQUFhLE1BQ0osRUFBRTtRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxH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LEtBQUssQ0FBQztRQUUvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQ3hDLEdBQUcsQ0FBQyxDQUFDLEVBQ0wsR0FBRyxDQUFDLENBQUMsRUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQzFCLEdBQUcsQ0FBQyxDQUFDLEVBQ0wsR0FBRyxDQUFDLENBQUMsRUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FDbkIsQ0FBQztRQUNGLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHR1cmUgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCB0eXBlIFBvaW50ID0ge1xuXHR4OiBudW1iZXI7XG5cdHk6IG51bWJlcjtcblx0YWdlOiBudW1iZXI7XG5cdGZvcmNlOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBUcmFpbENvbmZpZyA9IHtcblx0LyoqIHRleHR1cmUgc2l6ZSAoZGVmYXVsdDogMjU2eDI1NikgKi9cblx0c2l6ZT86IG51bWJlcjtcblx0LyoqIE1heCBhZ2UgKG1zKSBvZiB0cmFpbCBwb2ludHMgKGRlZmF1bHQ6IDc1MCkgKi9cblx0bWF4QWdlPzogbnVtYmVyO1xuXHQvKiogVHJhaWwgcmFkaXVzIChkZWZhdWx0OiAwLjMpICovXG5cdHJhZGl1cz86IG51bWJlcjtcblx0LyoqIENhbnZhcyB0cmFpbCBvcGFjaXR5IChkZWZhdWx0OiAwLjIpICovXG5cdGludGVuc2l0eT86IG51bWJlcjtcblx0LyoqIEFkZCBwb2ludHMgaW4gYmV0d2VlbiBzbG93IHBvaW50ZXIgZXZlbnRzIChkZWZhdWx0OiAwKSAqL1xuXHRpbnRlcnBvbGF0ZT86IG51bWJlcjtcblx0LyoqIE1vdmluZyBhdmVyYWdlIG9mIHBvaW50ZXIgZm9yY2UgKGRlZmF1bHQ6IDApICovXG5cdHNtb290aGluZz86IG51bWJlcjtcblx0LyoqIE1pbmltdW0gcG9pbnRlciBmb3JjZSAoZGVmYXVsdDogMC4zKSAqL1xuXHRtaW5Gb3JjZT86IG51bWJlcjtcblx0LyoqIEJsZW5kIG1vZGUgKGRlZmF1bHQ6ICdzY3JlZW4nKSAqL1xuXHRibGVuZD86IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFsnZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uJ107XG5cdC8qKiBFYXNpbmcgKGRlZmF1bHQ6IGVhc2VDaXJjT3V0KSAqL1xuXHRlYXNlPzogKHQ6IG51bWJlcikgPT4gbnVtYmVyO1xufTtcblxuLy8gZGVmYXVsdCBlYXNlXG5jb25zdCBlYXNlQ2lyY2xlT3V0ID0gKHg6IG51bWJlcikgPT4gTWF0aC5zcXJ0KDEgLSBNYXRoLnBvdyh4IC0gMSwgMikpO1xuXG4vLyBzbW9vdGggbmV3IHNhbXBsZSAobWVhc3VyZW1lbnQpIGJhc2VkIG9uIHByZXZpb3VzIHNhbXBsZSAoY3VycmVudClcbmZ1bmN0aW9uIHNtb290aEF2ZXJhZ2UoY3VycmVudDogbnVtYmVyLCBtZWFzdXJlbWVudDogbnVtYmVyLCBzbW9vdGhpbmcgPSAwLjkpIHtcblx0cmV0dXJuIG1lYXN1cmVtZW50ICogc21vb3RoaW5nICsgY3VycmVudCAqICgxLjAgLSBzbW9vdGhpbmcpO1xufVxuXG5leHBvcnQgY2xhc3MgVHJhaWxUZXh0dXJlIHtcblx0dHJhaWw6IFBvaW50W107XG5cdGNhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xuXHRjdHghOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG5cdHRleHR1cmUhOiBUZXh0dXJlO1xuXHRmb3JjZTogbnVtYmVyO1xuXHRzaXplOiBudW1iZXI7XG5cdG1heEFnZTogbnVtYmVyO1xuXHRyYWRpdXM6IG51bWJlcjtcblx0aW50ZW5zaXR5OiBudW1iZXI7XG5cdGVhc2U6ICh0OiBudW1iZXIpID0+IG51bWJlcjtcblx0bWluRm9yY2U6IG51bWJlcjtcblx0aW50ZXJwb2xhdGU6IG51bWJlcjtcblx0c21vb3RoaW5nOiBudW1iZXI7XG5cdGJsZW5kOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRbJ2dsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiddO1xuXG5cdGNvbnN0cnVjdG9yKHtcblx0XHRzaXplID0gMjU2LFxuXHRcdG1heEFnZSA9IDc1MCxcblx0XHRyYWRpdXMgPSAwLjMsXG5cdFx0aW50ZW5zaXR5ID0gMC4yLFxuXHRcdGludGVycG9sYXRlID0gMCxcblx0XHRzbW9vdGhpbmcgPSAwLFxuXHRcdG1pbkZvcmNlID0gMC4zLFxuXHRcdGJsZW5kID0gJ3NjcmVlbicsIC8vIHNvdXJjZS1vdmVyIGlzIGNhbnZhcyBkZWZhdWx0LiBPdGhlcnMgYXJlIHNsb3dlclxuXHRcdGVhc2UgPSBlYXNlQ2lyY2xlT3V0LFxuXHR9OiBUcmFpbENvbmZpZyA9IHt9KSB7XG5cdFx0dGhpcy5zaXplID0gc2l6ZTtcblx0XHR0aGlzLm1heEFnZSA9IG1heEFnZTtcblx0XHR0aGlzLnJhZGl1cyA9IHJhZGl1cztcblx0XHR0aGlzLmludGVuc2l0eSA9IGludGVuc2l0eTtcblx0XHR0aGlzLmVhc2UgPSBlYXNlO1xuXHRcdHRoaXMuaW50ZXJwb2xhdGUgPSBpbnRlcnBvbGF0ZTtcblx0XHR0aGlzLnNtb290aGluZyA9IHNtb290aGluZztcblx0XHR0aGlzLm1pbkZvcmNlID0gbWluRm9yY2U7XG5cdFx0dGhpcy5ibGVuZCA9IGJsZW5kIGFzIEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjtcblxuXHRcdHRoaXMudHJhaWwgPSBbXTtcblx0XHR0aGlzLmZvcmNlID0gMDtcblx0XHR0aGlzLmluaXRUZXh0dXJlKCk7XG5cdH1cblxuXHRpbml0VGV4dHVyZSgpIHtcblx0XHR0aGlzLmNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuXHRcdHRoaXMuY2FudmFzLndpZHRoID0gdGhpcy5jYW52YXMuaGVpZ2h0ID0gdGhpcy5zaXplO1xuXHRcdHRoaXMuY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG5cdFx0dGhpcy5jdHguZmlsbFN0eWxlID0gJ2JsYWNrJztcblx0XHR0aGlzLmN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcblxuXHRcdHRoaXMudGV4dHVyZSA9IG5ldyBUZXh0dXJlKHRoaXMuY2FudmFzKTtcblxuXHRcdHRoaXMuY2FudmFzLmlkID0gJ3RvdWNoVGV4dHVyZSc7XG5cdFx0dGhpcy5jYW52YXMuc3R5bGUud2lkdGggPSB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSBgJHt0aGlzLmNhbnZhcy53aWR0aH1weGA7XG5cdH1cblxuXHR1cGRhdGUoZGVsdGE6IG51bWJlcikge1xuXHRcdHRoaXMuY2xlYXIoKTtcblxuXHRcdC8vIGFnZSBwb2ludHNcblx0XHR0aGlzLnRyYWlsLmZvckVhY2goKHBvaW50LCBpKSA9PiB7XG5cdFx0XHRwb2ludC5hZ2UgKz0gZGVsdGEgKiAxMDAwO1xuXHRcdFx0Ly8gcmVtb3ZlIG9sZFxuXHRcdFx0aWYgKHBvaW50LmFnZSA+IHRoaXMubWF4QWdlKSB7XG5cdFx0XHRcdHRoaXMudHJhaWwuc3BsaWNlKGksIDEpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gcmVzZXQgZm9yY2Ugd2hlbiBlbXB0eSAod2hlbiBzbW9vdGhpbmcpXG5cdFx0aWYgKCF0aGlzLnRyYWlsLmxlbmd0aCkgdGhpcy5mb3JjZSA9IDA7XG5cblx0XHR0aGlzLnRyYWlsLmZvckVhY2goKHBvaW50KSA9PiB7XG5cdFx0XHR0aGlzLmRyYXdUb3VjaChwb2ludCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHR9XG5cblx0Y2xlYXIoKSB7XG5cdFx0dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcblx0XHR0aGlzLmN0eC5maWxsU3R5bGUgPSAnYmxhY2snO1xuXHRcdHRoaXMuY3R4LmZpbGxSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuXHR9XG5cblx0YWRkVG91Y2gocG9pbnQ6IFBpY2s8UG9pbnQsICd4JyB8ICd5Jz4pIHtcblx0XHRjb25zdCBsYXN0ID0gdGhpcy50cmFpbFt0aGlzLnRyYWlsLmxlbmd0aCAtIDFdO1xuXG5cdFx0aWYgKGxhc3QpIHtcblx0XHRcdGNvbnN0IGR4ID0gbGFzdC54IC0gcG9pbnQueDtcblx0XHRcdGNvbnN0IGR5ID0gbGFzdC55IC0gcG9pbnQueTtcblx0XHRcdGNvbnN0IGRkID0gZHggKiBkeCArIGR5ICogZHk7XG5cblx0XHRcdGNvbnN0IGZvcmNlID0gTWF0aC5tYXgodGhpcy5taW5Gb3JjZSwgTWF0aC5taW4oZGQgKiAxMDAwMCwgMSkpO1xuXG5cdFx0XHR0aGlzLmZvcmNlID0gc21vb3RoQXZlcmFnZShmb3JjZSwgdGhpcy5mb3JjZSwgdGhpcy5zbW9vdGhpbmcpO1xuXG5cdFx0XHRpZiAoISF0aGlzLmludGVycG9sYXRlKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmVzID0gTWF0aC5jZWlsKGRkIC8gTWF0aC5wb3coKHRoaXMucmFkaXVzICogMC41KSAvIHRoaXMuaW50ZXJwb2xhdGUsIDIpKTtcblxuXHRcdFx0XHRpZiAobGluZXMgPiAxKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lczsgaSsrKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRyYWlsLnB1c2goe1xuXHRcdFx0XHRcdFx0XHR4OiBsYXN0LnggLSAoZHggLyBsaW5lcykgKiBpLFxuXHRcdFx0XHRcdFx0XHR5OiBsYXN0LnkgLSAoZHkgLyBsaW5lcykgKiBpLFxuXHRcdFx0XHRcdFx0XHRhZ2U6IDAsXG5cdFx0XHRcdFx0XHRcdGZvcmNlLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMudHJhaWwucHVzaCh7IHg6IHBvaW50LngsIHk6IHBvaW50LnksIGFnZTogMCwgZm9yY2U6IHRoaXMuZm9yY2UgfSk7XG5cdH1cblxuXHRkcmF3VG91Y2gocG9pbnQ6IFBvaW50KSB7XG5cdFx0Y29uc3QgcG9zID0ge1xuXHRcdFx0eDogcG9pbnQueCAqIHRoaXMuc2l6ZSxcblx0XHRcdHk6ICgxIC0gcG9pbnQueSkgKiB0aGlzLnNpemUsXG5cdFx0fTtcblxuXHRcdGxldCBpbnRlbnNpdHkgPSAxO1xuXHRcdGlmIChwb2ludC5hZ2UgPCB0aGlzLm1heEFnZSAqIDAuMykge1xuXHRcdFx0aW50ZW5zaXR5ID0gdGhpcy5lYXNlKHBvaW50LmFnZSAvICh0aGlzLm1heEFnZSAqIDAuMykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbnRlbnNpdHkgPSB0aGlzLmVhc2UoMSAtIChwb2ludC5hZ2UgLSB0aGlzLm1heEFnZSAqIDAuMykgLyAodGhpcy5tYXhBZ2UgKiAwLjcpKTtcblx0XHR9XG5cblx0XHRpbnRlbnNpdHkgKj0gcG9pbnQuZm9yY2U7XG5cblx0XHQvLyBhcHBseSBibGVuZGluZ1xuXHRcdHRoaXMuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IHRoaXMuYmxlbmQ7XG5cblx0XHRjb25zdCByYWRpdXMgPSB0aGlzLnNpemUgKiB0aGlzLnJhZGl1cyAqIGludGVuc2l0eTtcblx0XHRjb25zdCBncmQgPSB0aGlzLmN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudChcblx0XHRcdHBvcy54LFxuXHRcdFx0cG9zLnksXG5cdFx0XHRNYXRoLm1heCgwLCByYWRpdXMgKiAwLjI1KSxcblx0XHRcdHBvcy54LFxuXHRcdFx0cG9zLnksXG5cdFx0XHRNYXRoLm1heCgwLCByYWRpdXMpLFxuXHRcdCk7XG5cdFx0Z3JkLmFkZENvbG9yU3RvcCgwLCBgcmdiYSgyNTUsIDI1NSwgMjU1LCAke3RoaXMuaW50ZW5zaXR5fSlgKTtcblx0XHRncmQuYWRkQ29sb3JTdG9wKDEsIGByZ2JhKDAsIDAsIDAsIDAuMClgKTtcblxuXHRcdHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xuXHRcdHRoaXMuY3R4LmZpbGxTdHlsZSA9IGdyZDtcblx0XHR0aGlzLmN0eC5hcmMocG9zLngsIHBvcy55LCBNYXRoLm1heCgwLCByYWRpdXMpLCAwLCBNYXRoLlBJICogMik7XG5cdFx0dGhpcy5jdHguZmlsbCgpO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLW1vZGlmaWVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9tb2RpZmllcnMvc3JjL2FuZ3VsYXItdGhyZWUtc29iYS1tb2RpZmllcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, effect, signal, untracked } from '@angular/core';
|
|
2
|
-
import { NgtArgs, NgtPortal, NgtPortalContent, injectNgtRef, prepare, signalStore } from 'angular-three';
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
import { Flow } from 'three-stdlib';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class NgtsCurveModifier {
|
|
7
|
-
set _curve(curve) {
|
|
8
|
-
this.inputs.set({ curve });
|
|
9
|
-
}
|
|
10
|
-
constructor() {
|
|
11
|
-
this.inputs = signalStore();
|
|
12
|
-
this.curve = this.inputs.select('curve');
|
|
13
|
-
this.sceneRef = injectNgtRef(prepare(new THREE.Scene()));
|
|
14
|
-
this.sceneRefChildren = this.sceneRef.children();
|
|
15
|
-
this.modifierObject = signal(null);
|
|
16
|
-
effect(() => {
|
|
17
|
-
this.sceneRefChildren();
|
|
18
|
-
untracked(() => {
|
|
19
|
-
this.modifier = new Flow(this.sceneRef.nativeElement.children[0]);
|
|
20
|
-
this.modifierObject.set(this.modifier.object3D);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
effect(() => {
|
|
24
|
-
const curve = this.curve();
|
|
25
|
-
this.modifierObject();
|
|
26
|
-
if (curve) {
|
|
27
|
-
this.modifier?.updateCurve(0, curve);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
moveAlongCurve(value) {
|
|
32
|
-
this.modifier?.moveAlongCurve(value);
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsCurveModifier, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsCurveModifier, isStandalone: true, selector: "ngts-curve-modifier", inputs: { _curve: ["curve", "_curve"] }, ngImport: i0, template: `
|
|
36
|
-
<ngt-portal [container]="sceneRef" [autoRender]="false">
|
|
37
|
-
<ng-template ngtPortalContent>
|
|
38
|
-
<ng-content />
|
|
39
|
-
</ng-template>
|
|
40
|
-
</ngt-portal>
|
|
41
|
-
<ngt-primitive *args="[modifierObject()]" />
|
|
42
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }] }); }
|
|
43
|
-
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsCurveModifier, decorators: [{
|
|
45
|
-
type: Component,
|
|
46
|
-
args: [{
|
|
47
|
-
selector: 'ngts-curve-modifier',
|
|
48
|
-
standalone: true,
|
|
49
|
-
template: `
|
|
50
|
-
<ngt-portal [container]="sceneRef" [autoRender]="false">
|
|
51
|
-
<ng-template ngtPortalContent>
|
|
52
|
-
<ng-content />
|
|
53
|
-
</ng-template>
|
|
54
|
-
</ngt-portal>
|
|
55
|
-
<ngt-primitive *args="[modifierObject()]" />
|
|
56
|
-
`,
|
|
57
|
-
imports: [NgtArgs, NgtPortal, NgtPortalContent],
|
|
58
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
59
|
-
}]
|
|
60
|
-
}], ctorParameters: function () { return []; }, propDecorators: { _curve: [{
|
|
61
|
-
type: Input,
|
|
62
|
-
args: [{ alias: 'curve' }]
|
|
63
|
-
}] } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VydmUtbW9kaWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbW9kaWZpZXJzL3NyYy9jdXJ2ZS1tb2RpZmllci9jdXJ2ZS1tb2RpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQTBCcEMsTUFBTSxPQUFPLGlCQUFpQjtJQUc3QixJQUErQixNQUFNLENBQUMsS0FBaUM7UUFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFVRDtRQWRRLFdBQU0sR0FBRyxXQUFXLEVBQTBCLENBQUM7UUFNL0MsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLGFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBR3BELG1CQUFjLEdBQUcsTUFBTSxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUdwRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQWUsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLEtBQUssRUFBRTtnQkFDVixJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDckM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQW5DVyxpQkFBaUI7a0dBQWpCLGlCQUFpQix3SEFYbkI7Ozs7Ozs7RUFPVCw0REFDUyxPQUFPLGdGQUFFLFNBQVMsc0pBQUUsZ0JBQWdCOzsyRkFHbEMsaUJBQWlCO2tCQWQ3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7RUFPVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakM7MEVBSStCLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ29tcG9uZW50LCBJbnB1dCwgZWZmZWN0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0UG9ydGFsLCBOZ3RQb3J0YWxDb250ZW50LCBpbmplY3ROZ3RSZWYsIHByZXBhcmUsIHNpZ25hbFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBGbG93IH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxuZXhwb3J0IHR5cGUgTmd0c0N1cnZlTW9kaWZpZXJTdGF0ZSA9IHtcblx0Y3VydmU/OiBUSFJFRS5DdXJ2ZTxUSFJFRS5WZWN0b3IzPjtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0J25ndHMtY3VydmUtbW9kaWZpZXInOiBOZ3RzQ3VydmVNb2RpZmllclN0YXRlO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtY3VydmUtbW9kaWZpZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcG9ydGFsIFtjb250YWluZXJdPVwic2NlbmVSZWZcIiBbYXV0b1JlbmRlcl09XCJmYWxzZVwiPlxuXHRcdFx0PG5nLXRlbXBsYXRlIG5ndFBvcnRhbENvbnRlbnQ+XG5cdFx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDwvbmd0LXBvcnRhbD5cblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttb2RpZmllck9iamVjdCgpXVwiIC8+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RQb3J0YWwsIE5ndFBvcnRhbENvbnRlbnRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDdXJ2ZU1vZGlmaWVyIHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzQ3VydmVNb2RpZmllclN0YXRlPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY3VydmUnIH0pIHNldCBfY3VydmUoY3VydmU6IFRIUkVFLkN1cnZlPFRIUkVFLlZlY3RvcjM+KSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY3VydmUgfSk7XG5cdH1cblxuXHRwcml2YXRlIGN1cnZlID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdjdXJ2ZScpO1xuXG5cdHNjZW5lUmVmID0gaW5qZWN0Tmd0UmVmKHByZXBhcmUobmV3IFRIUkVFLlNjZW5lKCkpKTtcblx0cHJpdmF0ZSBzY2VuZVJlZkNoaWxkcmVuID0gdGhpcy5zY2VuZVJlZi5jaGlsZHJlbigpO1xuXG5cdHByaXZhdGUgbW9kaWZpZXI/OiBGbG93O1xuXHRtb2RpZmllck9iamVjdCA9IHNpZ25hbDxUSFJFRS5PYmplY3QzRCB8IG51bGw+KG51bGwpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnNjZW5lUmVmQ2hpbGRyZW4oKTtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMubW9kaWZpZXIgPSBuZXcgRmxvdyh0aGlzLnNjZW5lUmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0gYXMgVEhSRUUuTWVzaCk7XG5cdFx0XHRcdHRoaXMubW9kaWZpZXJPYmplY3Quc2V0KHRoaXMubW9kaWZpZXIub2JqZWN0M0QpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgY3VydmUgPSB0aGlzLmN1cnZlKCk7XG5cdFx0XHR0aGlzLm1vZGlmaWVyT2JqZWN0KCk7XG5cdFx0XHRpZiAoY3VydmUpIHtcblx0XHRcdFx0dGhpcy5tb2RpZmllcj8udXBkYXRlQ3VydmUoMCwgY3VydmUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0bW92ZUFsb25nQ3VydmUodmFsdWU6IG51bWJlcikge1xuXHRcdHRoaXMubW9kaWZpZXI/Lm1vdmVBbG9uZ0N1cnZlKHZhbHVlKTtcblx0fVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './curve-modifier/curve-modifier';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbW9kaWZpZXJzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jdXJ2ZS1tb2RpZmllci9jdXJ2ZS1tb2RpZmllcic7XG4iXX0=
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, effect, signal, untracked } from '@angular/core';
|
|
2
|
-
import { injectNgtStore } from 'angular-three';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgtsAdaptiveDpr {
|
|
5
|
-
set _pixelated(pixelated) {
|
|
6
|
-
this.pixelated.set(pixelated);
|
|
7
|
-
}
|
|
8
|
-
constructor() {
|
|
9
|
-
this.pixelated = signal(false);
|
|
10
|
-
this.store = injectNgtStore();
|
|
11
|
-
this.current = this.store.select('performance', 'current');
|
|
12
|
-
this.active = this.store.get('internal', 'active');
|
|
13
|
-
this.setDpr = this.store.get('setDpr');
|
|
14
|
-
this.initialDpr = this.store.get('viewport', 'initialDpr');
|
|
15
|
-
this.domElement = this.store.get('gl', 'domElement');
|
|
16
|
-
effect((onCleanup) => {
|
|
17
|
-
onCleanup(() => {
|
|
18
|
-
if (this.active) {
|
|
19
|
-
this.setDpr(this.initialDpr);
|
|
20
|
-
}
|
|
21
|
-
if (this.pixelated() && this.domElement) {
|
|
22
|
-
this.domElement.style.imageRendering = 'auto';
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
effect(() => {
|
|
27
|
-
const current = this.current();
|
|
28
|
-
this.setDpr(current * this.initialDpr);
|
|
29
|
-
if (untracked(this.pixelated) && this.domElement) {
|
|
30
|
-
this.domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
35
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { _pixelated: ["pixelated", "_pixelated"] }, ngImport: i0 }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
|
|
38
|
-
type: Directive,
|
|
39
|
-
args: [{ selector: 'ngts-adaptive-dpr', standalone: true }]
|
|
40
|
-
}], ctorParameters: function () { return []; }, propDecorators: { _pixelated: [{
|
|
41
|
-
type: Input,
|
|
42
|
-
args: [{ alias: 'pixelated' }]
|
|
43
|
-
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZHByLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvYWRhcHRpdmUtZHByL2FkYXB0aXZlLWRwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUcvQyxNQUFNLE9BQU8sZUFBZTtJQUUzQixJQUFtQyxVQUFVLENBQUMsU0FBa0I7UUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQVNEO1FBWlEsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUsxQixVQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0RCxXQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLFdBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RELGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFHdkQsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUM3QjtnQkFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO2lCQUM5QztZQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2FBQzVFO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQWhDVyxlQUFlO2tHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTswRUFHMUIsVUFBVTtzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBlZmZlY3QsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZ3RzLWFkYXB0aXZlLWRwcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzQWRhcHRpdmVEcHIge1xuXHRwcml2YXRlIHBpeGVsYXRlZCA9IHNpZ25hbChmYWxzZSk7XG5cdEBJbnB1dCh7IGFsaWFzOiAncGl4ZWxhdGVkJyB9KSBzZXQgX3BpeGVsYXRlZChwaXhlbGF0ZWQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLnBpeGVsYXRlZC5zZXQocGl4ZWxhdGVkKTtcblx0fVxuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHRwcml2YXRlIGN1cnJlbnQgPSB0aGlzLnN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAnY3VycmVudCcpO1xuXHRwcml2YXRlIGFjdGl2ZSA9IHRoaXMuc3RvcmUuZ2V0KCdpbnRlcm5hbCcsICdhY3RpdmUnKTtcblx0cHJpdmF0ZSBzZXREcHIgPSB0aGlzLnN0b3JlLmdldCgnc2V0RHByJyk7XG5cdHByaXZhdGUgaW5pdGlhbERwciA9IHRoaXMuc3RvcmUuZ2V0KCd2aWV3cG9ydCcsICdpbml0aWFsRHByJyk7XG5cdHByaXZhdGUgZG9tRWxlbWVudCA9IHRoaXMuc3RvcmUuZ2V0KCdnbCcsICdkb21FbGVtZW50Jyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmFjdGl2ZSkge1xuXHRcdFx0XHRcdHRoaXMuc2V0RHByKHRoaXMuaW5pdGlhbERwcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMucGl4ZWxhdGVkKCkgJiYgdGhpcy5kb21FbGVtZW50KSB7XG5cdFx0XHRcdFx0dGhpcy5kb21FbGVtZW50LnN0eWxlLmltYWdlUmVuZGVyaW5nID0gJ2F1dG8nO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBjdXJyZW50ID0gdGhpcy5jdXJyZW50KCk7XG5cdFx0XHR0aGlzLnNldERwcihjdXJyZW50ICogdGhpcy5pbml0aWFsRHByKTtcblx0XHRcdGlmICh1bnRyYWNrZWQodGhpcy5waXhlbGF0ZWQpICYmIHRoaXMuZG9tRWxlbWVudCkge1xuXHRcdFx0XHR0aGlzLmRvbUVsZW1lbnQuc3R5bGUuaW1hZ2VSZW5kZXJpbmcgPSBjdXJyZW50ID09PSAxID8gJ2F1dG8nIDogJ3BpeGVsYXRlZCc7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|