angular-three-soba 2.13.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/lib/catmull-rom-line.d.ts +247 -247
- package/abstractions/lib/edges.d.ts +276 -276
- package/abstractions/lib/grid.d.ts +45 -45
- package/abstractions/lib/line.d.ts +1 -1
- package/abstractions/lib/prism-geometry.d.ts +4 -4
- package/abstractions/lib/rounded-box.d.ts +1 -1
- package/abstractions/lib/text-3d.d.ts +51 -51
- package/abstractions/lib/text.d.ts +1 -1
- package/cameras/lib/cube-camera.d.ts +1 -1
- package/cameras/lib/orthographic-camera.d.ts +1 -1
- package/cameras/lib/perspective-camera.d.ts +1 -1
- package/controls/index.d.ts +0 -9
- package/fesm2022/angular-three-soba-abstractions.mjs +41 -52
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +12 -15
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +16 -30
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +59 -60
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +3 -3
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +27 -35
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +27 -29
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +31 -34
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +91 -105
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +3 -3
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
- package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
- package/materials/lib/mesh-portal-material.d.ts +1 -1
- package/materials/lib/mesh-refraction-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +3 -3
- package/misc/lib/decal.d.ts +1 -1
- package/misc/lib/html/html.d.ts +2 -2
- package/package.json +8 -34
- package/performances/lib/instances/instances.d.ts +7 -7
- package/performances/lib/points/points.d.ts +16 -16
- package/performances/lib/segments/segments.d.ts +1 -1
- package/staging/lib/accumulative-shadows.d.ts +1 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/mask.d.ts +1 -1
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +1 -1
- package/staging/lib/stage.d.ts +5 -5
- package/esm2022/abstractions/angular-three-soba-abstractions.mjs +0 -5
- package/esm2022/abstractions/index.mjs +0 -14
- package/esm2022/abstractions/lib/billboard.mjs +0 -69
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +0 -76
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +0 -51
- package/esm2022/abstractions/lib/edges.mjs +0 -66
- package/esm2022/abstractions/lib/gradient-texture.mjs +0 -91
- package/esm2022/abstractions/lib/grid.mjs +0 -103
- package/esm2022/abstractions/lib/helper.mjs +0 -74
- package/esm2022/abstractions/lib/line.mjs +0 -123
- package/esm2022/abstractions/lib/prism-geometry.mjs +0 -46
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +0 -73
- package/esm2022/abstractions/lib/rounded-box.mjs +0 -131
- package/esm2022/abstractions/lib/text-3d.mjs +0 -100
- package/esm2022/abstractions/lib/text.mjs +0 -86
- package/esm2022/angular-three-soba.mjs +0 -5
- package/esm2022/cameras/angular-three-soba-cameras.mjs +0 -5
- package/esm2022/cameras/index.mjs +0 -5
- package/esm2022/cameras/lib/camera-content.mjs +0 -14
- package/esm2022/cameras/lib/cube-camera.mjs +0 -102
- package/esm2022/cameras/lib/orthographic-camera.mjs +0 -131
- package/esm2022/cameras/lib/perspective-camera.mjs +0 -105
- package/esm2022/controls/angular-three-soba-controls.mjs +0 -5
- package/esm2022/controls/index.mjs +0 -9
- package/esm2022/controls/lib/camera-controls.mjs +0 -126
- package/esm2022/controls/lib/orbit-controls.mjs +0 -120
- package/esm2022/controls/lib/scroll-controls.mjs +0 -261
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
- package/esm2022/gizmos/index.mjs +0 -6
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +0 -191
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +0 -304
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +0 -348
- package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +0 -265
- package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +0 -264
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +0 -349
- package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +0 -266
- package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +0 -232
- package/esm2022/gizmos/lib/transform-controls.mjs +0 -177
- package/esm2022/index.mjs +0 -2
- package/esm2022/loaders/angular-three-soba-loaders.mjs +0 -5
- package/esm2022/loaders/index.mjs +0 -7
- package/esm2022/loaders/lib/fbx-loader.mjs +0 -13
- package/esm2022/loaders/lib/font-loader.mjs +0 -49
- package/esm2022/loaders/lib/gltf-loader.mjs +0 -51
- package/esm2022/loaders/lib/loader.mjs +0 -103
- package/esm2022/loaders/lib/progress.mjs +0 -51
- package/esm2022/loaders/lib/texture-loader.mjs +0 -32
- package/esm2022/materials/angular-three-soba-materials.mjs +0 -5
- package/esm2022/materials/index.mjs +0 -9
- package/esm2022/materials/lib/custom-shader-material.mjs +0 -67
- package/esm2022/materials/lib/mesh-distort-material.mjs +0 -43
- package/esm2022/materials/lib/mesh-portal-material.mjs +0 -294
- package/esm2022/materials/lib/mesh-reflector-material.mjs +0 -274
- package/esm2022/materials/lib/mesh-refraction-material.mjs +0 -140
- package/esm2022/materials/lib/mesh-transmission-material.mjs +0 -188
- package/esm2022/materials/lib/mesh-wobble-material.mjs +0 -43
- package/esm2022/materials/lib/point-material.mjs +0 -34
- package/esm2022/misc/angular-three-soba-misc.mjs +0 -5
- package/esm2022/misc/index.mjs +0 -15
- package/esm2022/misc/lib/animations.mjs +0 -71
- package/esm2022/misc/lib/bake-shadows.mjs +0 -24
- package/esm2022/misc/lib/computed-attribute.mjs +0 -51
- package/esm2022/misc/lib/constants.mjs +0 -5
- package/esm2022/misc/lib/decal.mjs +0 -142
- package/esm2022/misc/lib/deprecated.mjs +0 -15
- package/esm2022/misc/lib/depth-buffer.mjs +0 -35
- package/esm2022/misc/lib/fbo.mjs +0 -86
- package/esm2022/misc/lib/html/html-content.mjs +0 -322
- package/esm2022/misc/lib/html/html.mjs +0 -129
- package/esm2022/misc/lib/html/utils.mjs +0 -74
- package/esm2022/misc/lib/intersect.mjs +0 -49
- package/esm2022/misc/lib/preload.mjs +0 -58
- package/esm2022/misc/lib/sampler.mjs +0 -122
- package/esm2022/misc/lib/scale-factor.mjs +0 -29
- package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
- package/esm2022/performances/index.mjs +0 -7
- package/esm2022/performances/lib/adaptive-dpr.mjs +0 -46
- package/esm2022/performances/lib/adaptive-events.mjs +0 -24
- package/esm2022/performances/lib/detailed.mjs +0 -53
- package/esm2022/performances/lib/instances/instances.mjs +0 -177
- package/esm2022/performances/lib/instances/position-mesh.mjs +0 -51
- package/esm2022/performances/lib/points/points.mjs +0 -272
- package/esm2022/performances/lib/points/position-point.mjs +0 -53
- package/esm2022/performances/lib/segments/segment-object.mjs +0 -9
- package/esm2022/performances/lib/segments/segments.mjs +0 -126
- package/esm2022/shaders/angular-three-soba-shaders.mjs +0 -5
- package/esm2022/shaders/index.mjs +0 -4
- package/esm2022/shaders/lib/grid-material.mjs +0 -81
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +0 -163
- package/esm2022/shaders/lib/point-material.mjs +0 -24
- package/esm2022/staging/angular-three-soba-staging.mjs +0 -5
- package/esm2022/staging/index.mjs +0 -21
- package/esm2022/staging/lib/accumulative-shadows.mjs +0 -180
- package/esm2022/staging/lib/backdrop.mjs +0 -69
- package/esm2022/staging/lib/bb-anchor.mjs +0 -58
- package/esm2022/staging/lib/bounds.mjs +0 -282
- package/esm2022/staging/lib/camera-shake.mjs +0 -65
- package/esm2022/staging/lib/caustics.mjs +0 -184
- package/esm2022/staging/lib/center.mjs +0 -114
- package/esm2022/staging/lib/contact-shadows.mjs +0 -214
- package/esm2022/staging/lib/environment/environment.mjs +0 -344
- package/esm2022/staging/lib/environment/inject-environment.mjs +0 -184
- package/esm2022/staging/lib/float.mjs +0 -70
- package/esm2022/staging/lib/lightformer.mjs +0 -103
- package/esm2022/staging/lib/mask.mjs +0 -74
- package/esm2022/staging/lib/matcap-texture.mjs +0 -79
- package/esm2022/staging/lib/normal-texture.mjs +0 -79
- package/esm2022/staging/lib/randomized-lights.mjs +0 -100
- package/esm2022/staging/lib/render-texture.mjs +0 -202
- package/esm2022/staging/lib/sky.mjs +0 -86
- package/esm2022/staging/lib/spot-light.mjs +0 -445
- package/esm2022/staging/lib/stage.mjs +0 -232
- package/esm2022/stats/angular-three-soba-stats.mjs +0 -5
- package/esm2022/stats/index.mjs +0 -2
- package/esm2022/stats/lib/stats.mjs +0 -57
- package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +0 -5
- package/esm2022/vanilla-exports/index.mjs +0 -3
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
|
|
2
|
-
import { applyProps, extend, getLocalState, omit, pick, resolveRef } from 'angular-three';
|
|
3
|
-
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
4
|
-
import { AxesHelper, BoxGeometry, Euler, Mesh, MeshNormalMaterial, Object3D, Vector3 } from 'three';
|
|
5
|
-
import { DecalGeometry } from 'three-stdlib';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
const defaultOptions = {
|
|
8
|
-
polygonOffsetFactor: -10,
|
|
9
|
-
debug: false,
|
|
10
|
-
depthTest: false,
|
|
11
|
-
};
|
|
12
|
-
export class NgtsDecal {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.mesh = input();
|
|
15
|
-
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
16
|
-
this.parameters = omit(this.options, [
|
|
17
|
-
'debug',
|
|
18
|
-
'map',
|
|
19
|
-
'depthTest',
|
|
20
|
-
'polygonOffsetFactor',
|
|
21
|
-
'position',
|
|
22
|
-
'scale',
|
|
23
|
-
'rotation',
|
|
24
|
-
]);
|
|
25
|
-
this.meshRef = viewChild.required('mesh');
|
|
26
|
-
this.helperRef = viewChild('helper');
|
|
27
|
-
this.map = pick(this.options, 'map');
|
|
28
|
-
this.depthTest = pick(this.options, 'depthTest');
|
|
29
|
-
this.polygonOffsetFactor = pick(this.options, 'polygonOffsetFactor');
|
|
30
|
-
this.debug = pick(this.options, 'debug');
|
|
31
|
-
this.position = pick(this.options, 'position');
|
|
32
|
-
this.rotation = pick(this.options, 'rotation');
|
|
33
|
-
this.scale = pick(this.options, 'scale');
|
|
34
|
-
extend({ Mesh, BoxGeometry, MeshNormalMaterial, AxesHelper });
|
|
35
|
-
effect((onCleanup) => {
|
|
36
|
-
const thisMesh = this.meshRef().nativeElement;
|
|
37
|
-
const localState = getLocalState(thisMesh);
|
|
38
|
-
if (!localState)
|
|
39
|
-
return;
|
|
40
|
-
const parent = resolveRef(this.mesh()) || localState.parent();
|
|
41
|
-
if (parent && !parent.isMesh) {
|
|
42
|
-
throw new Error('<ngts-decal> must have a Mesh as parent or specify its "mesh" input');
|
|
43
|
-
}
|
|
44
|
-
if (!parent)
|
|
45
|
-
return;
|
|
46
|
-
const parentLocalState = getLocalState(parent);
|
|
47
|
-
if (!parentLocalState)
|
|
48
|
-
return;
|
|
49
|
-
// track parent's children
|
|
50
|
-
const parentNonObjects = parentLocalState.nonObjects();
|
|
51
|
-
if (!parentNonObjects || !parentNonObjects.length) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
// if parent geometry doesn't have its attributes populated properly, we skip
|
|
55
|
-
if (!parent.geometry?.attributes?.['position']) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const [position, rotation, scale] = [this.position(), this.rotation(), this.scale()];
|
|
59
|
-
const state = { position: new Vector3(), rotation: new Euler(), scale: new Vector3(1, 1, 1) };
|
|
60
|
-
applyProps(state, { position, scale });
|
|
61
|
-
// zero out the parents matrix world for this operation
|
|
62
|
-
const matrixWorld = parent.matrixWorld.clone();
|
|
63
|
-
parent.matrixWorld.identity();
|
|
64
|
-
if (!rotation || typeof rotation === 'number') {
|
|
65
|
-
const o = new Object3D();
|
|
66
|
-
o.position.copy(state.position);
|
|
67
|
-
o.lookAt(parent.position);
|
|
68
|
-
if (typeof rotation === 'number')
|
|
69
|
-
o.rotateZ(rotation);
|
|
70
|
-
applyProps(state, { rotation: o.rotation });
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
applyProps(state, { rotation });
|
|
74
|
-
}
|
|
75
|
-
thisMesh.geometry = new DecalGeometry(parent, state.position, state.rotation, state.scale);
|
|
76
|
-
const helper = this.helperRef()?.nativeElement;
|
|
77
|
-
if (helper) {
|
|
78
|
-
applyProps(helper, state);
|
|
79
|
-
// Prevent the helpers from blocking rays
|
|
80
|
-
helper.traverse((child) => (child.raycast = () => null));
|
|
81
|
-
}
|
|
82
|
-
// Reset parents matrix-world
|
|
83
|
-
parent.matrixWorld = matrixWorld;
|
|
84
|
-
onCleanup(() => {
|
|
85
|
-
thisMesh.geometry.dispose();
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsDecal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: NgtsDecal, isStandalone: true, selector: "ngts-decal", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }, { propertyName: "helperRef", first: true, predicate: ["helper"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
91
|
-
<ngt-mesh #mesh [parameters]="parameters()">
|
|
92
|
-
<ngt-value [rawValue]="true" attach="material.transparent" />
|
|
93
|
-
<ngt-value [rawValue]="true" attach="material.polygonOffset" />
|
|
94
|
-
<ngt-value [rawValue]="map()" attach="material.map" />
|
|
95
|
-
|
|
96
|
-
<ng-content>
|
|
97
|
-
<!-- we only want to pass through these material properties if they don't use a custom material -->
|
|
98
|
-
<ngt-value [rawValue]="polygonOffsetFactor()" attach="material.polygonOffsetFactor" />
|
|
99
|
-
<ngt-value [rawValue]="depthTest()" attach="material.depthTest" />
|
|
100
|
-
</ng-content>
|
|
101
|
-
|
|
102
|
-
@if (debug()) {
|
|
103
|
-
<ngt-mesh #helper>
|
|
104
|
-
<ngt-box-geometry />
|
|
105
|
-
<ngt-mesh-normal-material [wireframe]="true" />
|
|
106
|
-
<ngt-axes-helper />
|
|
107
|
-
</ngt-mesh>
|
|
108
|
-
}
|
|
109
|
-
</ngt-mesh>
|
|
110
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
111
|
-
}
|
|
112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsDecal, decorators: [{
|
|
113
|
-
type: Component,
|
|
114
|
-
args: [{
|
|
115
|
-
selector: 'ngts-decal',
|
|
116
|
-
standalone: true,
|
|
117
|
-
template: `
|
|
118
|
-
<ngt-mesh #mesh [parameters]="parameters()">
|
|
119
|
-
<ngt-value [rawValue]="true" attach="material.transparent" />
|
|
120
|
-
<ngt-value [rawValue]="true" attach="material.polygonOffset" />
|
|
121
|
-
<ngt-value [rawValue]="map()" attach="material.map" />
|
|
122
|
-
|
|
123
|
-
<ng-content>
|
|
124
|
-
<!-- we only want to pass through these material properties if they don't use a custom material -->
|
|
125
|
-
<ngt-value [rawValue]="polygonOffsetFactor()" attach="material.polygonOffsetFactor" />
|
|
126
|
-
<ngt-value [rawValue]="depthTest()" attach="material.depthTest" />
|
|
127
|
-
</ng-content>
|
|
128
|
-
|
|
129
|
-
@if (debug()) {
|
|
130
|
-
<ngt-mesh #helper>
|
|
131
|
-
<ngt-box-geometry />
|
|
132
|
-
<ngt-mesh-normal-material [wireframe]="true" />
|
|
133
|
-
<ngt-axes-helper />
|
|
134
|
-
</ngt-mesh>
|
|
135
|
-
}
|
|
136
|
-
</ngt-mesh>
|
|
137
|
-
`,
|
|
138
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
139
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
140
|
-
}]
|
|
141
|
-
}], ctorParameters: () => [] });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvbGliL2RlY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHNCQUFzQixFQUN0QixNQUFNLEVBRU4sS0FBSyxFQUNMLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQVcsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFXLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVM3QyxNQUFNLGNBQWMsR0FBcUI7SUFDeEMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEtBQUssRUFBRSxLQUFLO0lBQ1osU0FBUyxFQUFFLEtBQUs7Q0FDaEIsQ0FBQztBQTZCRixNQUFNLE9BQU8sU0FBUztJQXdCckI7UUF2QkEsU0FBSSxHQUFHLEtBQUssRUFBa0MsQ0FBQztRQUMvQyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixPQUFPO1lBQ1AsS0FBSztZQUNMLFdBQVc7WUFDWCxxQkFBcUI7WUFDckIsVUFBVTtZQUNWLE9BQU87WUFDUCxVQUFVO1NBQ1YsQ0FBQyxDQUFDO1FBRUgsWUFB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QztZQUM3QixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzsrR0F4RlcsU0FBUzttR0FBVCxTQUFTLDRoQkF4Qlg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JUOzs0RkFJVyxTQUFTO2tCQTNCckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhcHBseVByb3BzLCBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndE1lc2gsIG9taXQsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEF4ZXNIZWxwZXIsIEJveEdlb21ldHJ5LCBFdWxlciwgTWVzaCwgTWVzaE5vcm1hbE1hdGVyaWFsLCBPYmplY3QzRCwgVGV4dHVyZSwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IERlY2FsR2VvbWV0cnkgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNEZWNhbE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndE1lc2g+IHtcblx0cG9seWdvbk9mZnNldEZhY3RvcjogbnVtYmVyO1xuXHRkZXB0aFRlc3Q6IGJvb2xlYW47XG5cdGRlYnVnOiBib29sZWFuO1xuXHRtYXA/OiBUZXh0dXJlIHwgbnVsbDtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNEZWNhbE9wdGlvbnMgPSB7XG5cdHBvbHlnb25PZmZzZXRGYWN0b3I6IC0xMCxcblx0ZGVidWc6IGZhbHNlLFxuXHRkZXB0aFRlc3Q6IGZhbHNlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1kZWNhbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoICNtZXNoIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwidHJ1ZVwiIGF0dGFjaD1cIm1hdGVyaWFsLnRyYW5zcGFyZW50XCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInRydWVcIiBhdHRhY2g9XCJtYXRlcmlhbC5wb2x5Z29uT2Zmc2V0XCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cIm1hcCgpXCIgYXR0YWNoPVwibWF0ZXJpYWwubWFwXCIgLz5cblxuXHRcdFx0PG5nLWNvbnRlbnQ+XG5cdFx0XHRcdDwhLS0gd2Ugb25seSB3YW50IHRvIHBhc3MgdGhyb3VnaCB0aGVzZSBtYXRlcmlhbCBwcm9wZXJ0aWVzIGlmIHRoZXkgZG9uJ3QgdXNlIGEgY3VzdG9tIG1hdGVyaWFsIC0tPlxuXHRcdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJwb2x5Z29uT2Zmc2V0RmFjdG9yKClcIiBhdHRhY2g9XCJtYXRlcmlhbC5wb2x5Z29uT2Zmc2V0RmFjdG9yXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZGVwdGhUZXN0KClcIiBhdHRhY2g9XCJtYXRlcmlhbC5kZXB0aFRlc3RcIiAvPlxuXHRcdFx0PC9uZy1jb250ZW50PlxuXG5cdFx0XHRAaWYgKGRlYnVnKCkpIHtcblx0XHRcdFx0PG5ndC1tZXNoICNoZWxwZXI+XG5cdFx0XHRcdFx0PG5ndC1ib3gtZ2VvbWV0cnkgLz5cblx0XHRcdFx0XHQ8bmd0LW1lc2gtbm9ybWFsLW1hdGVyaWFsIFt3aXJlZnJhbWVdPVwidHJ1ZVwiIC8+XG5cdFx0XHRcdFx0PG5ndC1heGVzLWhlbHBlciAvPlxuXHRcdFx0XHQ8L25ndC1tZXNoPlxuXHRcdFx0fVxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNEZWNhbCB7XG5cdG1lc2ggPSBpbnB1dDxFbGVtZW50UmVmPE1lc2g+IHwgTWVzaCB8IG51bGw+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J2RlYnVnJyxcblx0XHQnbWFwJyxcblx0XHQnZGVwdGhUZXN0Jyxcblx0XHQncG9seWdvbk9mZnNldEZhY3RvcicsXG5cdFx0J3Bvc2l0aW9uJyxcblx0XHQnc2NhbGUnLFxuXHRcdCdyb3RhdGlvbicsXG5cdF0pO1xuXG5cdG1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxNZXNoPj4oJ21lc2gnKTtcblx0aGVscGVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8TWVzaD4+KCdoZWxwZXInKTtcblxuXHRwcm90ZWN0ZWQgbWFwID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXAnKTtcblx0cHJvdGVjdGVkIGRlcHRoVGVzdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVwdGhUZXN0Jyk7XG5cdHByb3RlY3RlZCBwb2x5Z29uT2Zmc2V0RmFjdG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdwb2x5Z29uT2Zmc2V0RmFjdG9yJyk7XG5cdHByb3RlY3RlZCBkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0cHJpdmF0ZSBwb3NpdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncG9zaXRpb24nKTtcblx0cHJpdmF0ZSByb3RhdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncm90YXRpb24nKTtcblx0cHJpdmF0ZSBzY2FsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoLCBCb3hHZW9tZXRyeSwgTWVzaE5vcm1hbE1hdGVyaWFsLCBBeGVzSGVscGVyIH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IHRoaXNNZXNoID0gdGhpcy5tZXNoUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKHRoaXNNZXNoKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBwYXJlbnQgPSByZXNvbHZlUmVmKHRoaXMubWVzaCgpKSB8fCBsb2NhbFN0YXRlLnBhcmVudCgpO1xuXG5cdFx0XHRpZiAocGFyZW50ICYmICEocGFyZW50IGFzIE1lc2gpLmlzTWVzaCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJzxuZ3RzLWRlY2FsPiBtdXN0IGhhdmUgYSBNZXNoIGFzIHBhcmVudCBvciBzcGVjaWZ5IGl0cyBcIm1lc2hcIiBpbnB1dCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBwYXJlbnRMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShwYXJlbnQpO1xuXHRcdFx0aWYgKCFwYXJlbnRMb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdC8vIHRyYWNrIHBhcmVudCdzIGNoaWxkcmVuXG5cdFx0XHRjb25zdCBwYXJlbnROb25PYmplY3RzID0gcGFyZW50TG9jYWxTdGF0ZS5ub25PYmplY3RzKCk7XG5cdFx0XHRpZiAoIXBhcmVudE5vbk9iamVjdHMgfHwgIXBhcmVudE5vbk9iamVjdHMubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gaWYgcGFyZW50IGdlb21ldHJ5IGRvZXNuJ3QgaGF2ZSBpdHMgYXR0cmlidXRlcyBwb3B1bGF0ZWQgcHJvcGVybHksIHdlIHNraXBcblx0XHRcdGlmICghcGFyZW50Lmdlb21ldHJ5Py5hdHRyaWJ1dGVzPy5bJ3Bvc2l0aW9uJ10pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBbcG9zaXRpb24sIHJvdGF0aW9uLCBzY2FsZV0gPSBbdGhpcy5wb3NpdGlvbigpLCB0aGlzLnJvdGF0aW9uKCksIHRoaXMuc2NhbGUoKV07XG5cdFx0XHRjb25zdCBzdGF0ZSA9IHsgcG9zaXRpb246IG5ldyBWZWN0b3IzKCksIHJvdGF0aW9uOiBuZXcgRXVsZXIoKSwgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpIH07XG5cblx0XHRcdGFwcGx5UHJvcHMoc3RhdGUsIHsgcG9zaXRpb24sIHNjYWxlIH0pO1xuXG5cdFx0XHQvLyB6ZXJvIG91dCB0aGUgcGFyZW50cyBtYXRyaXggd29ybGQgZm9yIHRoaXMgb3BlcmF0aW9uXG5cdFx0XHRjb25zdCBtYXRyaXhXb3JsZCA9IHBhcmVudC5tYXRyaXhXb3JsZC5jbG9uZSgpO1xuXHRcdFx0cGFyZW50Lm1hdHJpeFdvcmxkLmlkZW50aXR5KCk7XG5cblx0XHRcdGlmICghcm90YXRpb24gfHwgdHlwZW9mIHJvdGF0aW9uID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjb25zdCBvID0gbmV3IE9iamVjdDNEKCk7XG5cdFx0XHRcdG8ucG9zaXRpb24uY29weShzdGF0ZS5wb3NpdGlvbik7XG5cdFx0XHRcdG8ubG9va0F0KHBhcmVudC5wb3NpdGlvbik7XG5cdFx0XHRcdGlmICh0eXBlb2Ygcm90YXRpb24gPT09ICdudW1iZXInKSBvLnJvdGF0ZVoocm90YXRpb24pO1xuXHRcdFx0XHRhcHBseVByb3BzKHN0YXRlLCB7IHJvdGF0aW9uOiBvLnJvdGF0aW9uIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YXBwbHlQcm9wcyhzdGF0ZSwgeyByb3RhdGlvbiB9KTtcblx0XHRcdH1cblxuXHRcdFx0dGhpc01lc2guZ2VvbWV0cnkgPSBuZXcgRGVjYWxHZW9tZXRyeShwYXJlbnQsIHN0YXRlLnBvc2l0aW9uLCBzdGF0ZS5yb3RhdGlvbiwgc3RhdGUuc2NhbGUpO1xuXHRcdFx0Y29uc3QgaGVscGVyID0gdGhpcy5oZWxwZXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmIChoZWxwZXIpIHtcblx0XHRcdFx0YXBwbHlQcm9wcyhoZWxwZXIsIHN0YXRlKTtcblx0XHRcdFx0Ly8gUHJldmVudCB0aGUgaGVscGVycyBmcm9tIGJsb2NraW5nIHJheXNcblx0XHRcdFx0aGVscGVyLnRyYXZlcnNlKChjaGlsZCkgPT4gKGNoaWxkLnJheWNhc3QgPSAoKSA9PiBudWxsKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlc2V0IHBhcmVudHMgbWF0cml4LXdvcmxkXG5cdFx0XHRwYXJlbnQubWF0cml4V29ybGQgPSBtYXRyaXhXb3JsZDtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0dGhpc01lc2guZ2VvbWV0cnkuZGlzcG9zZSgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NOTE: Sets `BufferAttribute.updateRange` since r159.
|
|
3
|
-
*/
|
|
4
|
-
export const setUpdateRange = (attribute, updateRange) => {
|
|
5
|
-
if ('updateRanges' in attribute) {
|
|
6
|
-
// attribute.updateRanges[0] = updateRange;
|
|
7
|
-
attribute.addUpdateRange(updateRange.offset, updateRange.count);
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
Object.assign(attribute, { updateRange });
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
export const LinearEncoding = 3000;
|
|
14
|
-
export const sRGBEncoding = 3001;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9saWIvZGVwcmVjYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQTBCLEVBQUUsV0FBOEMsRUFBUSxFQUFFO0lBQ2xILElBQUksY0FBYyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLDJDQUEyQztRQUMzQyxTQUFTLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7U0FBTSxDQUFDO1FBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUgfSBmcm9tICd0aHJlZSc7XG5cbi8qKlxuICogTk9URTogU2V0cyBgQnVmZmVyQXR0cmlidXRlLnVwZGF0ZVJhbmdlYCBzaW5jZSByMTU5LlxuICovXG5leHBvcnQgY29uc3Qgc2V0VXBkYXRlUmFuZ2UgPSAoYXR0cmlidXRlOiBCdWZmZXJBdHRyaWJ1dGUsIHVwZGF0ZVJhbmdlOiB7IG9mZnNldDogbnVtYmVyOyBjb3VudDogbnVtYmVyIH0pOiB2b2lkID0+IHtcblx0aWYgKCd1cGRhdGVSYW5nZXMnIGluIGF0dHJpYnV0ZSkge1xuXHRcdC8vIGF0dHJpYnV0ZS51cGRhdGVSYW5nZXNbMF0gPSB1cGRhdGVSYW5nZTtcblx0XHRhdHRyaWJ1dGUuYWRkVXBkYXRlUmFuZ2UodXBkYXRlUmFuZ2Uub2Zmc2V0LCB1cGRhdGVSYW5nZS5jb3VudCk7XG5cdH0gZWxzZSB7XG5cdFx0T2JqZWN0LmFzc2lnbihhdHRyaWJ1dGUsIHsgdXBkYXRlUmFuZ2UgfSk7XG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaW5lYXJFbmNvZGluZyA9IDMwMDA7XG5leHBvcnQgY29uc3Qgc1JHQkVuY29kaW5nID0gMzAwMTtcblxuLyoqXG4gKiBOT1RFOiBUZXh0dXJlRW5jb2Rpbmcgd2FzIGRlcHJlY2F0ZWQgaW4gcjE1MiwgYW5kIHJlbW92ZWQgaW4gcjE2Mi5cbiAqL1xuZXhwb3J0IHR5cGUgVGV4dHVyZUVuY29kaW5nID0gdHlwZW9mIExpbmVhckVuY29kaW5nIHwgdHlwZW9mIHNSR0JFbmNvZGluZztcbiJdfQ==
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { computed } from '@angular/core';
|
|
2
|
-
import { injectBeforeRender, injectStore, pick } from 'angular-three';
|
|
3
|
-
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
|
-
import { DepthFormat, DepthTexture, UnsignedShortType } from 'three';
|
|
5
|
-
import { injectFBO } from './fbo';
|
|
6
|
-
export function injectDepthBuffer(params = () => ({}), { injector } = {}) {
|
|
7
|
-
return assertInjector(injectDepthBuffer, injector, () => {
|
|
8
|
-
const size = computed(() => params().size || 256);
|
|
9
|
-
const frames = computed(() => params().frames || Infinity);
|
|
10
|
-
const store = injectStore();
|
|
11
|
-
const width = store.select('size', 'width');
|
|
12
|
-
const height = store.select('size', 'height');
|
|
13
|
-
const dpr = store.select('viewport', 'dpr');
|
|
14
|
-
const w = computed(() => size() || width() * dpr());
|
|
15
|
-
const h = computed(() => size() || height() * dpr());
|
|
16
|
-
const depthConfig = computed(() => {
|
|
17
|
-
const depthTexture = new DepthTexture(w(), h());
|
|
18
|
-
depthTexture.format = DepthFormat;
|
|
19
|
-
depthTexture.type = UnsignedShortType;
|
|
20
|
-
return { depthTexture };
|
|
21
|
-
});
|
|
22
|
-
const depthFBO = injectFBO(() => ({ width: w(), height: h(), settings: depthConfig() }));
|
|
23
|
-
let count = 0;
|
|
24
|
-
injectBeforeRender(({ gl, scene, camera }) => {
|
|
25
|
-
if (frames() === Infinity || count < frames()) {
|
|
26
|
-
gl.setRenderTarget(depthFBO());
|
|
27
|
-
gl.render(scene, camera);
|
|
28
|
-
gl.setRenderTarget(null);
|
|
29
|
-
count++;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
return pick(depthFBO, 'depthTexture');
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGgtYnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9kZXB0aC1idWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVsQyxNQUFNLFVBQVUsaUJBQWlCLENBQ2hDLFNBQW1ELEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQzdELEVBQUUsUUFBUSxLQUE4QixFQUFFO0lBRTFDLE9BQU8sY0FBYyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDdkQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBRTNELE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXJELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRCxZQUFZLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxZQUFZLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekYsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2Qsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUM1QyxJQUFJLE1BQU0sRUFBRSxLQUFLLFFBQVEsSUFBSSxLQUFLLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDL0MsRUFBRSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekIsS0FBSyxFQUFFLENBQUM7WUFDVCxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IERlcHRoRm9ybWF0LCBEZXB0aFRleHR1cmUsIFVuc2lnbmVkU2hvcnRUeXBlIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0RkJPIH0gZnJvbSAnLi9mYm8nO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVwdGhCdWZmZXIoXG5cdHBhcmFtczogKCkgPT4geyBzaXplPzogbnVtYmVyOyBmcmFtZXM/OiBudW1iZXIgfSA9ICgpID0+ICh7fSksXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0RGVwdGhCdWZmZXIsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3Qgc2l6ZSA9IGNvbXB1dGVkKCgpID0+IHBhcmFtcygpLnNpemUgfHwgMjU2KTtcblx0XHRjb25zdCBmcmFtZXMgPSBjb21wdXRlZCgoKSA9PiBwYXJhbXMoKS5mcmFtZXMgfHwgSW5maW5pdHkpO1xuXG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IHdpZHRoID0gc3RvcmUuc2VsZWN0KCdzaXplJywgJ3dpZHRoJyk7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gc3RvcmUuc2VsZWN0KCdzaXplJywgJ2hlaWdodCcpO1xuXHRcdGNvbnN0IGRwciA9IHN0b3JlLnNlbGVjdCgndmlld3BvcnQnLCAnZHByJyk7XG5cblx0XHRjb25zdCB3ID0gY29tcHV0ZWQoKCkgPT4gc2l6ZSgpIHx8IHdpZHRoKCkgKiBkcHIoKSk7XG5cdFx0Y29uc3QgaCA9IGNvbXB1dGVkKCgpID0+IHNpemUoKSB8fCBoZWlnaHQoKSAqIGRwcigpKTtcblxuXHRcdGNvbnN0IGRlcHRoQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZGVwdGhUZXh0dXJlID0gbmV3IERlcHRoVGV4dHVyZSh3KCksIGgoKSk7XG5cdFx0XHRkZXB0aFRleHR1cmUuZm9ybWF0ID0gRGVwdGhGb3JtYXQ7XG5cdFx0XHRkZXB0aFRleHR1cmUudHlwZSA9IFVuc2lnbmVkU2hvcnRUeXBlO1xuXHRcdFx0cmV0dXJuIHsgZGVwdGhUZXh0dXJlIH07XG5cdFx0fSk7XG5cblx0XHRjb25zdCBkZXB0aEZCTyA9IGluamVjdEZCTygoKSA9PiAoeyB3aWR0aDogdygpLCBoZWlnaHQ6IGgoKSwgc2V0dGluZ3M6IGRlcHRoQ29uZmlnKCkgfSkpO1xuXG5cdFx0bGV0IGNvdW50ID0gMDtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgZ2wsIHNjZW5lLCBjYW1lcmEgfSkgPT4ge1xuXHRcdFx0aWYgKGZyYW1lcygpID09PSBJbmZpbml0eSB8fCBjb3VudCA8IGZyYW1lcygpKSB7XG5cdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChkZXB0aEZCTygpKTtcblx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gcGljayhkZXB0aEZCTywgJ2RlcHRoVGV4dHVyZScpO1xuXHR9KTtcbn1cbiJdfQ==
|
package/esm2022/misc/lib/fbo.mjs
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { DestroyRef, Directive, TemplateRef, ViewContainerRef, computed, effect, inject, input, untracked, } from '@angular/core';
|
|
2
|
-
import { injectStore } from 'angular-three';
|
|
3
|
-
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
|
-
import { DepthTexture, FloatType, HalfFloatType, LinearFilter, WebGLRenderTarget, } from 'three';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export function injectFBO(params = () => ({}), { injector } = {}) {
|
|
7
|
-
return assertInjector(injectFBO, injector, () => {
|
|
8
|
-
const store = injectStore();
|
|
9
|
-
const size = store.select('size');
|
|
10
|
-
const viewport = store.select('viewport');
|
|
11
|
-
const width = computed(() => {
|
|
12
|
-
const { width } = params();
|
|
13
|
-
return typeof width === 'number' ? width : size().width * viewport().dpr;
|
|
14
|
-
});
|
|
15
|
-
const height = computed(() => {
|
|
16
|
-
const { height } = params();
|
|
17
|
-
return typeof height === 'number' ? height : size().height * viewport().dpr;
|
|
18
|
-
});
|
|
19
|
-
const settings = computed(() => {
|
|
20
|
-
const { width, settings } = params();
|
|
21
|
-
const _settings = (typeof width === 'number' ? settings : width) || {};
|
|
22
|
-
if (_settings.samples === undefined) {
|
|
23
|
-
_settings.samples = 0;
|
|
24
|
-
}
|
|
25
|
-
return _settings;
|
|
26
|
-
});
|
|
27
|
-
const target = computed(() => {
|
|
28
|
-
const [{ samples = 0, depth, ...targetSettings }, _width, _height] = [
|
|
29
|
-
untracked(settings),
|
|
30
|
-
untracked(width),
|
|
31
|
-
untracked(height),
|
|
32
|
-
];
|
|
33
|
-
const target = new WebGLRenderTarget(_width, _height, {
|
|
34
|
-
minFilter: LinearFilter,
|
|
35
|
-
magFilter: LinearFilter,
|
|
36
|
-
type: HalfFloatType,
|
|
37
|
-
...targetSettings,
|
|
38
|
-
});
|
|
39
|
-
if (depth) {
|
|
40
|
-
target.depthTexture = new DepthTexture(_width, _height, FloatType);
|
|
41
|
-
}
|
|
42
|
-
target.samples = samples;
|
|
43
|
-
return target;
|
|
44
|
-
});
|
|
45
|
-
effect(() => {
|
|
46
|
-
const [{ samples = 0 }, _width, _height, _target] = [settings(), width(), height(), target()];
|
|
47
|
-
_target.setSize(_width, _height);
|
|
48
|
-
if (samples)
|
|
49
|
-
_target.samples = samples;
|
|
50
|
-
});
|
|
51
|
-
inject(DestroyRef).onDestroy(() => target().dispose());
|
|
52
|
-
return target;
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
export class NgtsFBO {
|
|
56
|
-
constructor() {
|
|
57
|
-
this.fbo = input({});
|
|
58
|
-
this.template = inject(TemplateRef);
|
|
59
|
-
this.viewContainerRef = inject(ViewContainerRef);
|
|
60
|
-
let ref;
|
|
61
|
-
const fboTarget = injectFBO(() => {
|
|
62
|
-
const { width, height, ...settings } = this.fbo();
|
|
63
|
-
return { width, height, settings };
|
|
64
|
-
});
|
|
65
|
-
effect(() => {
|
|
66
|
-
// TODO: double check if we need untracked
|
|
67
|
-
untracked(() => {
|
|
68
|
-
ref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: fboTarget });
|
|
69
|
-
ref.detectChanges();
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
inject(DestroyRef).onDestroy(() => {
|
|
73
|
-
ref?.destroy();
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
static ngTemplateContextGuard(_, ctx) {
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsFBO, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
80
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtsFBO, isStandalone: true, selector: "ng-template[fbo]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
81
|
-
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsFBO, decorators: [{
|
|
83
|
-
type: Directive,
|
|
84
|
-
args: [{ selector: 'ng-template[fbo]', standalone: true }]
|
|
85
|
-
}], ctorParameters: () => [] });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9mYm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFVBQVUsRUFDVixTQUFTLEVBR1QsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFFTixZQUFZLEVBQ1osU0FBUyxFQUNULGFBQWEsRUFDYixZQUFZLEVBSVosaUJBQWlCLEdBRWpCLE1BQU0sT0FBTyxDQUFDOztBQStCZixNQUFNLFVBQVUsU0FBUyxDQUFDLFNBQThCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLEtBQThCLEVBQUU7SUFDN0csT0FBTyxjQUFjLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDL0MsTUFBTSxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDNUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FB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RyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLDBDQUEwQztZQUMxQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RixHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBVSxFQUFFLEdBQVk7UUFDckQsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDOytHQTdCVyxPQUFPO21HQUFQLE9BQU87OzRGQUFQLE9BQU87a0JBRG5CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdERlc3Ryb3lSZWYsXG5cdERpcmVjdGl2ZSxcblx0RW1iZWRkZWRWaWV3UmVmLFxuXHRJbmplY3Rvcixcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDb250YWluZXJSZWYsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQge1xuXHRDb2xvclNwYWNlLFxuXHREZXB0aFRleHR1cmUsXG5cdEZsb2F0VHlwZSxcblx0SGFsZkZsb2F0VHlwZSxcblx0TGluZWFyRmlsdGVyLFxuXHRNYWduaWZpY2F0aW9uVGV4dHVyZUZpbHRlcixcblx0TWluaWZpY2F0aW9uVGV4dHVyZUZpbHRlcixcblx0VGV4dHVyZURhdGFUeXBlLFxuXHRXZWJHTFJlbmRlclRhcmdldCxcblx0V3JhcHBpbmcsXG59IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFRleHR1cmVFbmNvZGluZyB9IGZyb20gJy4vZGVwcmVjYXRlZCc7XG5cbmludGVyZmFjZSBGQk9TZXR0aW5ncyB7XG5cdC8qKiBEZWZpbmVzIHRoZSBjb3VudCBvZiBNU0FBIHNhbXBsZXMuIENhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTCAyLiBEZWZhdWx0OiAwICovXG5cdHNhbXBsZXM/OiBudW1iZXI7XG5cdC8qKiBJZiBzZXQsIHRoZSBzY2VuZSBkZXB0aCB3aWxsIGJlIHJlbmRlcmVkIGludG8gYnVmZmVyLmRlcHRoVGV4dHVyZS4gRGVmYXVsdDogZmFsc2UgKi9cblx0ZGVwdGg/OiBib29sZWFuO1xuXG5cdC8vIFdlYkdMUmVuZGVyVGFyZ2V0T3B0aW9ucyA9PiBSZW5kZXJUYXJnZXRPcHRpb25zXG5cdHdyYXBTPzogV3JhcHBpbmcgfCB1bmRlZmluZWQ7XG5cdHdyYXBUPzogV3JhcHBpbmcgfCB1bmRlZmluZWQ7XG5cdG1hZ0ZpbHRlcj86IE1hZ25pZmljYXRpb25UZXh0dXJlRmlsdGVyIHwgdW5kZWZpbmVkO1xuXHRtaW5GaWx0ZXI/OiBNaW5pZmljYXRpb25UZXh0dXJlRmlsdGVyIHwgdW5kZWZpbmVkO1xuXHRmb3JtYXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7IC8vIFJHQkFGb3JtYXQ7XG5cdHR5cGU/OiBUZXh0dXJlRGF0YVR5cGUgfCB1bmRlZmluZWQ7IC8vIFVuc2lnbmVkQnl0ZVR5cGU7XG5cdGFuaXNvdHJvcHk/OiBudW1iZXIgfCB1bmRlZmluZWQ7IC8vIDE7XG5cdGRlcHRoQnVmZmVyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsgLy8gdHJ1ZTtcblx0c3RlbmNpbEJ1ZmZlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7IC8vIGZhbHNlO1xuXHRnZW5lcmF0ZU1pcG1hcHM/OiBib29sZWFuIHwgdW5kZWZpbmVkOyAvLyB0cnVlO1xuXHRkZXB0aFRleHR1cmU/OiBEZXB0aFRleHR1cmUgfCB1bmRlZmluZWQ7XG5cdGVuY29kaW5nPzogVGV4dHVyZUVuY29kaW5nIHwgdW5kZWZpbmVkO1xuXHRjb2xvclNwYWNlPzogQ29sb3JTcGFjZSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzRkJPUGFyYW1zIHtcblx0d2lkdGg/OiBudW1iZXIgfCBGQk9TZXR0aW5ncztcblx0aGVpZ2h0PzogbnVtYmVyO1xuXHRzZXR0aW5ncz86IEZCT1NldHRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RkJPKHBhcmFtczogKCkgPT4gTmd0c0ZCT1BhcmFtcyA9ICgpID0+ICh7fSksIHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSkge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0RkJPLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBzaXplID0gc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cdFx0Y29uc3Qgdmlld3BvcnQgPSBzdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0Jyk7XG5cblx0XHRjb25zdCB3aWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHsgd2lkdGggfSA9IHBhcmFtcygpO1xuXHRcdFx0cmV0dXJuIHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgPyB3aWR0aCA6IHNpemUoKS53aWR0aCAqIHZpZXdwb3J0KCkuZHByO1xuXHRcdH0pO1xuXHRcdGNvbnN0IGhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHsgaGVpZ2h0IH0gPSBwYXJhbXMoKTtcblx0XHRcdHJldHVybiB0eXBlb2YgaGVpZ2h0ID09PSAnbnVtYmVyJyA/IGhlaWdodCA6IHNpemUoKS5oZWlnaHQgKiB2aWV3cG9ydCgpLmRwcjtcblx0XHR9KTtcblx0XHRjb25zdCBzZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHsgd2lkdGgsIHNldHRpbmdzIH0gPSBwYXJhbXMoKTtcblx0XHRcdGNvbnN0IF9zZXR0aW5ncyA9ICh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInID8gc2V0dGluZ3MgOiAod2lkdGggYXMgRkJPU2V0dGluZ3MpKSB8fCB7fTtcblx0XHRcdGlmIChfc2V0dGluZ3Muc2FtcGxlcyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdF9zZXR0aW5ncy5zYW1wbGVzID0gMDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBfc2V0dGluZ3M7XG5cdFx0fSk7XG5cblx0XHRjb25zdCB0YXJnZXQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbeyBzYW1wbGVzID0gMCwgZGVwdGgsIC4uLnRhcmdldFNldHRpbmdzIH0sIF93aWR0aCwgX2hlaWdodF0gPSBbXG5cdFx0XHRcdHVudHJhY2tlZChzZXR0aW5ncyksXG5cdFx0XHRcdHVudHJhY2tlZCh3aWR0aCksXG5cdFx0XHRcdHVudHJhY2tlZChoZWlnaHQpLFxuXHRcdFx0XTtcblx0XHRcdGNvbnN0IHRhcmdldCA9IG5ldyBXZWJHTFJlbmRlclRhcmdldChfd2lkdGgsIF9oZWlnaHQsIHtcblx0XHRcdFx0bWluRmlsdGVyOiBMaW5lYXJGaWx0ZXIsXG5cdFx0XHRcdG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHRcdFx0XHR0eXBlOiBIYWxmRmxvYXRUeXBlLFxuXHRcdFx0XHQuLi50YXJnZXRTZXR0aW5ncyxcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoZGVwdGgpIHtcblx0XHRcdFx0dGFyZ2V0LmRlcHRoVGV4dHVyZSA9IG5ldyBEZXB0aFRleHR1cmUoX3dpZHRoLCBfaGVpZ2h0LCBGbG9hdFR5cGUpO1xuXHRcdFx0fVxuXG5cdFx0XHR0YXJnZXQuc2FtcGxlcyA9IHNhbXBsZXM7XG5cdFx0XHRyZXR1cm4gdGFyZ2V0O1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFt7IHNhbXBsZXMgPSAwIH0sIF93aWR0aCwgX2hlaWdodCwgX3RhcmdldF0gPSBbc2V0dGluZ3MoKSwgd2lkdGgoKSwgaGVpZ2h0KCksIHRhcmdldCgpXTtcblx0XHRcdF90YXJnZXQuc2V0U2l6ZShfd2lkdGgsIF9oZWlnaHQpO1xuXHRcdFx0aWYgKHNhbXBsZXMpIF90YXJnZXQuc2FtcGxlcyA9IHNhbXBsZXM7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHRhcmdldCgpLmRpc3Bvc2UoKSk7XG5cblx0XHRyZXR1cm4gdGFyZ2V0O1xuXHR9KTtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbZmJvXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzRkJPIHtcblx0ZmJvID0gaW5wdXQoe30gYXMgeyB3aWR0aDogTmd0c0ZCT1BhcmFtc1snd2lkdGgnXTsgaGVpZ2h0OiBOZ3RzRkJPUGFyYW1zWydoZWlnaHQnXSB9ICYgRkJPU2V0dGluZ3MpO1xuXG5cdHByaXZhdGUgdGVtcGxhdGUgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xuXHRwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0bGV0IHJlZjogRW1iZWRkZWRWaWV3UmVmPHsgJGltcGxpY2l0OiBSZXR1cm5UeXBlPHR5cGVvZiBpbmplY3RGQk8+IH0+O1xuXG5cdFx0Y29uc3QgZmJvVGFyZ2V0ID0gaW5qZWN0RkJPKCgpID0+IHtcblx0XHRcdGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgLi4uc2V0dGluZ3MgfSA9IHRoaXMuZmJvKCk7XG5cdFx0XHRyZXR1cm4geyB3aWR0aCwgaGVpZ2h0LCBzZXR0aW5ncyB9O1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdC8vIFRPRE86IGRvdWJsZSBjaGVjayBpZiB3ZSBuZWVkIHVudHJhY2tlZFxuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0cmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlLCB7ICRpbXBsaWNpdDogZmJvVGFyZ2V0IH0pO1xuXHRcdFx0XHRyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHJlZj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoXzogTmd0c0ZCTywgY3R4OiB1bmtub3duKTogY3R4IGlzIHsgJGltcGxpY2l0OiBSZXR1cm5UeXBlPHR5cGVvZiBpbmplY3RGQk8+IH0ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG4iXX0=
|