angular-three-soba 2.0.0-beta.21 → 2.0.0-beta.224
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/controls/orbit-controls/orbit-controls.d.ts +13 -19
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +31 -75
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +14 -8
- package/esm2022/loaders/loader/loader.mjs +44 -92
- package/esm2022/loaders/progress/progress.mjs +8 -9
- package/esm2022/loaders/texture-loader/texture-loader.mjs +20 -16
- package/fesm2022/angular-three-soba-controls.mjs +30 -74
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +78 -117
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +12 -1
- package/loaders/loader/loader.d.ts +8 -21
- package/loaders/texture-loader/texture-loader.d.ts +9 -3
- package/metadata.json +1 -1
- package/package.json +4 -63
- package/web-types.json +1 -1
- package/abstractions/README.md +0 -3
- 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/index.d.ts +0 -6
- 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/README.md +0 -3
- 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/index.d.ts +0 -4
- package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
- package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
- package/esm2022/abstractions/angular-three-soba-abstractions.mjs +0 -5
- 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/index.mjs +0 -7
- package/esm2022/abstractions/text/text.mjs +0 -274
- package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
- package/esm2022/cameras/angular-three-soba-cameras.mjs +0 -5
- 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/index.mjs +0 -5
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
- 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/materials/angular-three-soba-materials.mjs +0 -5
- package/esm2022/materials/index.mjs +0 -7
- 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/angular-three-soba-misc.mjs +0 -5
- 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/index.mjs +0 -14
- 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/angular-three-soba-shaders.mjs +0 -5
- 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/index.mjs +0 -18
- 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/angular-three-soba-staging.mjs +0 -5
- 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/index.mjs +0 -22
- 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-abstractions.mjs +0 -838
- package/fesm2022/angular-three-soba-abstractions.mjs.map +0 -1
- package/fesm2022/angular-three-soba-cameras.mjs +0 -394
- package/fesm2022/angular-three-soba-cameras.mjs.map +0 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
- package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
- package/fesm2022/angular-three-soba-materials.mjs +0 -1001
- package/fesm2022/angular-three-soba-materials.mjs.map +0 -1
- package/fesm2022/angular-three-soba-misc.mjs +0 -2278
- package/fesm2022/angular-three-soba-misc.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-shaders.mjs +0 -1589
- package/fesm2022/angular-three-soba-shaders.mjs.map +0 -1
- package/fesm2022/angular-three-soba-staging.mjs +0 -4162
- package/fesm2022/angular-three-soba-staging.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/materials/README.md +0 -3
- package/materials/index.d.ts +0 -6
- 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/README.md +0 -3
- package/misc/animations/animations.d.ts +0 -15
- package/misc/bake-shadows/bake-shadows.d.ts +0 -6
- 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/index.d.ts +0 -13
- 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/README.md +0 -3
- 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/index.d.ts +0 -17
- 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/README.md +0 -3
- 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/index.d.ts +0 -21
- 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
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
2
|
-
import { extend, injectBeforeRender, injectNgtRef, injectNgtStore, NgtArgs, signalStore, } from 'angular-three';
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
import { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';
|
|
5
|
-
import { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
extend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });
|
|
8
|
-
export class NgtsContactShadows {
|
|
9
|
-
set _opacity(opacity) {
|
|
10
|
-
this.inputs.set({ opacity });
|
|
11
|
-
}
|
|
12
|
-
set _width(width) {
|
|
13
|
-
this.inputs.set({ width });
|
|
14
|
-
}
|
|
15
|
-
set _height(height) {
|
|
16
|
-
this.inputs.set({ height });
|
|
17
|
-
}
|
|
18
|
-
set _blur(blur) {
|
|
19
|
-
this.inputs.set({ blur });
|
|
20
|
-
}
|
|
21
|
-
set _far(far) {
|
|
22
|
-
this.inputs.set({ far });
|
|
23
|
-
}
|
|
24
|
-
set _smooth(smooth) {
|
|
25
|
-
this.inputs.set({ smooth });
|
|
26
|
-
}
|
|
27
|
-
set _resolution(resolution) {
|
|
28
|
-
this.inputs.set({ resolution });
|
|
29
|
-
}
|
|
30
|
-
set _frames(frames) {
|
|
31
|
-
this.inputs.set({ frames });
|
|
32
|
-
}
|
|
33
|
-
set _scale(scale) {
|
|
34
|
-
this.inputs.set({ scale });
|
|
35
|
-
}
|
|
36
|
-
set _color(color) {
|
|
37
|
-
this.inputs.set({ color });
|
|
38
|
-
}
|
|
39
|
-
set _depthWrite(depthWrite) {
|
|
40
|
-
this.inputs.set({ depthWrite });
|
|
41
|
-
}
|
|
42
|
-
set _renderOrder(renderOrder) {
|
|
43
|
-
this.inputs.set({ renderOrder });
|
|
44
|
-
}
|
|
45
|
-
constructor() {
|
|
46
|
-
this.inputs = signalStore({
|
|
47
|
-
scale: 10,
|
|
48
|
-
frames: Infinity,
|
|
49
|
-
opacity: 1,
|
|
50
|
-
width: 1,
|
|
51
|
-
height: 1,
|
|
52
|
-
blur: 1,
|
|
53
|
-
far: 10,
|
|
54
|
-
resolution: 512,
|
|
55
|
-
smooth: true,
|
|
56
|
-
color: '#000000',
|
|
57
|
-
depthWrite: false,
|
|
58
|
-
renderOrder: 0,
|
|
59
|
-
});
|
|
60
|
-
this.contactShadowsRef = injectNgtRef();
|
|
61
|
-
this.Math = Math;
|
|
62
|
-
this.store = injectNgtStore();
|
|
63
|
-
this.shadowCameraRef = injectNgtRef();
|
|
64
|
-
this.scale = this.inputs.select('scale');
|
|
65
|
-
this.width = this.inputs.select('width');
|
|
66
|
-
this.height = this.inputs.select('height');
|
|
67
|
-
this.far = this.inputs.select('far');
|
|
68
|
-
this.resolution = this.inputs.select('resolution');
|
|
69
|
-
this.color = this.inputs.select('color');
|
|
70
|
-
this.scaledWidth = computed(() => {
|
|
71
|
-
const scale = this.scale();
|
|
72
|
-
return this.width() * (Array.isArray(scale) ? scale[0] : scale || 1);
|
|
73
|
-
});
|
|
74
|
-
this.scaledHeight = computed(() => {
|
|
75
|
-
const scale = this.scale();
|
|
76
|
-
return this.height() * (Array.isArray(scale) ? scale[1] : scale || 1);
|
|
77
|
-
});
|
|
78
|
-
this.renderOrder = this.inputs.select('renderOrder');
|
|
79
|
-
this.opacity = this.inputs.select('opacity');
|
|
80
|
-
this.depthWrite = this.inputs.select('depthWrite');
|
|
81
|
-
this.cameraArgs = computed(() => {
|
|
82
|
-
const width = this.scaledWidth();
|
|
83
|
-
const height = this.scaledHeight();
|
|
84
|
-
return [-width / 2, width / 2, height / 2, -height / 2, 0, this.far()];
|
|
85
|
-
});
|
|
86
|
-
this.contactShadows = computed(() => {
|
|
87
|
-
const color = this.color();
|
|
88
|
-
const resolution = this.resolution();
|
|
89
|
-
const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);
|
|
90
|
-
const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);
|
|
91
|
-
renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;
|
|
92
|
-
const planeGeometry = new THREE.PlaneGeometry(this.scaledWidth(), this.scaledHeight()).rotateX(Math.PI / 2);
|
|
93
|
-
const blurPlane = new Mesh(planeGeometry);
|
|
94
|
-
const depthMaterial = new THREE.MeshDepthMaterial();
|
|
95
|
-
depthMaterial.depthTest = depthMaterial.depthWrite = false;
|
|
96
|
-
depthMaterial.onBeforeCompile = (shader) => {
|
|
97
|
-
shader.uniforms = {
|
|
98
|
-
...shader.uniforms,
|
|
99
|
-
ucolor: { value: new THREE.Color(color) },
|
|
100
|
-
};
|
|
101
|
-
shader.fragmentShader = shader.fragmentShader.replace(`void main() {`, //
|
|
102
|
-
`uniform vec3 ucolor;
|
|
103
|
-
void main() {
|
|
104
|
-
`);
|
|
105
|
-
shader.fragmentShader = shader.fragmentShader.replace('vec4( vec3( 1.0 - fragCoordZ ), opacity );',
|
|
106
|
-
// Colorize the shadow, multiply by the falloff so that the center can remain darker
|
|
107
|
-
'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );');
|
|
108
|
-
};
|
|
109
|
-
const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);
|
|
110
|
-
const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);
|
|
111
|
-
verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;
|
|
112
|
-
return {
|
|
113
|
-
renderTarget,
|
|
114
|
-
planeGeometry,
|
|
115
|
-
depthMaterial,
|
|
116
|
-
blurPlane,
|
|
117
|
-
horizontalBlurMaterial,
|
|
118
|
-
verticalBlurMaterial,
|
|
119
|
-
renderTargetBlur,
|
|
120
|
-
};
|
|
121
|
-
});
|
|
122
|
-
injectBeforeRender(this.beforeRender.bind(this, 0));
|
|
123
|
-
}
|
|
124
|
-
beforeRender(count, { scene, gl }) {
|
|
125
|
-
const { frames = Infinity, blur = 1, smooth = true } = this.inputs.get();
|
|
126
|
-
const { depthMaterial, renderTarget } = this.contactShadows();
|
|
127
|
-
const shadowCamera = this.shadowCameraRef.nativeElement;
|
|
128
|
-
if (shadowCamera && (frames === Infinity || count < frames)) {
|
|
129
|
-
const initialBackground = scene.background;
|
|
130
|
-
scene.background = null;
|
|
131
|
-
const initialOverrideMaterial = scene.overrideMaterial;
|
|
132
|
-
scene.overrideMaterial = depthMaterial;
|
|
133
|
-
gl.setRenderTarget(renderTarget);
|
|
134
|
-
gl.render(scene, shadowCamera);
|
|
135
|
-
scene.overrideMaterial = initialOverrideMaterial;
|
|
136
|
-
this.blurShadows(blur);
|
|
137
|
-
if (smooth)
|
|
138
|
-
this.blurShadows(blur * 0.4);
|
|
139
|
-
gl.setRenderTarget(null);
|
|
140
|
-
scene.background = initialBackground;
|
|
141
|
-
count++;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
blurShadows(blur) {
|
|
145
|
-
const { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } = this.contactShadows();
|
|
146
|
-
const gl = this.store.get('gl');
|
|
147
|
-
const shadowCamera = this.shadowCameraRef.nativeElement;
|
|
148
|
-
blurPlane.visible = true;
|
|
149
|
-
blurPlane.material = horizontalBlurMaterial;
|
|
150
|
-
horizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;
|
|
151
|
-
horizontalBlurMaterial.uniforms['h'].value = (blur * 1) / 256;
|
|
152
|
-
gl.setRenderTarget(renderTargetBlur);
|
|
153
|
-
gl.render(blurPlane, shadowCamera);
|
|
154
|
-
blurPlane.material = verticalBlurMaterial;
|
|
155
|
-
verticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;
|
|
156
|
-
verticalBlurMaterial.uniforms['v'].value = (blur * 1) / 256;
|
|
157
|
-
gl.setRenderTarget(renderTarget);
|
|
158
|
-
gl.render(blurPlane, shadowCamera);
|
|
159
|
-
blurPlane.visible = false;
|
|
160
|
-
}
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
162
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsContactShadows, isStandalone: true, selector: "ngts-contact-shadows", inputs: { contactShadowsRef: "contactShadowsRef", _opacity: ["opacity", "_opacity"], _width: ["width", "_width"], _height: ["height", "_height"], _blur: ["blur", "_blur"], _far: ["far", "_far"], _smooth: ["smooth", "_smooth"], _resolution: ["resolution", "_resolution"], _frames: ["frames", "_frames"], _scale: ["scale", "_scale"], _color: ["color", "_color"], _depthWrite: ["depthWrite", "_depthWrite"], _renderOrder: ["renderOrder", "_renderOrder"] }, ngImport: i0, template: `
|
|
163
|
-
<ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
|
|
164
|
-
<ngt-mesh
|
|
165
|
-
[renderOrder]="renderOrder() ?? 0"
|
|
166
|
-
[geometry]="contactShadows().planeGeometry"
|
|
167
|
-
[scale]="[1, -1, 1]"
|
|
168
|
-
[rotation]="[-Math.PI / 2, 0, 0]"
|
|
169
|
-
>
|
|
170
|
-
<ngt-mesh-basic-material
|
|
171
|
-
[map]="contactShadows().renderTarget.texture"
|
|
172
|
-
[transparent]="true"
|
|
173
|
-
[opacity]="opacity() ?? 1"
|
|
174
|
-
[depthWrite]="depthWrite() ?? false"
|
|
175
|
-
/>
|
|
176
|
-
</ngt-mesh>
|
|
177
|
-
<ngt-orthographic-camera *args="cameraArgs()" [ref]="shadowCameraRef" />
|
|
178
|
-
</ngt-group>
|
|
179
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
180
|
-
}
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsContactShadows, decorators: [{
|
|
182
|
-
type: Component,
|
|
183
|
-
args: [{
|
|
184
|
-
selector: 'ngts-contact-shadows',
|
|
185
|
-
standalone: true,
|
|
186
|
-
template: `
|
|
187
|
-
<ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
|
|
188
|
-
<ngt-mesh
|
|
189
|
-
[renderOrder]="renderOrder() ?? 0"
|
|
190
|
-
[geometry]="contactShadows().planeGeometry"
|
|
191
|
-
[scale]="[1, -1, 1]"
|
|
192
|
-
[rotation]="[-Math.PI / 2, 0, 0]"
|
|
193
|
-
>
|
|
194
|
-
<ngt-mesh-basic-material
|
|
195
|
-
[map]="contactShadows().renderTarget.texture"
|
|
196
|
-
[transparent]="true"
|
|
197
|
-
[opacity]="opacity() ?? 1"
|
|
198
|
-
[depthWrite]="depthWrite() ?? false"
|
|
199
|
-
/>
|
|
200
|
-
</ngt-mesh>
|
|
201
|
-
<ngt-orthographic-camera *args="cameraArgs()" [ref]="shadowCameraRef" />
|
|
202
|
-
</ngt-group>
|
|
203
|
-
`,
|
|
204
|
-
imports: [NgtArgs],
|
|
205
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
206
|
-
}]
|
|
207
|
-
}], ctorParameters: function () { return []; }, propDecorators: { contactShadowsRef: [{
|
|
208
|
-
type: Input
|
|
209
|
-
}], _opacity: [{
|
|
210
|
-
type: Input,
|
|
211
|
-
args: [{ alias: 'opacity' }]
|
|
212
|
-
}], _width: [{
|
|
213
|
-
type: Input,
|
|
214
|
-
args: [{ alias: 'width' }]
|
|
215
|
-
}], _height: [{
|
|
216
|
-
type: Input,
|
|
217
|
-
args: [{ alias: 'height' }]
|
|
218
|
-
}], _blur: [{
|
|
219
|
-
type: Input,
|
|
220
|
-
args: [{ alias: 'blur' }]
|
|
221
|
-
}], _far: [{
|
|
222
|
-
type: Input,
|
|
223
|
-
args: [{ alias: 'far' }]
|
|
224
|
-
}], _smooth: [{
|
|
225
|
-
type: Input,
|
|
226
|
-
args: [{ alias: 'smooth' }]
|
|
227
|
-
}], _resolution: [{
|
|
228
|
-
type: Input,
|
|
229
|
-
args: [{ alias: 'resolution' }]
|
|
230
|
-
}], _frames: [{
|
|
231
|
-
type: Input,
|
|
232
|
-
args: [{ alias: 'frames' }]
|
|
233
|
-
}], _scale: [{
|
|
234
|
-
type: Input,
|
|
235
|
-
args: [{ alias: 'scale' }]
|
|
236
|
-
}], _color: [{
|
|
237
|
-
type: Input,
|
|
238
|
-
args: [{ alias: 'color' }]
|
|
239
|
-
}], _depthWrite: [{
|
|
240
|
-
type: Input,
|
|
241
|
-
args: [{ alias: 'depthWrite' }]
|
|
242
|
-
}], _renderOrder: [{
|
|
243
|
-
type: Input,
|
|
244
|
-
args: [{ alias: 'renderOrder' }]
|
|
245
|
-
}] } });
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zaGFkb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFDTixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsT0FBTyxFQUNQLFdBQVcsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhFLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBa0QvRCxNQUFNLE9BQU8sa0JBQWtCO0lBa0I5QixJQUFpQyxRQUFRLENBQUMsT0FBZTtRQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQStCLE1BQU0sQ0FBQyxLQUFhO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBZ0MsT0FBTyxDQUFDLE1BQWM7UUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFF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QkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSUksS0FBSztzQkFBbEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBSUssSUFBSTtzQkFBaEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBSVMsT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSVUsV0FBVztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBSUUsT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSUssTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSU0sTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSVcsV0FBVztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBSU8sWUFBWTtzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdE5ndFJlZixcblx0aW5qZWN0Tmd0U3RvcmUsXG5cdE5ndEFyZ3MsXG5cdHNpZ25hbFN0b3JlLFxuXHR0eXBlIE5ndEdyb3VwLFxuXHR0eXBlIE5ndFJlbmRlclN0YXRlLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoLCBNZXNoQmFzaWNNYXRlcmlhbCwgT3J0aG9ncmFwaGljQ2FtZXJhIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbEJsdXJTaGFkZXIsIFZlcnRpY2FsQmx1clNoYWRlciB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmV4dGVuZCh7IEdyb3VwLCBNZXNoLCBNZXNoQmFzaWNNYXRlcmlhbCwgT3J0aG9ncmFwaGljQ2FtZXJhIH0pO1xuXG5leHBvcnQgdHlwZSBOZ3RzQ29udGFjdFNoYWRvd3NTdGF0ZSA9IHtcblx0b3BhY2l0eTogbnVtYmVyO1xuXHR3aWR0aDogbnVtYmVyO1xuXHRoZWlnaHQ6IG51bWJlcjtcblx0Ymx1cjogbnVtYmVyO1xuXHRmYXI6IG51bWJlcjtcblx0c21vb3RoOiBib29sZWFuO1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdGZyYW1lczogbnVtYmVyO1xuXHRzY2FsZTogbnVtYmVyIHwgW3g6IG51bWJlciwgeTogbnVtYmVyXTtcblx0Y29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb247XG5cdGRlcHRoV3JpdGU6IGJvb2xlYW47XG5cdHJlbmRlck9yZGVyOiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1ncm91cFxuXHRcdCAqL1xuXHRcdCduZ3RzLWNvbnRhY3Qtc2hhZG93cyc6IE5ndHNDb250YWN0U2hhZG93c1N0YXRlICYgTmd0R3JvdXA7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jb250YWN0LXNoYWRvd3MnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQgW3JlZl09XCJjb250YWN0U2hhZG93c1JlZlwiIFtyb3RhdGlvbl09XCJbTWF0aC5QSSAvIDIsIDAsIDBdXCI+XG5cdFx0XHQ8bmd0LW1lc2hcblx0XHRcdFx0W3JlbmRlck9yZGVyXT1cInJlbmRlck9yZGVyKCkgPz8gMFwiXG5cdFx0XHRcdFtnZW9tZXRyeV09XCJjb250YWN0U2hhZG93cygpLnBsYW5lR2VvbWV0cnlcIlxuXHRcdFx0XHRbc2NhbGVdPVwiWzEsIC0xLCAxXVwiXG5cdFx0XHRcdFtyb3RhdGlvbl09XCJbLU1hdGguUEkgLyAyLCAwLCAwXVwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuXHRcdFx0XHRcdFttYXBdPVwiY29udGFjdFNoYWRvd3MoKS5yZW5kZXJUYXJnZXQudGV4dHVyZVwiXG5cdFx0XHRcdFx0W3RyYW5zcGFyZW50XT1cInRydWVcIlxuXHRcdFx0XHRcdFtvcGFjaXR5XT1cIm9wYWNpdHkoKSA/PyAxXCJcblx0XHRcdFx0XHRbZGVwdGhXcml0ZV09XCJkZXB0aFdyaXRlKCkgPz8gZmFsc2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0PC9uZ3QtbWVzaD5cblx0XHRcdDxuZ3Qtb3J0aG9ncmFwaGljLWNhbWVyYSAqYXJncz1cImNhbWVyYUFyZ3MoKVwiIFtyZWZdPVwic2hhZG93Q2FtZXJhUmVmXCIgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDb250YWN0U2hhZG93cyB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c0NvbnRhY3RTaGFkb3dzU3RhdGU+KHtcblx0XHRzY2FsZTogMTAsXG5cdFx0ZnJhbWVzOiBJbmZpbml0eSxcblx0XHRvcGFjaXR5OiAxLFxuXHRcdHdpZHRoOiAxLFxuXHRcdGhlaWdodDogMSxcblx0XHRibHVyOiAxLFxuXHRcdGZhcjogMTAsXG5cdFx0cmVzb2x1dGlvbjogNTEyLFxuXHRcdHNtb290aDogdHJ1ZSxcblx0XHRjb2xvcjogJyMwMDAwMDAnLFxuXHRcdGRlcHRoV3JpdGU6IGZhbHNlLFxuXHRcdHJlbmRlck9yZGVyOiAwLFxuXHR9KTtcblxuXHRASW5wdXQoKSBjb250YWN0U2hhZG93c1JlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ29wYWNpdHknIH0pIHNldCBfb3BhY2l0eShvcGFjaXR5OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBvcGFjaXR5IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICd3aWR0aCcgfSkgc2V0IF93aWR0aCh3aWR0aDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgd2lkdGggfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2hlaWdodCcgfSkgc2V0IF9oZWlnaHQoaGVpZ2h0OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBoZWlnaHQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2JsdXInIH0pIHNldCBfYmx1cihibHVyOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBibHVyIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmYXInIH0pIHNldCBfZmFyKGZhcjogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmFyIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzbW9vdGgnIH0pIHNldCBfc21vb3RoKHNtb290aDogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNtb290aCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmVzb2x1dGlvbicgfSkgc2V0IF9yZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJlc29sdXRpb24gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZyYW1lcycgfSkgc2V0IF9mcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmcmFtZXMgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NjYWxlJyB9KSBzZXQgX3NjYWxlKHNjYWxlOiBudW1iZXIgfCBbeDogbnVtYmVyLCB5OiBudW1iZXJdKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc2NhbGUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2NvbG9yJyB9KSBzZXQgX2NvbG9yKGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2RlcHRoV3JpdGUnIH0pIHNldCBfZGVwdGhXcml0ZShkZXB0aFdyaXRlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGVwdGhXcml0ZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmVuZGVyT3JkZXInIH0pIHNldCBfcmVuZGVyT3JkZXIocmVuZGVyT3JkZXI6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJlbmRlck9yZGVyIH0pO1xuXHR9XG5cblx0TWF0aCA9IE1hdGg7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cblx0c2hhZG93Q2FtZXJhUmVmID0gaW5qZWN0Tmd0UmVmPE9ydGhvZ3JhcGhpY0NhbWVyYT4oKTtcblxuXHRwcml2YXRlIHNjYWxlID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzY2FsZScpO1xuXHRwcml2YXRlIHdpZHRoID0gdGhpcy5pbnB1dHMuc2VsZWN0KCd3aWR0aCcpO1xuXHRwcml2YXRlIGhlaWdodCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnaGVpZ2h0Jyk7XG5cdHByaXZhdGUgZmFyID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmYXInKTtcblx0cHJpdmF0ZSByZXNvbHV0aW9uID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyZXNvbHV0aW9uJyk7XG5cdHByaXZhdGUgY29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbG9yJyk7XG5cblx0cHJpdmF0ZSBzY2FsZWRXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGUoKTtcblx0XHRyZXR1cm4gdGhpcy53aWR0aCgpICogKEFycmF5LmlzQXJyYXkoc2NhbGUpID8gc2NhbGVbMF0gOiBzY2FsZSB8fCAxKTtcblx0fSk7XG5cdHByaXZhdGUgc2NhbGVkSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZSgpO1xuXHRcdHJldHVybiB0aGlzLmhlaWdodCgpICogKEFycmF5LmlzQXJyYXkoc2NhbGUpID8gc2NhbGVbMV0gOiBzY2FsZSB8fCAxKTtcblx0fSk7XG5cblx0cmVuZGVyT3JkZXIgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3JlbmRlck9yZGVyJyk7XG5cdG9wYWNpdHkgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ29wYWNpdHknKTtcblx0ZGVwdGhXcml0ZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGVwdGhXcml0ZScpO1xuXG5cdGNhbWVyYUFyZ3MgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qgd2lkdGggPSB0aGlzLnNjYWxlZFdpZHRoKCk7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gdGhpcy5zY2FsZWRIZWlnaHQoKTtcblx0XHRyZXR1cm4gWy13aWR0aCAvIDIsIHdpZHRoIC8gMiwgaGVpZ2h0IC8gMiwgLWhlaWdodCAvIDIsIDAsIHRoaXMuZmFyKCldO1xuXHR9KTtcblx0Y29udGFjdFNoYWRvd3MgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgY29sb3IgPSB0aGlzLmNvbG9yKCk7XG5cdFx0Y29uc3QgcmVzb2x1dGlvbiA9IHRoaXMucmVzb2x1dGlvbigpO1xuXHRcdGNvbnN0IHJlbmRlclRhcmdldCA9IG5ldyBUSFJFRS5XZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uKTtcblx0XHRjb25zdCByZW5kZXJUYXJnZXRCbHVyID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0KHJlc29sdXRpb24sIHJlc29sdXRpb24pO1xuXHRcdHJlbmRlclRhcmdldEJsdXIudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMgPSByZW5kZXJUYXJnZXQudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMgPSBmYWxzZTtcblx0XHRjb25zdCBwbGFuZUdlb21ldHJ5ID0gbmV3IFRIUkVFLlBsYW5lR2VvbWV0cnkodGhpcy5zY2FsZWRXaWR0aCgpLCB0aGlzLnNjYWxlZEhlaWdodCgpKS5yb3RhdGVYKE1hdGguUEkgLyAyKTtcblx0XHRjb25zdCBibHVyUGxhbmUgPSBuZXcgTWVzaChwbGFuZUdlb21ldHJ5KTtcblx0XHRjb25zdCBkZXB0aE1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hEZXB0aE1hdGVyaWFsKCk7XG5cdFx0ZGVwdGhNYXRlcmlhbC5kZXB0aFRlc3QgPSBkZXB0aE1hdGVyaWFsLmRlcHRoV3JpdGUgPSBmYWxzZTtcblx0XHRkZXB0aE1hdGVyaWFsLm9uQmVmb3JlQ29tcGlsZSA9IChzaGFkZXIpID0+IHtcblx0XHRcdHNoYWRlci51bmlmb3JtcyA9IHtcblx0XHRcdFx0Li4uc2hhZGVyLnVuaWZvcm1zLFxuXHRcdFx0XHR1Y29sb3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcihjb2xvcikgfSxcblx0XHRcdH07XG5cdFx0XHRzaGFkZXIuZnJhZ21lbnRTaGFkZXIgPSBzaGFkZXIuZnJhZ21lbnRTaGFkZXIucmVwbGFjZShcblx0XHRcdFx0YHZvaWQgbWFpbigpIHtgLCAvL1xuXHRcdFx0XHRgdW5pZm9ybSB2ZWMzIHVjb2xvcjtcbiAgICAgICAgICAgICAgICAgdm9pZCBtYWluKCkge1xuICAgICAgICAgICAgICAgIGAsXG5cdFx0XHQpO1xuXHRcdFx0c2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoXG5cdFx0XHRcdCd2ZWM0KCB2ZWMzKCAxLjAgLSBmcmFnQ29vcmRaICksIG9wYWNpdHkgKTsnLFxuXHRcdFx0XHQvLyBDb2xvcml6ZSB0aGUgc2hhZG93LCBtdWx0aXBseSBieSB0aGUgZmFsbG9mZiBzbyB0aGF0IHRoZSBjZW50ZXIgY2FuIHJlbWFpbiBkYXJrZXJcblx0XHRcdFx0J3ZlYzQoIHVjb2xvciAqIGZyYWdDb29yZFogKiAyLjAsICggMS4wIC0gZnJhZ0Nvb3JkWiApICogMS4wICk7Jyxcblx0XHRcdCk7XG5cdFx0fTtcblxuXHRcdGNvbnN0IGhvcml6b250YWxCbHVyTWF0ZXJpYWwgPSBuZXcgVEhSRUUuU2hhZGVyTWF0ZXJpYWwoSG9yaXpvbnRhbEJsdXJTaGFkZXIpO1xuXHRcdGNvbnN0IHZlcnRpY2FsQmx1ck1hdGVyaWFsID0gbmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKFZlcnRpY2FsQmx1clNoYWRlcik7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwuZGVwdGhUZXN0ID0gaG9yaXpvbnRhbEJsdXJNYXRlcmlhbC5kZXB0aFRlc3QgPSBmYWxzZTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRyZW5kZXJUYXJnZXQsXG5cdFx0XHRwbGFuZUdlb21ldHJ5LFxuXHRcdFx0ZGVwdGhNYXRlcmlhbCxcblx0XHRcdGJsdXJQbGFuZSxcblx0XHRcdGhvcml6b250YWxCbHVyTWF0ZXJpYWwsXG5cdFx0XHR2ZXJ0aWNhbEJsdXJNYXRlcmlhbCxcblx0XHRcdHJlbmRlclRhcmdldEJsdXIsXG5cdFx0fTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMuYmVmb3JlUmVuZGVyLmJpbmQodGhpcywgMCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoY291bnQ6IG51bWJlciwgeyBzY2VuZSwgZ2wgfTogTmd0UmVuZGVyU3RhdGUpIHtcblx0XHRjb25zdCB7IGZyYW1lcyA9IEluZmluaXR5LCBibHVyID0gMSwgc21vb3RoID0gdHJ1ZSB9ID0gdGhpcy5pbnB1dHMuZ2V0KCk7XG5cdFx0Y29uc3QgeyBkZXB0aE1hdGVyaWFsLCByZW5kZXJUYXJnZXQgfSA9IHRoaXMuY29udGFjdFNoYWRvd3MoKTtcblx0XHRjb25zdCBzaGFkb3dDYW1lcmEgPSB0aGlzLnNoYWRvd0NhbWVyYVJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChzaGFkb3dDYW1lcmEgJiYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpKSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQmFja2dyb3VuZCA9IHNjZW5lLmJhY2tncm91bmQ7XG5cdFx0XHRzY2VuZS5iYWNrZ3JvdW5kID0gbnVsbDtcblx0XHRcdGNvbnN0IGluaXRpYWxPdmVycmlkZU1hdGVyaWFsID0gc2NlbmUub3ZlcnJpZGVNYXRlcmlhbDtcblx0XHRcdHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgPSBkZXB0aE1hdGVyaWFsO1xuXHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCk7XG5cdFx0XHRnbC5yZW5kZXIoc2NlbmUsIHNoYWRvd0NhbWVyYSk7XG5cdFx0XHRzY2VuZS5vdmVycmlkZU1hdGVyaWFsID0gaW5pdGlhbE92ZXJyaWRlTWF0ZXJpYWw7XG5cblx0XHRcdHRoaXMuYmx1clNoYWRvd3MoYmx1cik7XG5cdFx0XHRpZiAoc21vb3RoKSB0aGlzLmJsdXJTaGFkb3dzKGJsdXIgKiAwLjQpO1xuXG5cdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0XHRzY2VuZS5iYWNrZ3JvdW5kID0gaW5pdGlhbEJhY2tncm91bmQ7XG5cdFx0XHRjb3VudCsrO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYmx1clNoYWRvd3MoYmx1cjogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeyBibHVyUGxhbmUsIGhvcml6b250YWxCbHVyTWF0ZXJpYWwsIHZlcnRpY2FsQmx1ck1hdGVyaWFsLCByZW5kZXJUYXJnZXRCbHVyLCByZW5kZXJUYXJnZXQgfSA9XG5cdFx0XHR0aGlzLmNvbnRhY3RTaGFkb3dzKCk7XG5cdFx0Y29uc3QgZ2wgPSB0aGlzLnN0b3JlLmdldCgnZ2wnKTtcblx0XHRjb25zdCBzaGFkb3dDYW1lcmEgPSB0aGlzLnNoYWRvd0NhbWVyYVJlZi5uYXRpdmVFbGVtZW50O1xuXG5cdFx0Ymx1clBsYW5lLnZpc2libGUgPSB0cnVlO1xuXG5cdFx0Ymx1clBsYW5lLm1hdGVyaWFsID0gaG9yaXpvbnRhbEJsdXJNYXRlcmlhbDtcblx0XHRob3Jpem9udGFsQmx1ck1hdGVyaWFsLnVuaWZvcm1zWyd0RGlmZnVzZSddLnZhbHVlID0gcmVuZGVyVGFyZ2V0LnRleHR1cmU7XG5cdFx0aG9yaXpvbnRhbEJsdXJNYXRlcmlhbC51bmlmb3Jtc1snaCddLnZhbHVlID0gKGJsdXIgKiAxKSAvIDI1NjtcblxuXHRcdGdsLnNldFJlbmRlclRhcmdldChyZW5kZXJUYXJnZXRCbHVyKTtcblx0XHRnbC5yZW5kZXIoYmx1clBsYW5lLCBzaGFkb3dDYW1lcmEpO1xuXG5cdFx0Ymx1clBsYW5lLm1hdGVyaWFsID0gdmVydGljYWxCbHVyTWF0ZXJpYWw7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwudW5pZm9ybXNbJ3REaWZmdXNlJ10udmFsdWUgPSByZW5kZXJUYXJnZXRCbHVyLnRleHR1cmU7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwudW5pZm9ybXNbJ3YnXS52YWx1ZSA9IChibHVyICogMSkgLyAyNTY7XG5cblx0XHRnbC5zZXRSZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KTtcblx0XHRnbC5yZW5kZXIoYmx1clBsYW5lLCBzaGFkb3dDYW1lcmEpO1xuXG5cdFx0Ymx1clBsYW5lLnZpc2libGUgPSBmYWxzZTtcblx0fVxufVxuIl19
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export const ENVIRONMENT_PRESETS = {
|
|
2
|
-
apartment: 'lebombo_1k.hdr',
|
|
3
|
-
city: 'potsdamer_platz_1k.hdr',
|
|
4
|
-
dawn: 'kiara_1_dawn_1k.hdr',
|
|
5
|
-
forest: 'forest_slope_1k.hdr',
|
|
6
|
-
lobby: 'st_fagans_interior_1k.hdr',
|
|
7
|
-
night: 'dikhololo_night_1k.hdr',
|
|
8
|
-
park: 'rooitou_park_1k.hdr',
|
|
9
|
-
studio: 'studio_small_03_1k.hdr',
|
|
10
|
-
sunset: 'venice_sunset_1k.hdr',
|
|
11
|
-
warehouse: 'empty_warehouse_01_1k.hdr',
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2Vudmlyb25tZW50L2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNsQyxTQUFTLEVBQUUsZ0JBQWdCO0lBQzNCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQixNQUFNLEVBQUUscUJBQXFCO0lBQzdCLEtBQUssRUFBRSwyQkFBMkI7SUFDbEMsS0FBSyxFQUFFLHdCQUF3QjtJQUMvQixJQUFJLEVBQUUscUJBQXFCO0lBQzNCLE1BQU0sRUFBRSx3QkFBd0I7SUFDaEMsTUFBTSxFQUFFLHNCQUFzQjtJQUM5QixTQUFTLEVBQUUsMkJBQTJCO0NBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRU5WSVJPTk1FTlRfUFJFU0VUUyA9IHtcblx0YXBhcnRtZW50OiAnbGVib21ib18xay5oZHInLFxuXHRjaXR5OiAncG90c2RhbWVyX3BsYXR6XzFrLmhkcicsXG5cdGRhd246ICdraWFyYV8xX2Rhd25fMWsuaGRyJyxcblx0Zm9yZXN0OiAnZm9yZXN0X3Nsb3BlXzFrLmhkcicsXG5cdGxvYmJ5OiAnc3RfZmFnYW5zX2ludGVyaW9yXzFrLmhkcicsXG5cdG5pZ2h0OiAnZGlraG9sb2xvX25pZ2h0XzFrLmhkcicsXG5cdHBhcms6ICdyb29pdG91X3BhcmtfMWsuaGRyJyxcblx0c3R1ZGlvOiAnc3R1ZGlvX3NtYWxsXzAzXzFrLmhkcicsXG5cdHN1bnNldDogJ3ZlbmljZV9zdW5zZXRfMWsuaGRyJyxcblx0d2FyZWhvdXNlOiAnZW1wdHlfd2FyZWhvdXNlXzAxXzFrLmhkcicsXG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSA9IGtleW9mIHR5cGVvZiBFTlZJUk9OTUVOVF9QUkVTRVRTO1xuIl19
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, effect, inject } from '@angular/core';
|
|
2
|
-
import { injectNgtStore, signalStore } from 'angular-three';
|
|
3
|
-
import { NgtsEnvironmentInput } from './environment-input';
|
|
4
|
-
import { injectNgtsEnvironment, setEnvProps } from './utils';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class NgtsEnvironmentCube {
|
|
7
|
-
set _background(background) {
|
|
8
|
-
this.inputs.set({ background });
|
|
9
|
-
}
|
|
10
|
-
constructor() {
|
|
11
|
-
this.environmentInput = inject(NgtsEnvironmentInput);
|
|
12
|
-
this.inputs = signalStore({ background: false });
|
|
13
|
-
this.store = injectNgtStore();
|
|
14
|
-
this.scene = this.store.select('scene');
|
|
15
|
-
this.background = this.inputs.select('background');
|
|
16
|
-
this.textureRef = injectNgtsEnvironment(this.environmentInput.params);
|
|
17
|
-
this.setEnvProps();
|
|
18
|
-
}
|
|
19
|
-
setEnvProps() {
|
|
20
|
-
effect((onCleanup) => {
|
|
21
|
-
const [defaultScene, scene, background, blur, texture] = [
|
|
22
|
-
this.scene(),
|
|
23
|
-
this.environmentInput.scene(),
|
|
24
|
-
this.background(),
|
|
25
|
-
this.environmentInput.blur(),
|
|
26
|
-
this.textureRef.nativeElement,
|
|
27
|
-
];
|
|
28
|
-
if (!texture)
|
|
29
|
-
return;
|
|
30
|
-
const cleanUp = setEnvProps(background, scene, defaultScene, texture, blur);
|
|
31
|
-
onCleanup(cleanUp);
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentCube, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
35
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", inputs: { _background: ["background", "_background"] }, ngImport: i0 }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
|
|
38
|
-
type: Directive,
|
|
39
|
-
args: [{
|
|
40
|
-
selector: 'ngts-environment-cube',
|
|
41
|
-
standalone: true,
|
|
42
|
-
}]
|
|
43
|
-
}], ctorParameters: function () { return []; }, propDecorators: { _background: [{
|
|
44
|
-
type: Input,
|
|
45
|
-
args: [{ alias: 'background' }]
|
|
46
|
-
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtY3ViZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC1jdWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFrQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBTTdELE1BQU0sT0FBTyxtQkFBbUI7SUFLL0IsSUFBb0MsV0FBVyxDQUFDLFVBQW1CO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBUUQ7UUFkQSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV4QyxXQUFNLEdBQUcsV0FBVyxDQUFnRCxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBTTNGLFVBQUssR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUN6QixVQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsZUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLGVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFHeEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxXQUFXO1FBQ2xCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ3hELElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhO2FBQzdCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FoQ1csbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzBFQU1vQyxXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RTdG9yZSwgc2lnbmFsU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudElucHV0LCB0eXBlIE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGUgfSBmcm9tICcuL2Vudmlyb25tZW50LWlucHV0JztcbmltcG9ydCB7IGluamVjdE5ndHNFbnZpcm9ubWVudCwgc2V0RW52UHJvcHMgfSBmcm9tICcuL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnbmd0cy1lbnZpcm9ubWVudC1jdWJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50Q3ViZSB7XG5cdGVudmlyb25tZW50SW5wdXQgPSBpbmplY3QoTmd0c0Vudmlyb25tZW50SW5wdXQpO1xuXG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8UGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlLCAnYmFja2dyb3VuZCc+Pih7IGJhY2tncm91bmQ6IGZhbHNlIH0pO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYmFja2dyb3VuZCcgfSkgc2V0IF9iYWNrZ3JvdW5kKGJhY2tncm91bmQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBiYWNrZ3JvdW5kIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgc2NlbmUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblxuXHRwcml2YXRlIGJhY2tncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2JhY2tncm91bmQnKTtcblx0cHJpdmF0ZSB0ZXh0dXJlUmVmID0gaW5qZWN0Tmd0c0Vudmlyb25tZW50KHRoaXMuZW52aXJvbm1lbnRJbnB1dC5wYXJhbXMpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuc2V0RW52UHJvcHMoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0RW52UHJvcHMoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtkZWZhdWx0U2NlbmUsIHNjZW5lLCBiYWNrZ3JvdW5kLCBibHVyLCB0ZXh0dXJlXSA9IFtcblx0XHRcdFx0dGhpcy5zY2VuZSgpLFxuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50SW5wdXQuc2NlbmUoKSxcblx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kKCksXG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbnB1dC5ibHVyKCksXG5cdFx0XHRcdHRoaXMudGV4dHVyZVJlZi5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XTtcblx0XHRcdGlmICghdGV4dHVyZSkgcmV0dXJuO1xuXHRcdFx0Y29uc3QgY2xlYW5VcCA9IHNldEVudlByb3BzKGJhY2tncm91bmQhLCBzY2VuZSwgZGVmYXVsdFNjZW5lLCB0ZXh0dXJlLCBibHVyKTtcblx0XHRcdG9uQ2xlYW51cChjbGVhblVwKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
|
|
2
|
-
import { extend, NgtArgs } from 'angular-three';
|
|
3
|
-
import { GroundProjectedEnv } from 'three-stdlib';
|
|
4
|
-
import { NgtsEnvironmentInput } from './environment-input';
|
|
5
|
-
import { NgtsEnvironmentMap } from './environment-map';
|
|
6
|
-
import { injectNgtsEnvironment } from './utils';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
extend({ GroundProjectedEnv });
|
|
9
|
-
export class NgtsEnvironmentGround {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.environmentInput = inject(NgtsEnvironmentInput);
|
|
12
|
-
this.defaultTexture = injectNgtsEnvironment(this.environmentInput.params);
|
|
13
|
-
this.texture = computed(() => {
|
|
14
|
-
const defaultTexture = this.defaultTexture.nativeElement;
|
|
15
|
-
return this.environmentInput.map() || defaultTexture;
|
|
16
|
-
});
|
|
17
|
-
this.groundArgs = computed(() => (this.texture() ? [this.texture()] : []));
|
|
18
|
-
this.height = computed(() => this.environmentInput.ground()?.height);
|
|
19
|
-
this.radius = computed(() => this.environmentInput.ground()?.radius);
|
|
20
|
-
this.scale = computed(() => this.environmentInput.ground()?.scale ?? 1000);
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentGround, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsEnvironmentGround, isStandalone: true, selector: "ngts-environment-ground", ngImport: i0, template: `
|
|
24
|
-
<ngts-environment-map [map]="texture()" [background]="!!environmentInput.background()" />
|
|
25
|
-
<ngt-ground-projected-env *args="groundArgs()" [scale]="scale()" [height]="height()" [radius]="radius()" />
|
|
26
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map", inputs: ["map", "background"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
27
|
-
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentGround, decorators: [{
|
|
29
|
-
type: Component,
|
|
30
|
-
args: [{
|
|
31
|
-
selector: 'ngts-environment-ground',
|
|
32
|
-
standalone: true,
|
|
33
|
-
template: `
|
|
34
|
-
<ngts-environment-map [map]="texture()" [background]="!!environmentInput.background()" />
|
|
35
|
-
<ngt-ground-projected-env *args="groundArgs()" [scale]="scale()" [height]="height()" [radius]="radius()" />
|
|
36
|
-
`,
|
|
37
|
-
imports: [NgtsEnvironmentMap, NgtArgs],
|
|
38
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
39
|
-
}]
|
|
40
|
-
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtZ3JvdW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2Vudmlyb25tZW50L2Vudmlyb25tZW50LWdyb3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFaEQsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBWS9CLE1BQU0sT0FBTyxxQkFBcUI7SUFWbEM7UUFXQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3RSxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxjQUFjLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBVSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztLQUMvRTs4R0FiWSxxQkFBcUI7a0dBQXJCLHFCQUFxQixtRkFQdkI7OztFQUdULDREQUNTLGtCQUFrQixnR0FBRSxPQUFPOzsyRkFHekIscUJBQXFCO2tCQVZqQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7OztFQUdUO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIE5ndEFyZ3MgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEdyb3VuZFByb2plY3RlZEVudiB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRJbnB1dCB9IGZyb20gJy4vZW52aXJvbm1lbnQtaW5wdXQnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50TWFwIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1tYXAnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c0Vudmlyb25tZW50IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4dGVuZCh7IEdyb3VuZFByb2plY3RlZEVudiB9KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1lbnZpcm9ubWVudC1ncm91bmQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3RzLWVudmlyb25tZW50LW1hcCBbbWFwXT1cInRleHR1cmUoKVwiIFtiYWNrZ3JvdW5kXT1cIiEhZW52aXJvbm1lbnRJbnB1dC5iYWNrZ3JvdW5kKClcIiAvPlxuXHRcdDxuZ3QtZ3JvdW5kLXByb2plY3RlZC1lbnYgKmFyZ3M9XCJncm91bmRBcmdzKClcIiBbc2NhbGVdPVwic2NhbGUoKVwiIFtoZWlnaHRdPVwiaGVpZ2h0KClcIiBbcmFkaXVzXT1cInJhZGl1cygpXCIgLz5cblx0YCxcblx0aW1wb3J0czogW05ndHNFbnZpcm9ubWVudE1hcCwgTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50R3JvdW5kIHtcblx0ZW52aXJvbm1lbnRJbnB1dCA9IGluamVjdChOZ3RzRW52aXJvbm1lbnRJbnB1dCk7XG5cdHByaXZhdGUgZGVmYXVsdFRleHR1cmUgPSBpbmplY3ROZ3RzRW52aXJvbm1lbnQodGhpcy5lbnZpcm9ubWVudElucHV0LnBhcmFtcyk7XG5cblx0dGV4dHVyZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBkZWZhdWx0VGV4dHVyZSA9IHRoaXMuZGVmYXVsdFRleHR1cmUubmF0aXZlRWxlbWVudDtcblx0XHRyZXR1cm4gdGhpcy5lbnZpcm9ubWVudElucHV0Lm1hcCgpIHx8IGRlZmF1bHRUZXh0dXJlO1xuXHR9KTtcblxuXHRncm91bmRBcmdzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMudGV4dHVyZSgpID8gW3RoaXMudGV4dHVyZSgpXSA6IFtdKSk7XG5cdGhlaWdodCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmVudmlyb25tZW50SW5wdXQuZ3JvdW5kKCkgYXMgYW55KT8uaGVpZ2h0KTtcblx0cmFkaXVzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuZW52aXJvbm1lbnRJbnB1dC5ncm91bmQoKSBhcyBhbnkpPy5yYWRpdXMpO1xuXHRzY2FsZSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmVudmlyb25tZW50SW5wdXQuZ3JvdW5kKCkgYXMgYW55KT8uc2NhbGUgPz8gMTAwMCk7XG59XG4iXX0=
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { Directive, ElementRef, Input, computed } from '@angular/core';
|
|
2
|
-
import { signalStore } from 'angular-three';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgtsEnvironmentInput {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.inputs = signalStore({});
|
|
7
|
-
this.frames = this.inputs.select('frames');
|
|
8
|
-
this.near = this.inputs.select('near');
|
|
9
|
-
this.far = this.inputs.select('far');
|
|
10
|
-
this.resolution = this.inputs.select('resolution');
|
|
11
|
-
this.background = this.inputs.select('background');
|
|
12
|
-
this.blur = this.inputs.select('blur');
|
|
13
|
-
this.map = this.inputs.select('map');
|
|
14
|
-
this.files = this.inputs.select('files');
|
|
15
|
-
this.path = this.inputs.select('path');
|
|
16
|
-
this.preset = this.inputs.select('preset');
|
|
17
|
-
this.scene = this.inputs.select('scene');
|
|
18
|
-
this.extensions = this.inputs.select('extensions');
|
|
19
|
-
this.ground = this.inputs.select('ground');
|
|
20
|
-
this.encoding = this.inputs.select('encoding');
|
|
21
|
-
this.params = computed(() => ({
|
|
22
|
-
files: this.files(),
|
|
23
|
-
path: this.path(),
|
|
24
|
-
preset: this.preset(),
|
|
25
|
-
extensions: this.extensions(),
|
|
26
|
-
encoding: this.encoding(),
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
set _frames(frames) {
|
|
30
|
-
this.inputs.set({ frames });
|
|
31
|
-
}
|
|
32
|
-
set _near(near) {
|
|
33
|
-
this.inputs.set({ near });
|
|
34
|
-
}
|
|
35
|
-
set _far(far) {
|
|
36
|
-
this.inputs.set({ far });
|
|
37
|
-
}
|
|
38
|
-
set _resolution(resolution) {
|
|
39
|
-
this.inputs.set({ resolution });
|
|
40
|
-
}
|
|
41
|
-
set _background(background) {
|
|
42
|
-
this.inputs.set({ background });
|
|
43
|
-
}
|
|
44
|
-
set _blur(blur) {
|
|
45
|
-
this.inputs.set({ blur });
|
|
46
|
-
}
|
|
47
|
-
set _map(map) {
|
|
48
|
-
this.inputs.set({ map });
|
|
49
|
-
}
|
|
50
|
-
set _files(files) {
|
|
51
|
-
this.inputs.set({ files });
|
|
52
|
-
}
|
|
53
|
-
set _path(path) {
|
|
54
|
-
this.inputs.set({ path });
|
|
55
|
-
}
|
|
56
|
-
set _preset(preset) {
|
|
57
|
-
this.inputs.set({ preset });
|
|
58
|
-
}
|
|
59
|
-
set _scene(scene) {
|
|
60
|
-
this.inputs.set({ scene });
|
|
61
|
-
}
|
|
62
|
-
set _extensions(extensions) {
|
|
63
|
-
this.inputs.set({ extensions });
|
|
64
|
-
}
|
|
65
|
-
set _ground(ground) {
|
|
66
|
-
this.inputs.set({ ground });
|
|
67
|
-
}
|
|
68
|
-
set _encoding(encoding) {
|
|
69
|
-
this.inputs.set({ encoding });
|
|
70
|
-
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
72
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsEnvironmentInput, inputs: { _frames: ["frames", "_frames"], _near: ["near", "_near"], _far: ["far", "_far"], _resolution: ["resolution", "_resolution"], _background: ["background", "_background"], _blur: ["blur", "_blur"], _map: ["map", "_map"], _files: ["files", "_files"], _path: ["path", "_path"], _preset: ["preset", "_preset"], _scene: ["scene", "_scene"], _extensions: ["extensions", "_extensions"], _ground: ["ground", "_ground"], _encoding: ["encoding", "_encoding"] }, ngImport: i0 }); }
|
|
73
|
-
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentInput, decorators: [{
|
|
75
|
-
type: Directive
|
|
76
|
-
}], propDecorators: { _frames: [{
|
|
77
|
-
type: Input,
|
|
78
|
-
args: [{ alias: 'frames' }]
|
|
79
|
-
}], _near: [{
|
|
80
|
-
type: Input,
|
|
81
|
-
args: [{ alias: 'near' }]
|
|
82
|
-
}], _far: [{
|
|
83
|
-
type: Input,
|
|
84
|
-
args: [{ alias: 'far' }]
|
|
85
|
-
}], _resolution: [{
|
|
86
|
-
type: Input,
|
|
87
|
-
args: [{ alias: 'resolution' }]
|
|
88
|
-
}], _background: [{
|
|
89
|
-
type: Input,
|
|
90
|
-
args: [{ alias: 'background' }]
|
|
91
|
-
}], _blur: [{
|
|
92
|
-
type: Input,
|
|
93
|
-
args: [{ alias: 'blur' }]
|
|
94
|
-
}], _map: [{
|
|
95
|
-
type: Input,
|
|
96
|
-
args: [{ alias: 'map' }]
|
|
97
|
-
}], _files: [{
|
|
98
|
-
type: Input,
|
|
99
|
-
args: [{ alias: 'files' }]
|
|
100
|
-
}], _path: [{
|
|
101
|
-
type: Input,
|
|
102
|
-
args: [{ alias: 'path' }]
|
|
103
|
-
}], _preset: [{
|
|
104
|
-
type: Input,
|
|
105
|
-
args: [{ alias: 'preset' }]
|
|
106
|
-
}], _scene: [{
|
|
107
|
-
type: Input,
|
|
108
|
-
args: [{ alias: 'scene' }]
|
|
109
|
-
}], _extensions: [{
|
|
110
|
-
type: Input,
|
|
111
|
-
args: [{ alias: 'extensions' }]
|
|
112
|
-
}], _ground: [{
|
|
113
|
-
type: Input,
|
|
114
|
-
args: [{ alias: 'ground' }]
|
|
115
|
-
}], _encoding: [{
|
|
116
|
-
type: Input,
|
|
117
|
-
args: [{ alias: 'encoding' }]
|
|
118
|
-
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXNCNUMsTUFBTSxPQUFnQixvQkFBb0I7SUFEMUM7UUFFQyxXQUFNLEdBQUcsV0FBVyxDQUE0QixFQUFFLENBQUMsQ0FBQztRQTBEcEQsV0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxRQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLGVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsUUFBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENB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LEVBQUU7Z0JBSVEsU0FBUztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2lnbmFsU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB0eXBlIHsgTG9hZGVyLCBTY2VuZSwgVGV4dHVyZSwgVGV4dHVyZUVuY29kaW5nIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB9IGZyb20gJy4vYXNzZXRzJztcblxuZXhwb3J0IHR5cGUgTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZSA9IHtcblx0ZnJhbWVzPzogbnVtYmVyO1xuXHRuZWFyPzogbnVtYmVyO1xuXHRmYXI/OiBudW1iZXI7XG5cdHJlc29sdXRpb24/OiBudW1iZXI7XG5cdGJhY2tncm91bmQ/OiBib29sZWFuIHwgJ29ubHknO1xuXHRibHVyPzogbnVtYmVyO1xuXHRtYXA/OiBUZXh0dXJlO1xuXHRmaWxlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuXHRwYXRoPzogc3RyaW5nO1xuXHRwcmVzZXQ/OiBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZTtcblx0c2NlbmU/OiBTY2VuZSB8IEVsZW1lbnRSZWY8U2NlbmU+O1xuXHRleHRlbnNpb25zPzogKGxvYWRlcjogTG9hZGVyKSA9PiB2b2lkO1xuXHRncm91bmQ/OiBib29sZWFuIHwgeyByYWRpdXM/OiBudW1iZXI7IGhlaWdodD86IG51bWJlcjsgc2NhbGU/OiBudW1iZXIgfTtcblx0ZW5jb2Rpbmc/OiBUZXh0dXJlRW5jb2Rpbmc7XG59O1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RzRW52aXJvbm1lbnRJbnB1dCB7XG5cdGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGU+KHt9KTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2ZyYW1lcycgfSkgc2V0IF9mcmFtZXMoZnJhbWVzOiBOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlWydmcmFtZXMnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZyYW1lcyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbmVhcicgfSkgc2V0IF9uZWFyKG5lYXI6IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ25lYXInXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG5lYXIgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZhcicgfSkgc2V0IF9mYXIoZmFyOiBOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlWydmYXInXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZhciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmVzb2x1dGlvbicgfSkgc2V0IF9yZXNvbHV0aW9uKHJlc29sdXRpb246IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ3Jlc29sdXRpb24nXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJlc29sdXRpb24gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2JhY2tncm91bmQnIH0pIHNldCBfYmFja2dyb3VuZChiYWNrZ3JvdW5kOiBOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlWydiYWNrZ3JvdW5kJ10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBiYWNrZ3JvdW5kIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdibHVyJyB9KSBzZXQgX2JsdXIoYmx1cjogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnYmx1ciddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgYmx1ciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbWFwJyB9KSBzZXQgX21hcChtYXA6IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ21hcCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbWFwIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmaWxlcycgfSkgc2V0IF9maWxlcyhmaWxlczogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnZmlsZXMnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZpbGVzIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdwYXRoJyB9KSBzZXQgX3BhdGgocGF0aDogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsncGF0aCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcGF0aCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncHJlc2V0JyB9KSBzZXQgX3ByZXNldChwcmVzZXQ6IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ3ByZXNldCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcHJlc2V0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzY2VuZScgfSkgc2V0IF9zY2VuZShzY2VuZTogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnc2NlbmUnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNjZW5lIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdleHRlbnNpb25zJyB9KSBzZXQgX2V4dGVuc2lvbnMoZXh0ZW5zaW9uczogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnZXh0ZW5zaW9ucyddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZXh0ZW5zaW9ucyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZ3JvdW5kJyB9KSBzZXQgX2dyb3VuZChncm91bmQ6IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ2dyb3VuZCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZ3JvdW5kIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdlbmNvZGluZycgfSkgc2V0IF9lbmNvZGluZyhlbmNvZGluZzogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnZW5jb2RpbmcnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGVuY29kaW5nIH0pO1xuXHR9XG5cblx0ZnJhbWVzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmcmFtZXMnKTtcblx0bmVhciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnbmVhcicpO1xuXHRmYXIgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZhcicpO1xuXHRyZXNvbHV0aW9uID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyZXNvbHV0aW9uJyk7XG5cdGJhY2tncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2JhY2tncm91bmQnKTtcblx0Ymx1ciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYmx1cicpO1xuXHRtYXAgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ21hcCcpO1xuXHRmaWxlcyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZmlsZXMnKTtcblx0cGF0aCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncGF0aCcpO1xuXHRwcmVzZXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3ByZXNldCcpO1xuXHRzY2VuZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc2NlbmUnKTtcblx0ZXh0ZW5zaW9ucyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZXh0ZW5zaW9ucycpO1xuXHRncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2dyb3VuZCcpO1xuXHRlbmNvZGluZyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZW5jb2RpbmcnKTtcblxuXHRwYXJhbXMgPSBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdGZpbGVzOiB0aGlzLmZpbGVzKCksXG5cdFx0cGF0aDogdGhpcy5wYXRoKCksXG5cdFx0cHJlc2V0OiB0aGlzLnByZXNldCgpLFxuXHRcdGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucygpLFxuXHRcdGVuY29kaW5nOiB0aGlzLmVuY29kaW5nKCksXG5cdH0pKTtcbn1cbiJdfQ==
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, effect, inject } from '@angular/core';
|
|
2
|
-
import { injectNgtStore, signalStore } from 'angular-three';
|
|
3
|
-
import { NgtsEnvironmentInput } from './environment-input';
|
|
4
|
-
import { setEnvProps } from './utils';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class NgtsEnvironmentMap {
|
|
7
|
-
set _map(map) {
|
|
8
|
-
this.inputs.set({ map });
|
|
9
|
-
}
|
|
10
|
-
set _background(background) {
|
|
11
|
-
this.inputs.set({ background });
|
|
12
|
-
}
|
|
13
|
-
constructor() {
|
|
14
|
-
this.environmentInput = inject(NgtsEnvironmentInput);
|
|
15
|
-
this.store = injectNgtStore();
|
|
16
|
-
this.inputs = signalStore({ background: false });
|
|
17
|
-
this.scene = this.store.select('scene');
|
|
18
|
-
this.background = this.inputs.select('background');
|
|
19
|
-
this.map = this.inputs.select('map');
|
|
20
|
-
this.setEnvProps();
|
|
21
|
-
}
|
|
22
|
-
setEnvProps() {
|
|
23
|
-
effect((onCleanup) => {
|
|
24
|
-
const [defaultScene, scene, background, blur, texture] = [
|
|
25
|
-
this.scene(),
|
|
26
|
-
this.environmentInput.scene(),
|
|
27
|
-
this.background(),
|
|
28
|
-
this.environmentInput.blur(),
|
|
29
|
-
this.map(),
|
|
30
|
-
];
|
|
31
|
-
if (!texture)
|
|
32
|
-
return;
|
|
33
|
-
const cleanUp = setEnvProps(background, scene, defaultScene, texture, blur);
|
|
34
|
-
onCleanup(cleanUp);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentMap, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
38
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", inputs: { _map: ["map", "_map"], _background: ["background", "_background"] }, ngImport: i0 }); }
|
|
39
|
-
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentMap, decorators: [{
|
|
41
|
-
type: Directive,
|
|
42
|
-
args: [{
|
|
43
|
-
selector: 'ngts-environment-map',
|
|
44
|
-
standalone: true,
|
|
45
|
-
}]
|
|
46
|
-
}], ctorParameters: function () { return []; }, propDecorators: { _map: [{
|
|
47
|
-
type: Input,
|
|
48
|
-
args: [{ alias: 'map' }]
|
|
49
|
-
}], _background: [{
|
|
50
|
-
type: Input,
|
|
51
|
-
args: [{ alias: 'background' }]
|
|
52
|
-
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2Vudmlyb25tZW50L2Vudmlyb25tZW50LW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBa0MsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQU10QyxNQUFNLE9BQU8sa0JBQWtCO0lBTTlCLElBQTZCLElBQUksQ0FBQyxHQUFrQjtRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQW9DLFdBQVcsQ0FBQyxVQUFtQjtRQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEO1FBYkEscUJBQWdCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsVUFBSyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRXpCLFdBQU0sR0FBRyxXQUFXLENBQXdELEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFjbkcsVUFBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLGVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxRQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFMdkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFNTyxXQUFXO1FBQ2xCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ3hELElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDNUIsSUFBSSxDQUFDLEdBQUcsRUFBRTthQUNWLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FuQ1csa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzBFQU82QixJQUFJO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFJYSxXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RTdG9yZSwgc2lnbmFsU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudElucHV0LCB0eXBlIE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGUgfSBmcm9tICcuL2Vudmlyb25tZW50LWlucHV0JztcbmltcG9ydCB7IHNldEVudlByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25ndHMtZW52aXJvbm1lbnQtbWFwJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50TWFwIHtcblx0ZW52aXJvbm1lbnRJbnB1dCA9IGluamVjdChOZ3RzRW52aXJvbm1lbnRJbnB1dCk7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8UGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlLCAnbWFwJyB8ICdiYWNrZ3JvdW5kJz4+KHsgYmFja2dyb3VuZDogZmFsc2UgfSk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdtYXAnIH0pIHNldCBfbWFwKG1hcDogVEhSRUUuVGV4dHVyZSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG1hcCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYmFja2dyb3VuZCcgfSkgc2V0IF9iYWNrZ3JvdW5kKGJhY2tncm91bmQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBiYWNrZ3JvdW5kIH0pO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5zZXRFbnZQcm9wcygpO1xuXHR9XG5cblx0cHJpdmF0ZSBzY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRwcml2YXRlIGJhY2tncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2JhY2tncm91bmQnKTtcblx0cHJpdmF0ZSBtYXAgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ21hcCcpO1xuXG5cdHByaXZhdGUgc2V0RW52UHJvcHMoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtkZWZhdWx0U2NlbmUsIHNjZW5lLCBiYWNrZ3JvdW5kLCBibHVyLCB0ZXh0dXJlXSA9IFtcblx0XHRcdFx0dGhpcy5zY2VuZSgpLFxuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50SW5wdXQuc2NlbmUoKSxcblx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kKCksXG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbnB1dC5ibHVyKCksXG5cdFx0XHRcdHRoaXMubWFwKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKCF0ZXh0dXJlKSByZXR1cm47XG5cdFx0XHRjb25zdCBjbGVhblVwID0gc2V0RW52UHJvcHMoYmFja2dyb3VuZCEsIHNjZW5lLCBkZWZhdWx0U2NlbmUsIHRleHR1cmUsIGJsdXIpO1xuXHRcdFx0b25DbGVhbnVwKGNsZWFuVXApO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|