angular-three-soba 4.0.0-next.10 → 4.0.0-next.12

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.
@@ -123,57 +123,6 @@ export declare class NgtsCatmullRomLine {
123
123
  dispose: {};
124
124
  }[T]) => void)>)) | undefined;
125
125
  dispose?: (((() => void) | Readonly<() => void> | null) & (((() => void) & (() => void)) | Readonly<(() => void) & (() => void)>)) | undefined;
126
- color?: THREE.ColorRepresentation | undefined;
127
- alphaToCoverage?: boolean | undefined | undefined;
128
- dashed?: boolean | undefined | undefined;
129
- dashScale?: number | undefined | undefined;
130
- dashSize?: number | undefined | undefined;
131
- dashOffset?: number | undefined | undefined;
132
- gapSize?: number | undefined | undefined;
133
- linewidth?: number | undefined | undefined;
134
- resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
135
- wireframe?: boolean | undefined | undefined;
136
- worldUnits?: boolean | undefined | undefined;
137
- alphaHash?: boolean | undefined | undefined;
138
- alphaTest?: number | undefined | undefined;
139
- blendAlpha?: number | undefined | undefined;
140
- blendColor?: (THREE.ColorRepresentation & (string | number | THREE.Color | [r: number, g: number, b: number] | [color: THREE.ColorRepresentation] | Readonly<THREE.Color> | readonly [r: number, g: number, b: number] | readonly [color: THREE.ColorRepresentation])) | undefined;
141
- blendDst?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 211 | 212 | 213 | 214 | undefined;
142
- blendDstAlpha?: number | undefined | undefined;
143
- blendEquation?: 100 | 101 | 102 | 103 | 104 | undefined;
144
- blendEquationAlpha?: number | undefined | undefined;
145
- blending?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
146
- blendSrc?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | undefined;
147
- blendSrcAlpha?: number | undefined | undefined;
148
- clipIntersection?: boolean | undefined | undefined;
149
- clippingPlanes?: THREE.Plane[] | (THREE.Plane[] & readonly THREE.Plane[]) | undefined;
150
- clipShadows?: boolean | undefined | undefined;
151
- colorWrite?: boolean | undefined | undefined;
152
- defines?: any;
153
- depthFunc?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | undefined;
154
- depthTest?: boolean | undefined | undefined;
155
- depthWrite?: boolean | undefined | undefined;
156
- opacity?: number | undefined | undefined;
157
- polygonOffset?: boolean | undefined | undefined;
158
- polygonOffsetFactor?: number | undefined | undefined;
159
- polygonOffsetUnits?: number | undefined | undefined;
160
- precision?: "highp" | "mediump" | "lowp" | null | undefined | undefined;
161
- premultipliedAlpha?: boolean | undefined | undefined;
162
- forceSinglePass?: boolean | undefined | undefined;
163
- dithering?: boolean | undefined | undefined;
164
- side?: 0 | 1 | 2 | undefined;
165
- shadowSide?: 0 | 1 | 2 | undefined;
166
- toneMapped?: boolean | undefined | undefined;
167
- transparent?: boolean | undefined | undefined;
168
- format?: THREE.PixelFormat | undefined;
169
- stencilWrite?: boolean | undefined | undefined;
170
- stencilFunc?: 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | undefined;
171
- stencilRef?: number | undefined | undefined;
172
- stencilWriteMask?: number | undefined | undefined;
173
- stencilFuncMask?: number | undefined | undefined;
174
- stencilFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
175
- stencilZFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
176
- stencilZPass?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
177
126
  geometry?: import("three-stdlib").LineGeometry | Readonly<import("three-stdlib").LineGeometry | undefined>;
178
127
  material?: import("three-stdlib").LineMaterial | Readonly<import("three-stdlib").LineMaterial | undefined>;
179
128
  isLine2?: Readonly<true | undefined>;
@@ -188,8 +137,20 @@ export declare class NgtsCatmullRomLine {
188
137
  } | undefined>;
189
138
  updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
190
139
  getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
140
+ color?: THREE.ColorRepresentation | undefined;
141
+ dashed?: boolean | undefined | undefined;
142
+ dashScale?: number | undefined | undefined;
143
+ dashSize?: number | undefined | undefined;
144
+ dashOffset?: number | undefined | undefined;
145
+ gapSize?: number | undefined | undefined;
146
+ opacity?: number | undefined | undefined;
191
147
  isLineMaterial?: Readonly<true | undefined>;
148
+ linewidth?: number | undefined | undefined;
149
+ resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
150
+ alphaToCoverage?: boolean | undefined | undefined;
151
+ worldUnits?: boolean | undefined | undefined;
192
152
  isShaderMaterial?: Readonly<true | undefined>;
153
+ defines?: any;
193
154
  uniforms?: {
194
155
  [uniform: string]: THREE.IUniform<any>;
195
156
  } | Readonly<{
@@ -198,6 +159,7 @@ export declare class NgtsCatmullRomLine {
198
159
  uniformsGroups?: THREE.UniformsGroup[] | Readonly<THREE.UniformsGroup[] | undefined>;
199
160
  vertexShader?: Readonly<string | undefined>;
200
161
  fragmentShader?: Readonly<string | undefined>;
162
+ wireframe?: boolean | undefined | undefined;
201
163
  wireframeLinewidth?: Readonly<number | undefined>;
202
164
  fog?: Readonly<boolean | undefined>;
203
165
  lights?: Readonly<boolean | undefined>;
@@ -215,11 +177,49 @@ export declare class NgtsCatmullRomLine {
215
177
  glslVersion?: "100" | "300 es" | null | undefined;
216
178
  setValues?: ((parameters: THREE.ShaderMaterialParameters) => void) | Readonly<((parameters: THREE.ShaderMaterialParameters) => void) | undefined>;
217
179
  isMaterial?: Readonly<true | undefined>;
180
+ alphaHash?: boolean | undefined | undefined;
181
+ blendAlpha?: number | undefined | undefined;
182
+ blendColor?: (THREE.ColorRepresentation & (string | number | THREE.Color | [r: number, g: number, b: number] | [color: THREE.ColorRepresentation] | Readonly<THREE.Color> | readonly [r: number, g: number, b: number] | readonly [color: THREE.ColorRepresentation])) | undefined;
183
+ blendDst?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 211 | 212 | 213 | 214 | undefined;
184
+ blendDstAlpha?: number | undefined | undefined;
185
+ blendEquation?: 100 | 101 | 102 | 103 | 104 | undefined;
186
+ blendEquationAlpha?: number | undefined | undefined;
187
+ blending?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
188
+ blendSrc?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | undefined;
189
+ blendSrcAlpha?: number | undefined | undefined;
190
+ clipIntersection?: boolean | undefined | undefined;
191
+ clippingPlanes?: THREE.Plane[] | (THREE.Plane[] & readonly THREE.Plane[]) | undefined;
192
+ clipShadows?: boolean | undefined | undefined;
193
+ colorWrite?: boolean | undefined | undefined;
194
+ depthFunc?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | undefined;
195
+ depthTest?: boolean | undefined | undefined;
196
+ depthWrite?: boolean | undefined | undefined;
197
+ stencilWrite?: boolean | undefined | undefined;
198
+ stencilFunc?: 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | undefined;
199
+ stencilRef?: number | undefined | undefined;
200
+ stencilWriteMask?: number | undefined | undefined;
201
+ stencilFuncMask?: number | undefined | undefined;
202
+ stencilFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
203
+ stencilZFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
204
+ stencilZPass?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
205
+ polygonOffset?: boolean | undefined | undefined;
206
+ polygonOffsetFactor?: number | undefined | undefined;
207
+ polygonOffsetUnits?: number | undefined | undefined;
208
+ precision?: "highp" | "mediump" | "lowp" | null | undefined | undefined;
209
+ premultipliedAlpha?: boolean | undefined | undefined;
210
+ forceSinglePass?: boolean | undefined | undefined;
211
+ dithering?: boolean | undefined | undefined;
212
+ side?: 0 | 1 | 2 | undefined;
213
+ shadowSide?: 0 | 1 | 2 | undefined;
214
+ toneMapped?: boolean | undefined | undefined;
215
+ transparent?: boolean | undefined | undefined;
218
216
  version?: Readonly<number | undefined>;
217
+ alphaTest?: number | undefined | undefined;
219
218
  onBeforeCompile?: ((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
220
219
  customProgramCacheKey?: (() => string) | Readonly<(() => string) | undefined>;
221
220
  needsUpdate?: Readonly<boolean | undefined>;
222
221
  onBuild?: ((object: THREE.Object3D, parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((object: THREE.Object3D, parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
222
+ format?: THREE.PixelFormat | undefined;
223
223
  lineWidth: number;
224
224
  }>;
225
225
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsCatmullRomLine, never>;
@@ -116,57 +116,6 @@ export declare class NgtsEdges {
116
116
  }[T]) => void)>)) | undefined;
117
117
  dispose?: (((() => void) | Readonly<() => void> | null) & (((() => void) & (() => void)) | Readonly<(() => void) & (() => void)>)) | undefined;
118
118
  __ngt_args__?: (([geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes> | undefined, material?: THREE.Material | THREE.Material[] | undefined] | readonly [geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes> | undefined, material?: THREE.Material | THREE.Material[] | undefined]) & (([geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined] | readonly [geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined]) & ([parameters?: LineMaterialParameters | undefined] | readonly [parameters?: LineMaterialParameters | undefined]))) | undefined;
119
- color?: THREE.ColorRepresentation | undefined;
120
- alphaToCoverage?: boolean | undefined | undefined;
121
- dashed?: boolean | undefined | undefined;
122
- dashScale?: number | undefined | undefined;
123
- dashSize?: number | undefined | undefined;
124
- dashOffset?: number | undefined | undefined;
125
- gapSize?: number | undefined | undefined;
126
- linewidth?: number | undefined | undefined;
127
- resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
128
- wireframe?: boolean | undefined | undefined;
129
- worldUnits?: boolean | undefined | undefined;
130
- alphaHash?: boolean | undefined | undefined;
131
- alphaTest?: number | undefined | undefined;
132
- blendAlpha?: number | undefined | undefined;
133
- blendColor?: (THREE.ColorRepresentation & (string | number | THREE.Color | [r: number, g: number, b: number] | [color: THREE.ColorRepresentation] | Readonly<THREE.Color> | readonly [r: number, g: number, b: number] | readonly [color: THREE.ColorRepresentation])) | undefined;
134
- blendDst?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 211 | 212 | 213 | 214 | undefined;
135
- blendDstAlpha?: number | undefined | undefined;
136
- blendEquation?: 100 | 101 | 102 | 103 | 104 | undefined;
137
- blendEquationAlpha?: number | undefined | undefined;
138
- blending?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
139
- blendSrc?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | undefined;
140
- blendSrcAlpha?: number | undefined | undefined;
141
- clipIntersection?: boolean | undefined | undefined;
142
- clippingPlanes?: THREE.Plane[] | (THREE.Plane[] & readonly THREE.Plane[]) | undefined;
143
- clipShadows?: boolean | undefined | undefined;
144
- colorWrite?: boolean | undefined | undefined;
145
- defines?: any;
146
- depthFunc?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | undefined;
147
- depthTest?: boolean | undefined | undefined;
148
- depthWrite?: boolean | undefined | undefined;
149
- opacity?: number | undefined | undefined;
150
- polygonOffset?: boolean | undefined | undefined;
151
- polygonOffsetFactor?: number | undefined | undefined;
152
- polygonOffsetUnits?: number | undefined | undefined;
153
- precision?: "highp" | "mediump" | "lowp" | null | undefined | undefined;
154
- premultipliedAlpha?: boolean | undefined | undefined;
155
- forceSinglePass?: boolean | undefined | undefined;
156
- dithering?: boolean | undefined | undefined;
157
- side?: 0 | 1 | 2 | undefined;
158
- shadowSide?: 0 | 1 | 2 | undefined;
159
- toneMapped?: boolean | undefined | undefined;
160
- transparent?: boolean | undefined | undefined;
161
- format?: THREE.PixelFormat | undefined;
162
- stencilWrite?: boolean | undefined | undefined;
163
- stencilFunc?: 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | undefined;
164
- stencilRef?: number | undefined | undefined;
165
- stencilWriteMask?: number | undefined | undefined;
166
- stencilFuncMask?: number | undefined | undefined;
167
- stencilFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
168
- stencilZFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
169
- stencilZPass?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
170
119
  material?: ((THREE.Material | THREE.Material[] | Readonly<THREE.Material> | readonly THREE.Material[]) & (import("three-stdlib").LineMaterial | Readonly<import("three-stdlib").LineMaterial>)) | undefined;
171
120
  isLine2?: Readonly<true | undefined>;
172
121
  isLineSegments2?: Readonly<true | undefined>;
@@ -180,8 +129,20 @@ export declare class NgtsEdges {
180
129
  } | undefined>;
181
130
  updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
182
131
  getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
132
+ color?: THREE.ColorRepresentation | undefined;
133
+ dashed?: boolean | undefined | undefined;
134
+ dashScale?: number | undefined | undefined;
135
+ dashSize?: number | undefined | undefined;
136
+ dashOffset?: number | undefined | undefined;
137
+ gapSize?: number | undefined | undefined;
138
+ opacity?: number | undefined | undefined;
183
139
  isLineMaterial?: Readonly<true | undefined>;
140
+ linewidth?: number | undefined | undefined;
141
+ resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
142
+ alphaToCoverage?: boolean | undefined | undefined;
143
+ worldUnits?: boolean | undefined | undefined;
184
144
  isShaderMaterial?: Readonly<true | undefined>;
145
+ defines?: any;
185
146
  uniforms?: {
186
147
  [uniform: string]: THREE.IUniform<any>;
187
148
  } | Readonly<{
@@ -190,6 +151,7 @@ export declare class NgtsEdges {
190
151
  uniformsGroups?: THREE.UniformsGroup[] | Readonly<THREE.UniformsGroup[] | undefined>;
191
152
  vertexShader?: Readonly<string | undefined>;
192
153
  fragmentShader?: Readonly<string | undefined>;
154
+ wireframe?: boolean | undefined | undefined;
193
155
  wireframeLinewidth?: Readonly<number | undefined>;
194
156
  fog?: Readonly<boolean | undefined>;
195
157
  lights?: Readonly<boolean | undefined>;
@@ -207,11 +169,49 @@ export declare class NgtsEdges {
207
169
  glslVersion?: "100" | "300 es" | null | undefined;
208
170
  setValues?: ((parameters: THREE.ShaderMaterialParameters) => void) | Readonly<((parameters: THREE.ShaderMaterialParameters) => void) | undefined>;
209
171
  isMaterial?: Readonly<true | undefined>;
172
+ alphaHash?: boolean | undefined | undefined;
173
+ blendAlpha?: number | undefined | undefined;
174
+ blendColor?: (THREE.ColorRepresentation & (string | number | THREE.Color | [r: number, g: number, b: number] | [color: THREE.ColorRepresentation] | Readonly<THREE.Color> | readonly [r: number, g: number, b: number] | readonly [color: THREE.ColorRepresentation])) | undefined;
175
+ blendDst?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 211 | 212 | 213 | 214 | undefined;
176
+ blendDstAlpha?: number | undefined | undefined;
177
+ blendEquation?: 100 | 101 | 102 | 103 | 104 | undefined;
178
+ blendEquationAlpha?: number | undefined | undefined;
179
+ blending?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
180
+ blendSrc?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | undefined;
181
+ blendSrcAlpha?: number | undefined | undefined;
182
+ clipIntersection?: boolean | undefined | undefined;
183
+ clippingPlanes?: THREE.Plane[] | (THREE.Plane[] & readonly THREE.Plane[]) | undefined;
184
+ clipShadows?: boolean | undefined | undefined;
185
+ colorWrite?: boolean | undefined | undefined;
186
+ depthFunc?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | undefined;
187
+ depthTest?: boolean | undefined | undefined;
188
+ depthWrite?: boolean | undefined | undefined;
189
+ stencilWrite?: boolean | undefined | undefined;
190
+ stencilFunc?: 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | undefined;
191
+ stencilRef?: number | undefined | undefined;
192
+ stencilWriteMask?: number | undefined | undefined;
193
+ stencilFuncMask?: number | undefined | undefined;
194
+ stencilFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
195
+ stencilZFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
196
+ stencilZPass?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
197
+ polygonOffset?: boolean | undefined | undefined;
198
+ polygonOffsetFactor?: number | undefined | undefined;
199
+ polygonOffsetUnits?: number | undefined | undefined;
200
+ precision?: "highp" | "mediump" | "lowp" | null | undefined | undefined;
201
+ premultipliedAlpha?: boolean | undefined | undefined;
202
+ forceSinglePass?: boolean | undefined | undefined;
203
+ dithering?: boolean | undefined | undefined;
204
+ side?: 0 | 1 | 2 | undefined;
205
+ shadowSide?: 0 | 1 | 2 | undefined;
206
+ toneMapped?: boolean | undefined | undefined;
207
+ transparent?: boolean | undefined | undefined;
210
208
  version?: Readonly<number | undefined>;
209
+ alphaTest?: number | undefined | undefined;
211
210
  onBeforeCompile?: ((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
212
211
  customProgramCacheKey?: (() => string) | Readonly<(() => string) | undefined>;
213
212
  needsUpdate?: Readonly<boolean | undefined>;
214
213
  onBuild?: ((object: THREE.Object3D, parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((object: THREE.Object3D, parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
214
+ format?: THREE.PixelFormat | undefined;
215
215
  lineWidth?: number | undefined;
216
216
  }>;
217
217
  protected tmpPoints: number[];
@@ -18,7 +18,7 @@ export type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'col
18
18
  export declare class NgtsLine {
19
19
  points: import("@angular/core").InputSignal<(number | THREE.Vector2 | THREE.Vector3 | [number, number, number] | [number, number])[]>;
20
20
  options: import("@angular/core").InputSignalWithTransform<NgtsLineOptions, "" | Partial<NgtsLineOptions>>;
21
- protected parameters: import("@angular/core").Signal<Omit<NgtsLineOptions, "vertexColors" | "color" | "dashed" | "linewidth" | "lineWidth" | "segments">>;
21
+ protected parameters: import("@angular/core").Signal<Omit<NgtsLineOptions, "color" | "dashed" | "linewidth" | "vertexColors" | "lineWidth" | "segments">>;
22
22
  lineRef: import("@angular/core").Signal<ElementRef<Line2 | LineSegments2> | undefined>;
23
23
  private store;
24
24
  private segments;
@@ -37,7 +37,7 @@ export interface NgtsTextOptions extends Partial<NgtThreeElements['ngt-mesh']> {
37
37
  export declare class NgtsText {
38
38
  text: import("@angular/core").InputSignal<string>;
39
39
  options: import("@angular/core").InputSignalWithTransform<NgtsTextOptions, "" | Partial<NgtsTextOptions>>;
40
- protected parameters: import("@angular/core").Signal<Omit<NgtsTextOptions, "font" | "fontSize" | "sdfGlyphSize" | "anchorX" | "anchorY" | "characters">>;
40
+ protected parameters: import("@angular/core").Signal<Omit<NgtsTextOptions, "characters" | "fontSize" | "font" | "anchorX" | "anchorY" | "sdfGlyphSize">>;
41
41
  synced: import("@angular/core").OutputEmitterRef<Text>;
42
42
  private store;
43
43
  private characters;
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, effect, untracked, inject, DestroyRef, Directive, viewChild, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, computed } from '@angular/core';
2
+ import { input, booleanAttribute, effect, untracked, inject, DestroyRef, Directive, viewChild, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, computed } from '@angular/core';
3
3
  import { injectStore, omit, pick, extend, getInstanceState, injectBeforeRender, resolveRef, checkUpdate, vector3, NgtArgs } from 'angular-three';
4
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
5
5
  import * as THREE from 'three';
@@ -9,7 +9,7 @@ import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
9
9
 
10
10
  class NgtsAdaptiveDpr {
11
11
  constructor() {
12
- this.pixelated = input(false);
12
+ this.pixelated = input(false, { transform: booleanAttribute });
13
13
  const store = injectStore();
14
14
  effect(() => {
15
15
  const [current, pixelated, domElement, setDpr, initialDpr] = [
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-performances.mjs","sources":["../../../../libs/soba/performances/src/lib/adaptive-dpr.ts","../../../../libs/soba/performances/src/lib/adaptive-events.ts","../../../../libs/soba/performances/src/lib/detailed.ts","../../../../libs/soba/performances/src/lib/instances/position-mesh.ts","../../../../libs/soba/performances/src/lib/instances/instances.ts","../../../../libs/soba/performances/src/lib/points/position-point.ts","../../../../libs/soba/performances/src/lib/points/points.ts","../../../../libs/soba/performances/src/lib/segments/segment-object.ts","../../../../libs/soba/performances/src/lib/segments/segments.ts","../../../../libs/soba/performances/src/angular-three-soba-performances.ts"],"sourcesContent":["import { DestroyRef, Directive, effect, inject, input, untracked } from '@angular/core';\nimport { injectStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-dpr' })\nexport class NgtsAdaptiveDpr {\n\tpixelated = input(false);\n\n\tconstructor() {\n\t\tconst store = injectStore();\n\n\t\teffect(() => {\n\t\t\tconst [current, pixelated, domElement, setDpr, initialDpr] = [\n\t\t\t\tstore.performance.current(),\n\t\t\t\tuntracked(this.pixelated),\n\t\t\t\tstore.snapshot.gl.domElement,\n\t\t\t\tstore.snapshot.setDpr,\n\t\t\t\tstore.snapshot.viewport.initialDpr,\n\t\t\t];\n\n\t\t\tsetDpr(current * initialDpr);\n\t\t\tif (pixelated && domElement) domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst [domElement, active, setDpr, initialDpr, pixelated] = [\n\t\t\t\tstore.snapshot.gl.domElement,\n\t\t\t\tstore.snapshot.internal.active,\n\t\t\t\tstore.snapshot.setDpr,\n\t\t\t\tstore.snapshot.viewport.initialDpr,\n\t\t\t\tuntracked(this.pixelated),\n\t\t\t];\n\n\t\t\tif (active) setDpr(initialDpr);\n\t\t\tif (pixelated && domElement) domElement.style.imageRendering = 'auto';\n\t\t});\n\t}\n}\n","import { DestroyRef, Directive, effect, inject } from '@angular/core';\nimport { injectStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-events' })\nexport class NgtsAdaptiveEvents {\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst currentEnabled = store.snapshot.events.enabled;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst current = store.performance.current();\n\t\t\tonCleanup(() => store.snapshot.setEvents({ enabled: current === 1 }));\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tstore.snapshot.setEvents({ enabled: currentEnabled });\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, injectBeforeRender, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { LOD } from 'three';\n\nexport interface NgtsDetailedOptions extends Partial<NgtThreeElements['ngt-lOD']> {\n\thysteresis: number;\n}\n\nconst defaultOptions: NgtsDetailedOptions = {\n\thysteresis: 0,\n};\n\n@Component({\n\tselector: 'ngts-detailed',\n\ttemplate: `\n\t\t<ngt-lOD #lod [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-lOD>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsDetailed {\n\tdistances = input.required<number[]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['hysteresis']);\n\n\tlodRef = viewChild.required<ElementRef<THREE.LOD>>('lod');\n\tprivate hysteresis = pick(this.options, 'hysteresis');\n\n\tconstructor() {\n\t\textend({ LOD });\n\n\t\teffect(() => {\n\t\t\tconst lod = this.lodRef().nativeElement;\n\t\t\tconst instanceState = getInstanceState(lod);\n\t\t\tif (!instanceState) return;\n\t\t\tconst [, distances, hysteresis] = [instanceState.objects(), this.distances(), this.hysteresis()];\n\t\t\tlod.levels.length = 0;\n\t\t\tlod.children.forEach((object, index) => {\n\t\t\t\tlod.levels.push({ object, distance: distances[index], hysteresis });\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tthis.lodRef().nativeElement.update(camera);\n\t\t});\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport { NgtThreeElement, resolveRef } from 'angular-three';\nimport * as THREE from 'three';\n\nexport type NgtPositionMesh = NgtThreeElement<typeof PositionMesh>;\n\nconst _instanceLocalMatrix = new THREE.Matrix4();\nconst _instanceWorldMatrix = new THREE.Matrix4();\nconst _instanceIntersects: THREE.Intersection[] = [];\nconst _mesh = new THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicMaterial>();\n\nexport class PositionMesh extends THREE.Group {\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.InstancedMesh> | THREE.InstancedMesh | null | undefined;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = undefined;\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn resolveRef(this.instance)?.geometry;\n\t}\n\n\t// And this will allow the virtual instance to receive events\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = resolveRef(this.instance);\n\t\tif (!parent) return;\n\t\tif (!parent.geometry || !parent.material) return;\n\t\t_mesh.geometry = parent.geometry;\n\t\tconst matrixWorld = parent.matrixWorld;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.count) return;\n\t\t// calculate the world matrix for each instance\n\t\tparent.getMatrixAt(instanceId, _instanceLocalMatrix);\n\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n\t\t// the mesh represents this single instance\n\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\t\t// raycast side according to instance material\n\t\tif (parent.material instanceof THREE.Material) _mesh.material.side = parent.material.side;\n\t\telse _mesh.material.side = parent.material[0].side;\n\t\t_mesh.raycast(raycaster, _instanceIntersects);\n\t\t// process the result of raycast\n\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\tintersect.instanceId = instanceId;\n\t\t\tintersect.object = this;\n\t\t\tintersects.push(intersect);\n\t\t}\n\t\t_instanceIntersects.length = 0;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t * @rawOptions instance|color\n\t\t */\n\t\t'ngt-position-mesh': NgtPositionMesh;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, injectBeforeRender, NgtThreeElements, omit, pick, resolveRef } from 'angular-three';\nimport { setUpdateRange } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { InstancedBufferAttribute, InstancedMesh } from 'three';\nimport { NgtPositionMesh, PositionMesh } from './position-mesh';\n\nconst parentMatrix = new THREE.Matrix4();\nconst instanceMatrix = new THREE.Matrix4();\nconst tempMatrix = new THREE.Matrix4();\nconst translation = new THREE.Vector3();\nconst rotation = new THREE.Quaternion();\nconst scale = new THREE.Vector3();\n\n@Component({\n\tselector: 'ngts-instance',\n\ttemplate: `\n\t\t<ngt-position-mesh #positionMesh [instance]=\"instances.instancedMeshRef()\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-position-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsInstance {\n\toptions = input({} as Partial<NgtPositionMesh>);\n\n\tprotected instances = inject(NgtsInstances);\n\n\tpositionMeshRef = viewChild.required<ElementRef<PositionMesh>>('positionMesh');\n\n\tconstructor() {\n\t\textend({ PositionMesh });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.instances.subscribe(this.positionMeshRef().nativeElement);\n\t\t\tonCleanup(() => cleanup());\n\t\t});\n\t}\n}\n\nexport interface NgtsInstancesOptions extends Partial<NgtThreeElements['ngt-instanced-mesh']> {\n\trange?: number;\n\tlimit: number;\n\tframes: number;\n}\n\nconst defaultOptions: NgtsInstancesOptions = {\n\tlimit: 1000,\n\tframes: Infinity,\n};\n\n@Component({\n\tselector: 'ngts-instances',\n\ttemplate: `\n\t\t<ngt-instanced-mesh\n\t\t\t#instancedMesh\n\t\t\t[userData]=\"{ instances }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"null\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceMatrix\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t[count]=\"buffers().matrices.length / 16\"\n\t\t\t\t[array]=\"buffers().matrices\"\n\t\t\t\t[itemSize]=\"16\"\n\t\t\t/>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceColor\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t[count]=\"buffers().colors.length / 3\"\n\t\t\t\t[array]=\"buffers().colors\"\n\t\t\t\t[itemSize]=\"3\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-instanced-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsInstances {\n\tprotected readonly DynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['limit', 'frames', 'range']);\n\n\tinstancedMeshRef = viewChild.required<ElementRef<THREE.InstancedMesh>>('instancedMesh');\n\n\tprivate limit = pick(this.options, 'limit');\n\n\tprotected buffers = computed(() => {\n\t\tconst limit = this.limit();\n\t\tconst matrices = new Float32Array(limit * 16);\n\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\ttempMatrix.identity().toArray(matrices, i * 16);\n\t\t}\n\n\t\tconst colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);\n\t\treturn { matrices, colors };\n\t});\n\n\tinstances: Array<ElementRef<PositionMesh> | PositionMesh> = [];\n\n\tconstructor() {\n\t\textend({ InstancedMesh, InstancedBufferAttribute });\n\n\t\teffect(() => {\n\t\t\tconst instancedMesh = this.instancedMeshRef()?.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t});\n\n\t\tlet iterations = 0;\n\t\tlet count = 0;\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst instancedMesh = this.instancedMeshRef()?.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tconst { frames, limit, range } = this.options();\n\t\t\tconst { matrices, colors } = this.buffers();\n\t\t\tif (frames === Infinity || iterations < frames) {\n\t\t\t\tinstancedMesh.updateMatrix();\n\t\t\t\tinstancedMesh.updateMatrixWorld();\n\t\t\t\tparentMatrix.copy(instancedMesh.matrixWorld).invert();\n\n\t\t\t\tcount = Math.min(limit, range !== undefined ? range : limit, this.instances.length);\n\t\t\t\tinstancedMesh.count = count;\n\t\t\t\tsetUpdateRange(instancedMesh.instanceMatrix, { offset: 0, count: count * 16 });\n\t\t\t\tif (instancedMesh.instanceColor) {\n\t\t\t\t\tsetUpdateRange(instancedMesh.instanceColor, { offset: 0, count: count * 3 });\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < this.instances.length; i++) {\n\t\t\t\t\tconst instance = resolveRef(this.instances[i]);\n\t\t\t\t\tif (instance) {\n\t\t\t\t\t\t// Multiply the inverse of the InstancedMesh world matrix or else\n\t\t\t\t\t\t// Instances will be double-transformed if <Instances> isn't at identity\n\t\t\t\t\t\tinstance.matrixWorld.decompose(translation, rotation, scale);\n\t\t\t\t\t\tinstanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);\n\t\t\t\t\t\tinstanceMatrix.toArray(matrices, i * 16);\n\t\t\t\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t\t\t\t\tinstance.color.toArray(colors, i * 3);\n\t\t\t\t\t\tcheckUpdate(instancedMesh.instanceColor);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\titerations++;\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<PositionMesh> | PositionMesh) {\n\t\tthis.instances.push(ref);\n\t\treturn () => {\n\t\t\tthis.instances = this.instances.filter((i) => i !== ref);\n\t\t};\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport { NgtThreeElement, resolveRef } from 'angular-three';\nimport * as THREE from 'three';\n\nexport type NgtPositionPoint = NgtThreeElement<typeof PositionPoint>;\n\nconst _inverseMatrix = new THREE.Matrix4();\nconst _ray = new THREE.Ray();\nconst _sphere = new THREE.Sphere();\nconst _position = new THREE.Vector3();\n\nexport class PositionPoint extends THREE.Group {\n\tsize: number;\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.Points> | THREE.Points | null | undefined;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.size = 0;\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = undefined;\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn resolveRef(this.instance)?.geometry;\n\t}\n\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = resolveRef(this.instance);\n\t\tif (!parent || !parent.geometry) return;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.geometry.drawRange.count) return;\n\n\t\tconst threshold = raycaster.params.Points?.threshold ?? 1;\n\t\t_sphere.set(this.getWorldPosition(_position), threshold);\n\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return;\n\n\t\t_inverseMatrix.copy(parent.matrixWorld).invert();\n\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(this.position);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new THREE.Vector3();\n\t\t\t_ray.closestPointToPoint(this.position, intersectPoint);\n\t\t\tintersectPoint.applyMatrix4(this.matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: instanceId,\n\t\t\t\tface: null,\n\t\t\t\tobject: this,\n\t\t\t});\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t * @rawOptions instance|color|size\n\t\t */\n\t\t'ngt-position-point': NgtPositionPoint;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, injectBeforeRender, NgtThreeElements, omit, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\nimport { NgtPositionPoint, PositionPoint } from './position-point';\n\n@Component({\n\tselector: 'ngts-point',\n\ttemplate: `\n\t\t<ngt-position-point #positionPoint [parameters]=\"options()\" [instance]=\"points.pointsRef()\">\n\t\t\t<ng-content />\n\t\t</ngt-position-point>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPoint {\n\toptions = input({} as Partial<NgtPositionPoint>);\n\n\tpositionPointRef = viewChild.required<ElementRef<PositionPoint>>('positionPoint');\n\n\tprotected points = inject(NgtsPointsInstances);\n\n\tconstructor() {\n\t\textend({ PositionPoint });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanUp = this.points.subscribe(this.positionPointRef().nativeElement);\n\t\t\tonCleanup(() => cleanUp());\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points-buffer',\n\ttemplate: `\n\t\t<ngt-points #points [parameters]=\"options()\">\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"positions().length / stride()\"\n\t\t\t\t\t[array]=\"positions()\"\n\t\t\t\t\t[itemSize]=\"stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t@if (colors(); as colors) {\n\t\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t\t[count]=\"colors.length / stride()\"\n\t\t\t\t\t\t[array]=\"colors\"\n\t\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\t@if (sizes(); as sizes) {\n\t\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t\t[count]=\"sizes.length / stride()\"\n\t\t\t\t\t\t[array]=\"sizes\"\n\t\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPointsBuffer {\n\tpositions = input.required<Float32Array>();\n\tcolors = input<Float32Array>();\n\tsizes = input<Float32Array>();\n\tstride = input<2 | 3>(3);\n\toptions = input({} as Partial<NgtPositionPoint>);\n\n\tpointsRef = viewChild.required<ElementRef<THREE.Points>>('points');\n\n\tconstructor() {\n\t\textend({ Points, BufferAttribute, BufferGeometry });\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\n\t\t\tconst attributes = points.geometry.attributes;\n\t\t\tcheckUpdate(attributes['position']);\n\t\t\tif (this.colors()) checkUpdate(attributes['color']);\n\t\t\tif (this.sizes()) checkUpdate(attributes['size']);\n\t\t});\n\t}\n\n\tprotected readonly DynamicDrawUsage = THREE.DynamicDrawUsage;\n}\n\nconst parentMatrix = new THREE.Matrix4();\nconst position = new THREE.Vector3();\n\nexport interface NgtsPointsInstancesOptions extends Partial<NgtThreeElements['ngt-points']> {\n\trange?: number;\n\tlimit: number;\n}\n\nconst defaultInstancesOptions: NgtsPointsInstancesOptions = { limit: 1000 };\n\n@Component({\n\tselector: 'ngts-points-instances',\n\ttemplate: `\n\t\t<ngt-points\n\t\t\t#points\n\t\t\t[userData]=\"{ instances: positionPoints }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"null\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"buffers().positions.length / 3\"\n\t\t\t\t\t[array]=\"buffers().positions\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"buffers().colors.length / 3\"\n\t\t\t\t\t[array]=\"buffers().colors\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"buffers().sizes.length\"\n\t\t\t\t\t[array]=\"buffers().sizes\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPointsInstances {\n\toptions = input(defaultInstancesOptions, { transform: mergeInputs(defaultInstancesOptions) });\n\tparameters = omit(this.options, ['limit', 'range']);\n\n\tpointsRef = viewChild.required<ElementRef<THREE.Points>>('points');\n\n\tprivate limit = pick(this.options, 'limit');\n\n\tbuffers = computed(() => {\n\t\tconst limit = this.limit();\n\n\t\treturn {\n\t\t\tpositions: new Float32Array(limit * 3),\n\t\t\tcolors: Float32Array.from({ length: limit * 3 }, () => 1),\n\t\t\tsizes: Float32Array.from({ length: limit }, () => 1),\n\t\t};\n\t});\n\n\tpositionPoints: Array<ElementRef<PositionPoint> | PositionPoint> = [];\n\n\tconstructor() {\n\t\textend({ Points, BufferAttribute, BufferGeometry });\n\n\t\teffect(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\n\t\t\tconst { limit, range } = this.options();\n\t\t\tconst { positions, sizes, colors } = this.buffers();\n\n\t\t\tpoints.updateMatrix();\n\t\t\tpoints.updateMatrixWorld();\n\t\t\tparentMatrix.copy(points.matrixWorld).invert();\n\n\t\t\tpoints.geometry.drawRange.count = Math.min(\n\t\t\t\tlimit,\n\t\t\t\trange !== undefined ? range : limit,\n\t\t\t\tthis.positionPoints.length,\n\t\t\t);\n\n\t\t\tfor (let i = 0; i < this.positionPoints.length; i++) {\n\t\t\t\tconst positionPoint = resolveRef(this.positionPoints[i]);\n\t\t\t\tif (positionPoint) {\n\t\t\t\t\tpositionPoint.getWorldPosition(position).applyMatrix4(parentMatrix);\n\t\t\t\t\tposition.toArray(positions, i * 3);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\n\t\t\t\t\tpositionPoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\tpositionPoint.color.toArray(colors, i * 3);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['color']);\n\n\t\t\t\t\tsizes.set([positionPoint.size], i);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['size']);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<PositionPoint> | PositionPoint) {\n\t\tthis.positionPoints.push(ref);\n\t\treturn () => {\n\t\t\tthis.positionPoints = this.positionPoints.filter((p) => p !== ref);\n\t\t};\n\t}\n\n\tprotected readonly DynamicDrawUsage = THREE.DynamicDrawUsage;\n}\n","import { NgtThreeElement } from 'angular-three';\nimport * as THREE from 'three';\n\nexport type NgtSegmentObject = NgtThreeElement<typeof SegmentObject>;\n\nexport class SegmentObject {\n\tcolor: THREE.Color;\n\tstart: THREE.Vector3;\n\tend: THREE.Vector3;\n\n\tconstructor() {\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.start = new THREE.Vector3(0, 0, 0);\n\t\tthis.end = new THREE.Vector3(0, 0, 0);\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @rawOptions start|color|end\n\t\t */\n\t\t'ngt-segment-object': NgtSegmentObject;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtArgs, NgtVector3, omit, pick, resolveRef, vector3 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Line2, LineMaterial, LineMaterialParameters, LineSegmentsGeometry } from 'three-stdlib';\nimport { SegmentObject } from './segment-object';\n\n@Component({\n\tselector: 'ngts-segment',\n\ttemplate: `\n\t\t<ngt-segment-object #segment [color]=\"color()\" [start]=\"normalizedStart()\" [end]=\"normalizedEnd()\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSegment {\n\tstart = input.required<NgtVector3>();\n\tend = input.required<NgtVector3>();\n\tcolor = input<THREE.ColorRepresentation>();\n\n\tprotected normalizedStart = vector3(this.start);\n\tprotected normalizedEnd = vector3(this.end);\n\n\tsegmentRef = viewChild.required<ElementRef<SegmentObject>>('segment');\n\n\tprivate segments = inject(NgtsSegments);\n\n\tconstructor() {\n\t\textend({ SegmentObject });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanUp = this.segments.subscribe(this.segmentRef());\n\t\t\tonCleanup(() => cleanUp());\n\t\t});\n\t}\n}\n\nexport interface NgtsSegmentsOptions extends LineMaterialParameters {\n\tlimit: number;\n\tlineWidth: number;\n}\n\nconst defaultSegmentsOptions: NgtsSegmentsOptions = {\n\tlimit: 1000,\n\tlineWidth: 1.0,\n};\n\n@Component({\n\tselector: 'ngts-segments',\n\ttemplate: `\n\t\t<ngt-primitive #line *args=\"[line]\">\n\t\t\t<ngt-primitive *args=\"[geometry]\" attach=\"geometry\" />\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\" [parameters]=\"materialParameters()\" />\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsSegments {\n\toptions = input(defaultSegmentsOptions, { transform: mergeInputs(defaultSegmentsOptions) });\n\tprivate parameters = omit(this.options, ['limit', 'lineWidth']);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate limit = pick(this.options, 'limit');\n\n\tlineRef = viewChild<ElementRef<Line2>>('line');\n\n\tsegments: Array<ElementRef<SegmentObject> | SegmentObject> = [];\n\n\tprotected line = new Line2();\n\tprotected material = new LineMaterial();\n\tprotected geometry = new LineSegmentsGeometry();\n\tprivate resolution = new THREE.Vector2(512, 512);\n\n\tprotected materialParameters = computed(() => ({\n\t\tvertexColors: true,\n\t\tresolution: this.resolution,\n\t\tlinewidth: this.lineWidth(),\n\t\t...this.parameters(),\n\t}));\n\n\tprivate positions = computed(() => {\n\t\tconst limit = this.limit();\n\t\treturn Array.from({ length: limit * 6 }, () => 0);\n\t});\n\n\tprivate colors = computed(() => {\n\t\tconst limit = this.limit();\n\t\treturn Array.from({ length: limit * 6 }, () => 0);\n\t});\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [limit, positions, colors] = [this.limit(), this.positions(), this.colors()];\n\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst segment = resolveRef(this.segments[i]);\n\t\t\t\tif (segment) {\n\t\t\t\t\tpositions[i * 6 + 0] = segment.start.x;\n\t\t\t\t\tpositions[i * 6 + 1] = segment.start.y;\n\t\t\t\t\tpositions[i * 6 + 2] = segment.start.z;\n\n\t\t\t\t\tpositions[i * 6 + 3] = segment.end.x;\n\t\t\t\t\tpositions[i * 6 + 4] = segment.end.y;\n\t\t\t\t\tpositions[i * 6 + 5] = segment.end.z;\n\n\t\t\t\t\tcolors[i * 6 + 0] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 1] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 2] = segment.color.b;\n\n\t\t\t\t\tcolors[i * 6 + 3] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 4] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 5] = segment.color.b;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.geometry.setColors(colors);\n\t\t\tthis.geometry.setPositions(positions);\n\t\t\tthis.line.computeLineDistances();\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<SegmentObject> | SegmentObject) {\n\t\tthis.segments.push(ref);\n\t\treturn () => {\n\t\t\tthis.segments = this.segments.filter((i) => i !== ref);\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","parentMatrix"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-performances.mjs","sources":["../../../../libs/soba/performances/src/lib/adaptive-dpr.ts","../../../../libs/soba/performances/src/lib/adaptive-events.ts","../../../../libs/soba/performances/src/lib/detailed.ts","../../../../libs/soba/performances/src/lib/instances/position-mesh.ts","../../../../libs/soba/performances/src/lib/instances/instances.ts","../../../../libs/soba/performances/src/lib/points/position-point.ts","../../../../libs/soba/performances/src/lib/points/points.ts","../../../../libs/soba/performances/src/lib/segments/segment-object.ts","../../../../libs/soba/performances/src/lib/segments/segments.ts","../../../../libs/soba/performances/src/angular-three-soba-performances.ts"],"sourcesContent":["import { booleanAttribute, DestroyRef, Directive, effect, inject, input, untracked } from '@angular/core';\nimport { injectStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-dpr' })\nexport class NgtsAdaptiveDpr {\n\tpixelated = input(false, { transform: booleanAttribute });\n\n\tconstructor() {\n\t\tconst store = injectStore();\n\n\t\teffect(() => {\n\t\t\tconst [current, pixelated, domElement, setDpr, initialDpr] = [\n\t\t\t\tstore.performance.current(),\n\t\t\t\tuntracked(this.pixelated),\n\t\t\t\tstore.snapshot.gl.domElement,\n\t\t\t\tstore.snapshot.setDpr,\n\t\t\t\tstore.snapshot.viewport.initialDpr,\n\t\t\t];\n\n\t\t\tsetDpr(current * initialDpr);\n\t\t\tif (pixelated && domElement) domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst [domElement, active, setDpr, initialDpr, pixelated] = [\n\t\t\t\tstore.snapshot.gl.domElement,\n\t\t\t\tstore.snapshot.internal.active,\n\t\t\t\tstore.snapshot.setDpr,\n\t\t\t\tstore.snapshot.viewport.initialDpr,\n\t\t\t\tuntracked(this.pixelated),\n\t\t\t];\n\n\t\t\tif (active) setDpr(initialDpr);\n\t\t\tif (pixelated && domElement) domElement.style.imageRendering = 'auto';\n\t\t});\n\t}\n}\n","import { DestroyRef, Directive, effect, inject } from '@angular/core';\nimport { injectStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-events' })\nexport class NgtsAdaptiveEvents {\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst currentEnabled = store.snapshot.events.enabled;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst current = store.performance.current();\n\t\t\tonCleanup(() => store.snapshot.setEvents({ enabled: current === 1 }));\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tstore.snapshot.setEvents({ enabled: currentEnabled });\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, injectBeforeRender, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { LOD } from 'three';\n\nexport interface NgtsDetailedOptions extends Partial<NgtThreeElements['ngt-lOD']> {\n\thysteresis: number;\n}\n\nconst defaultOptions: NgtsDetailedOptions = {\n\thysteresis: 0,\n};\n\n@Component({\n\tselector: 'ngts-detailed',\n\ttemplate: `\n\t\t<ngt-lOD #lod [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-lOD>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsDetailed {\n\tdistances = input.required<number[]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['hysteresis']);\n\n\tlodRef = viewChild.required<ElementRef<THREE.LOD>>('lod');\n\tprivate hysteresis = pick(this.options, 'hysteresis');\n\n\tconstructor() {\n\t\textend({ LOD });\n\n\t\teffect(() => {\n\t\t\tconst lod = this.lodRef().nativeElement;\n\t\t\tconst instanceState = getInstanceState(lod);\n\t\t\tif (!instanceState) return;\n\t\t\tconst [, distances, hysteresis] = [instanceState.objects(), this.distances(), this.hysteresis()];\n\t\t\tlod.levels.length = 0;\n\t\t\tlod.children.forEach((object, index) => {\n\t\t\t\tlod.levels.push({ object, distance: distances[index], hysteresis });\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tthis.lodRef().nativeElement.update(camera);\n\t\t});\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport { NgtThreeElement, resolveRef } from 'angular-three';\nimport * as THREE from 'three';\n\nexport type NgtPositionMesh = NgtThreeElement<typeof PositionMesh>;\n\nconst _instanceLocalMatrix = new THREE.Matrix4();\nconst _instanceWorldMatrix = new THREE.Matrix4();\nconst _instanceIntersects: THREE.Intersection[] = [];\nconst _mesh = new THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicMaterial>();\n\nexport class PositionMesh extends THREE.Group {\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.InstancedMesh> | THREE.InstancedMesh | null | undefined;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = undefined;\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn resolveRef(this.instance)?.geometry;\n\t}\n\n\t// And this will allow the virtual instance to receive events\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = resolveRef(this.instance);\n\t\tif (!parent) return;\n\t\tif (!parent.geometry || !parent.material) return;\n\t\t_mesh.geometry = parent.geometry;\n\t\tconst matrixWorld = parent.matrixWorld;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.count) return;\n\t\t// calculate the world matrix for each instance\n\t\tparent.getMatrixAt(instanceId, _instanceLocalMatrix);\n\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n\t\t// the mesh represents this single instance\n\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\t\t// raycast side according to instance material\n\t\tif (parent.material instanceof THREE.Material) _mesh.material.side = parent.material.side;\n\t\telse _mesh.material.side = parent.material[0].side;\n\t\t_mesh.raycast(raycaster, _instanceIntersects);\n\t\t// process the result of raycast\n\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\tintersect.instanceId = instanceId;\n\t\t\tintersect.object = this;\n\t\t\tintersects.push(intersect);\n\t\t}\n\t\t_instanceIntersects.length = 0;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t * @rawOptions instance|color\n\t\t */\n\t\t'ngt-position-mesh': NgtPositionMesh;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, injectBeforeRender, NgtThreeElements, omit, pick, resolveRef } from 'angular-three';\nimport { setUpdateRange } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { InstancedBufferAttribute, InstancedMesh } from 'three';\nimport { NgtPositionMesh, PositionMesh } from './position-mesh';\n\nconst parentMatrix = new THREE.Matrix4();\nconst instanceMatrix = new THREE.Matrix4();\nconst tempMatrix = new THREE.Matrix4();\nconst translation = new THREE.Vector3();\nconst rotation = new THREE.Quaternion();\nconst scale = new THREE.Vector3();\n\n@Component({\n\tselector: 'ngts-instance',\n\ttemplate: `\n\t\t<ngt-position-mesh #positionMesh [instance]=\"instances.instancedMeshRef()\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-position-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsInstance {\n\toptions = input({} as Partial<NgtPositionMesh>);\n\n\tprotected instances = inject(NgtsInstances);\n\n\tpositionMeshRef = viewChild.required<ElementRef<PositionMesh>>('positionMesh');\n\n\tconstructor() {\n\t\textend({ PositionMesh });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.instances.subscribe(this.positionMeshRef().nativeElement);\n\t\t\tonCleanup(() => cleanup());\n\t\t});\n\t}\n}\n\nexport interface NgtsInstancesOptions extends Partial<NgtThreeElements['ngt-instanced-mesh']> {\n\trange?: number;\n\tlimit: number;\n\tframes: number;\n}\n\nconst defaultOptions: NgtsInstancesOptions = {\n\tlimit: 1000,\n\tframes: Infinity,\n};\n\n@Component({\n\tselector: 'ngts-instances',\n\ttemplate: `\n\t\t<ngt-instanced-mesh\n\t\t\t#instancedMesh\n\t\t\t[userData]=\"{ instances }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"null\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceMatrix\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t[count]=\"buffers().matrices.length / 16\"\n\t\t\t\t[array]=\"buffers().matrices\"\n\t\t\t\t[itemSize]=\"16\"\n\t\t\t/>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceColor\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t[count]=\"buffers().colors.length / 3\"\n\t\t\t\t[array]=\"buffers().colors\"\n\t\t\t\t[itemSize]=\"3\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-instanced-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsInstances {\n\tprotected readonly DynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['limit', 'frames', 'range']);\n\n\tinstancedMeshRef = viewChild.required<ElementRef<THREE.InstancedMesh>>('instancedMesh');\n\n\tprivate limit = pick(this.options, 'limit');\n\n\tprotected buffers = computed(() => {\n\t\tconst limit = this.limit();\n\t\tconst matrices = new Float32Array(limit * 16);\n\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\ttempMatrix.identity().toArray(matrices, i * 16);\n\t\t}\n\n\t\tconst colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);\n\t\treturn { matrices, colors };\n\t});\n\n\tinstances: Array<ElementRef<PositionMesh> | PositionMesh> = [];\n\n\tconstructor() {\n\t\textend({ InstancedMesh, InstancedBufferAttribute });\n\n\t\teffect(() => {\n\t\t\tconst instancedMesh = this.instancedMeshRef()?.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t});\n\n\t\tlet iterations = 0;\n\t\tlet count = 0;\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst instancedMesh = this.instancedMeshRef()?.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tconst { frames, limit, range } = this.options();\n\t\t\tconst { matrices, colors } = this.buffers();\n\t\t\tif (frames === Infinity || iterations < frames) {\n\t\t\t\tinstancedMesh.updateMatrix();\n\t\t\t\tinstancedMesh.updateMatrixWorld();\n\t\t\t\tparentMatrix.copy(instancedMesh.matrixWorld).invert();\n\n\t\t\t\tcount = Math.min(limit, range !== undefined ? range : limit, this.instances.length);\n\t\t\t\tinstancedMesh.count = count;\n\t\t\t\tsetUpdateRange(instancedMesh.instanceMatrix, { offset: 0, count: count * 16 });\n\t\t\t\tif (instancedMesh.instanceColor) {\n\t\t\t\t\tsetUpdateRange(instancedMesh.instanceColor, { offset: 0, count: count * 3 });\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < this.instances.length; i++) {\n\t\t\t\t\tconst instance = resolveRef(this.instances[i]);\n\t\t\t\t\tif (instance) {\n\t\t\t\t\t\t// Multiply the inverse of the InstancedMesh world matrix or else\n\t\t\t\t\t\t// Instances will be double-transformed if <Instances> isn't at identity\n\t\t\t\t\t\tinstance.matrixWorld.decompose(translation, rotation, scale);\n\t\t\t\t\t\tinstanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);\n\t\t\t\t\t\tinstanceMatrix.toArray(matrices, i * 16);\n\t\t\t\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t\t\t\t\tinstance.color.toArray(colors, i * 3);\n\t\t\t\t\t\tcheckUpdate(instancedMesh.instanceColor);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\titerations++;\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<PositionMesh> | PositionMesh) {\n\t\tthis.instances.push(ref);\n\t\treturn () => {\n\t\t\tthis.instances = this.instances.filter((i) => i !== ref);\n\t\t};\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport { NgtThreeElement, resolveRef } from 'angular-three';\nimport * as THREE from 'three';\n\nexport type NgtPositionPoint = NgtThreeElement<typeof PositionPoint>;\n\nconst _inverseMatrix = new THREE.Matrix4();\nconst _ray = new THREE.Ray();\nconst _sphere = new THREE.Sphere();\nconst _position = new THREE.Vector3();\n\nexport class PositionPoint extends THREE.Group {\n\tsize: number;\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.Points> | THREE.Points | null | undefined;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.size = 0;\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = undefined;\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn resolveRef(this.instance)?.geometry;\n\t}\n\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = resolveRef(this.instance);\n\t\tif (!parent || !parent.geometry) return;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.geometry.drawRange.count) return;\n\n\t\tconst threshold = raycaster.params.Points?.threshold ?? 1;\n\t\t_sphere.set(this.getWorldPosition(_position), threshold);\n\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return;\n\n\t\t_inverseMatrix.copy(parent.matrixWorld).invert();\n\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(this.position);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new THREE.Vector3();\n\t\t\t_ray.closestPointToPoint(this.position, intersectPoint);\n\t\t\tintersectPoint.applyMatrix4(this.matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: instanceId,\n\t\t\t\tface: null,\n\t\t\t\tobject: this,\n\t\t\t});\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t * @rawOptions instance|color|size\n\t\t */\n\t\t'ngt-position-point': NgtPositionPoint;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, injectBeforeRender, NgtThreeElements, omit, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\nimport { NgtPositionPoint, PositionPoint } from './position-point';\n\n@Component({\n\tselector: 'ngts-point',\n\ttemplate: `\n\t\t<ngt-position-point #positionPoint [parameters]=\"options()\" [instance]=\"points.pointsRef()\">\n\t\t\t<ng-content />\n\t\t</ngt-position-point>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPoint {\n\toptions = input({} as Partial<NgtPositionPoint>);\n\n\tpositionPointRef = viewChild.required<ElementRef<PositionPoint>>('positionPoint');\n\n\tprotected points = inject(NgtsPointsInstances);\n\n\tconstructor() {\n\t\textend({ PositionPoint });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanUp = this.points.subscribe(this.positionPointRef().nativeElement);\n\t\t\tonCleanup(() => cleanUp());\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points-buffer',\n\ttemplate: `\n\t\t<ngt-points #points [parameters]=\"options()\">\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"positions().length / stride()\"\n\t\t\t\t\t[array]=\"positions()\"\n\t\t\t\t\t[itemSize]=\"stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t@if (colors(); as colors) {\n\t\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t\t[count]=\"colors.length / stride()\"\n\t\t\t\t\t\t[array]=\"colors\"\n\t\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\t@if (sizes(); as sizes) {\n\t\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t\t[count]=\"sizes.length / stride()\"\n\t\t\t\t\t\t[array]=\"sizes\"\n\t\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPointsBuffer {\n\tpositions = input.required<Float32Array>();\n\tcolors = input<Float32Array>();\n\tsizes = input<Float32Array>();\n\tstride = input<2 | 3>(3);\n\toptions = input({} as Partial<NgtPositionPoint>);\n\n\tpointsRef = viewChild.required<ElementRef<THREE.Points>>('points');\n\n\tconstructor() {\n\t\textend({ Points, BufferAttribute, BufferGeometry });\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\n\t\t\tconst attributes = points.geometry.attributes;\n\t\t\tcheckUpdate(attributes['position']);\n\t\t\tif (this.colors()) checkUpdate(attributes['color']);\n\t\t\tif (this.sizes()) checkUpdate(attributes['size']);\n\t\t});\n\t}\n\n\tprotected readonly DynamicDrawUsage = THREE.DynamicDrawUsage;\n}\n\nconst parentMatrix = new THREE.Matrix4();\nconst position = new THREE.Vector3();\n\nexport interface NgtsPointsInstancesOptions extends Partial<NgtThreeElements['ngt-points']> {\n\trange?: number;\n\tlimit: number;\n}\n\nconst defaultInstancesOptions: NgtsPointsInstancesOptions = { limit: 1000 };\n\n@Component({\n\tselector: 'ngts-points-instances',\n\ttemplate: `\n\t\t<ngt-points\n\t\t\t#points\n\t\t\t[userData]=\"{ instances: positionPoints }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"null\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"buffers().positions.length / 3\"\n\t\t\t\t\t[array]=\"buffers().positions\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"buffers().colors.length / 3\"\n\t\t\t\t\t[array]=\"buffers().colors\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"buffers().sizes.length\"\n\t\t\t\t\t[array]=\"buffers().sizes\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPointsInstances {\n\toptions = input(defaultInstancesOptions, { transform: mergeInputs(defaultInstancesOptions) });\n\tparameters = omit(this.options, ['limit', 'range']);\n\n\tpointsRef = viewChild.required<ElementRef<THREE.Points>>('points');\n\n\tprivate limit = pick(this.options, 'limit');\n\n\tbuffers = computed(() => {\n\t\tconst limit = this.limit();\n\n\t\treturn {\n\t\t\tpositions: new Float32Array(limit * 3),\n\t\t\tcolors: Float32Array.from({ length: limit * 3 }, () => 1),\n\t\t\tsizes: Float32Array.from({ length: limit }, () => 1),\n\t\t};\n\t});\n\n\tpositionPoints: Array<ElementRef<PositionPoint> | PositionPoint> = [];\n\n\tconstructor() {\n\t\textend({ Points, BufferAttribute, BufferGeometry });\n\n\t\teffect(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\n\t\t\tconst { limit, range } = this.options();\n\t\t\tconst { positions, sizes, colors } = this.buffers();\n\n\t\t\tpoints.updateMatrix();\n\t\t\tpoints.updateMatrixWorld();\n\t\t\tparentMatrix.copy(points.matrixWorld).invert();\n\n\t\t\tpoints.geometry.drawRange.count = Math.min(\n\t\t\t\tlimit,\n\t\t\t\trange !== undefined ? range : limit,\n\t\t\t\tthis.positionPoints.length,\n\t\t\t);\n\n\t\t\tfor (let i = 0; i < this.positionPoints.length; i++) {\n\t\t\t\tconst positionPoint = resolveRef(this.positionPoints[i]);\n\t\t\t\tif (positionPoint) {\n\t\t\t\t\tpositionPoint.getWorldPosition(position).applyMatrix4(parentMatrix);\n\t\t\t\t\tposition.toArray(positions, i * 3);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\n\t\t\t\t\tpositionPoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\tpositionPoint.color.toArray(colors, i * 3);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['color']);\n\n\t\t\t\t\tsizes.set([positionPoint.size], i);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['size']);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<PositionPoint> | PositionPoint) {\n\t\tthis.positionPoints.push(ref);\n\t\treturn () => {\n\t\t\tthis.positionPoints = this.positionPoints.filter((p) => p !== ref);\n\t\t};\n\t}\n\n\tprotected readonly DynamicDrawUsage = THREE.DynamicDrawUsage;\n}\n","import { NgtThreeElement } from 'angular-three';\nimport * as THREE from 'three';\n\nexport type NgtSegmentObject = NgtThreeElement<typeof SegmentObject>;\n\nexport class SegmentObject {\n\tcolor: THREE.Color;\n\tstart: THREE.Vector3;\n\tend: THREE.Vector3;\n\n\tconstructor() {\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.start = new THREE.Vector3(0, 0, 0);\n\t\tthis.end = new THREE.Vector3(0, 0, 0);\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @rawOptions start|color|end\n\t\t */\n\t\t'ngt-segment-object': NgtSegmentObject;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtArgs, NgtVector3, omit, pick, resolveRef, vector3 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Line2, LineMaterial, LineMaterialParameters, LineSegmentsGeometry } from 'three-stdlib';\nimport { SegmentObject } from './segment-object';\n\n@Component({\n\tselector: 'ngts-segment',\n\ttemplate: `\n\t\t<ngt-segment-object #segment [color]=\"color()\" [start]=\"normalizedStart()\" [end]=\"normalizedEnd()\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSegment {\n\tstart = input.required<NgtVector3>();\n\tend = input.required<NgtVector3>();\n\tcolor = input<THREE.ColorRepresentation>();\n\n\tprotected normalizedStart = vector3(this.start);\n\tprotected normalizedEnd = vector3(this.end);\n\n\tsegmentRef = viewChild.required<ElementRef<SegmentObject>>('segment');\n\n\tprivate segments = inject(NgtsSegments);\n\n\tconstructor() {\n\t\textend({ SegmentObject });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanUp = this.segments.subscribe(this.segmentRef());\n\t\t\tonCleanup(() => cleanUp());\n\t\t});\n\t}\n}\n\nexport interface NgtsSegmentsOptions extends LineMaterialParameters {\n\tlimit: number;\n\tlineWidth: number;\n}\n\nconst defaultSegmentsOptions: NgtsSegmentsOptions = {\n\tlimit: 1000,\n\tlineWidth: 1.0,\n};\n\n@Component({\n\tselector: 'ngts-segments',\n\ttemplate: `\n\t\t<ngt-primitive #line *args=\"[line]\">\n\t\t\t<ngt-primitive *args=\"[geometry]\" attach=\"geometry\" />\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\" [parameters]=\"materialParameters()\" />\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsSegments {\n\toptions = input(defaultSegmentsOptions, { transform: mergeInputs(defaultSegmentsOptions) });\n\tprivate parameters = omit(this.options, ['limit', 'lineWidth']);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate limit = pick(this.options, 'limit');\n\n\tlineRef = viewChild<ElementRef<Line2>>('line');\n\n\tsegments: Array<ElementRef<SegmentObject> | SegmentObject> = [];\n\n\tprotected line = new Line2();\n\tprotected material = new LineMaterial();\n\tprotected geometry = new LineSegmentsGeometry();\n\tprivate resolution = new THREE.Vector2(512, 512);\n\n\tprotected materialParameters = computed(() => ({\n\t\tvertexColors: true,\n\t\tresolution: this.resolution,\n\t\tlinewidth: this.lineWidth(),\n\t\t...this.parameters(),\n\t}));\n\n\tprivate positions = computed(() => {\n\t\tconst limit = this.limit();\n\t\treturn Array.from({ length: limit * 6 }, () => 0);\n\t});\n\n\tprivate colors = computed(() => {\n\t\tconst limit = this.limit();\n\t\treturn Array.from({ length: limit * 6 }, () => 0);\n\t});\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [limit, positions, colors] = [this.limit(), this.positions(), this.colors()];\n\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst segment = resolveRef(this.segments[i]);\n\t\t\t\tif (segment) {\n\t\t\t\t\tpositions[i * 6 + 0] = segment.start.x;\n\t\t\t\t\tpositions[i * 6 + 1] = segment.start.y;\n\t\t\t\t\tpositions[i * 6 + 2] = segment.start.z;\n\n\t\t\t\t\tpositions[i * 6 + 3] = segment.end.x;\n\t\t\t\t\tpositions[i * 6 + 4] = segment.end.y;\n\t\t\t\t\tpositions[i * 6 + 5] = segment.end.z;\n\n\t\t\t\t\tcolors[i * 6 + 0] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 1] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 2] = segment.color.b;\n\n\t\t\t\t\tcolors[i * 6 + 3] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 4] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 5] = segment.color.b;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.geometry.setColors(colors);\n\t\t\tthis.geometry.setPositions(positions);\n\t\t\tthis.line.computeLineDistances();\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<SegmentObject> | SegmentObject) {\n\t\tthis.segments.push(ref);\n\t\treturn () => {\n\t\t\tthis.segments = this.segments.filter((i) => i !== ref);\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","parentMatrix"],"mappings":"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"}
@@ -36,7 +36,7 @@ export interface NgtsMeshPortalMaterialOptions extends Partial<NgtThreeElements[
36
36
  export declare class NgtsMeshPortalMaterial {
37
37
  attach: import("@angular/core").InputSignal<NgtAttachable>;
38
38
  options: import("@angular/core").InputSignalWithTransform<NgtsMeshPortalMaterialOptions, "" | Partial<NgtsMeshPortalMaterialOptions>>;
39
- protected parameters: import("@angular/core").Signal<Omit<NgtsMeshPortalMaterialOptions, "resolution" | "blur" | "worldUnits" | "eventPriority" | "renderPriority" | "events">>;
39
+ protected parameters: import("@angular/core").Signal<Omit<NgtsMeshPortalMaterialOptions, "resolution" | "blur" | "events" | "worldUnits" | "eventPriority" | "renderPriority">>;
40
40
  protected blur: import("@angular/core").Signal<number>;
41
41
  protected eventPriority: import("@angular/core").Signal<number>;
42
42
  protected renderPriority: import("@angular/core").Signal<number>;
@@ -20,7 +20,7 @@ export declare class NgtsMeshRefractionMaterial {
20
20
  envMap: import("@angular/core").InputSignal<THREE.Texture | THREE.CubeTexture>;
21
21
  attach: import("@angular/core").InputSignal<NgtAttachable>;
22
22
  options: import("@angular/core").InputSignalWithTransform<NgtsMeshRefractionMaterialOptions, "" | Partial<NgtsMeshRefractionMaterialOptions>>;
23
- protected parameters: import("@angular/core").Signal<Omit<NgtsMeshRefractionMaterialOptions, "fastChroma" | "aberrationStrength">>;
23
+ protected parameters: import("@angular/core").Signal<Omit<NgtsMeshRefractionMaterialOptions, "aberrationStrength" | "fastChroma">>;
24
24
  private fastChroma;
25
25
  protected aberrationStrength: import("@angular/core").Signal<number>;
26
26
  materialRef: import("@angular/core").Signal<ElementRef<THREE.ShaderMaterial & {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three-soba",
3
- "version": "4.0.0-next.10",
3
+ "version": "4.0.0-next.12",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -31,10 +31,22 @@
31
31
  "types": "./index.d.ts",
32
32
  "default": "./fesm2022/angular-three-soba.mjs"
33
33
  },
34
+ "./abstractions": {
35
+ "types": "./abstractions/index.d.ts",
36
+ "default": "./fesm2022/angular-three-soba-abstractions.mjs"
37
+ },
38
+ "./cameras": {
39
+ "types": "./cameras/index.d.ts",
40
+ "default": "./fesm2022/angular-three-soba-cameras.mjs"
41
+ },
34
42
  "./controls": {
35
43
  "types": "./controls/index.d.ts",
36
44
  "default": "./fesm2022/angular-three-soba-controls.mjs"
37
45
  },
46
+ "./gizmos": {
47
+ "types": "./gizmos/index.d.ts",
48
+ "default": "./fesm2022/angular-three-soba-gizmos.mjs"
49
+ },
38
50
  "./loaders": {
39
51
  "types": "./loaders/index.d.ts",
40
52
  "default": "./fesm2022/angular-three-soba-loaders.mjs"
@@ -43,26 +55,10 @@
43
55
  "types": "./materials/index.d.ts",
44
56
  "default": "./fesm2022/angular-three-soba-materials.mjs"
45
57
  },
46
- "./abstractions": {
47
- "types": "./abstractions/index.d.ts",
48
- "default": "./fesm2022/angular-three-soba-abstractions.mjs"
49
- },
50
- "./cameras": {
51
- "types": "./cameras/index.d.ts",
52
- "default": "./fesm2022/angular-three-soba-cameras.mjs"
53
- },
54
58
  "./misc": {
55
59
  "types": "./misc/index.d.ts",
56
60
  "default": "./fesm2022/angular-three-soba-misc.mjs"
57
61
  },
58
- "./shaders": {
59
- "types": "./shaders/index.d.ts",
60
- "default": "./fesm2022/angular-three-soba-shaders.mjs"
61
- },
62
- "./staging": {
63
- "types": "./staging/index.d.ts",
64
- "default": "./fesm2022/angular-three-soba-staging.mjs"
65
- },
66
62
  "./performances": {
67
63
  "types": "./performances/index.d.ts",
68
64
  "default": "./fesm2022/angular-three-soba-performances.mjs"
@@ -71,9 +67,13 @@
71
67
  "types": "./stats/index.d.ts",
72
68
  "default": "./fesm2022/angular-three-soba-stats.mjs"
73
69
  },
74
- "./gizmos": {
75
- "types": "./gizmos/index.d.ts",
76
- "default": "./fesm2022/angular-three-soba-gizmos.mjs"
70
+ "./shaders": {
71
+ "types": "./shaders/index.d.ts",
72
+ "default": "./fesm2022/angular-three-soba-shaders.mjs"
73
+ },
74
+ "./staging": {
75
+ "types": "./staging/index.d.ts",
76
+ "default": "./fesm2022/angular-three-soba-staging.mjs"
77
77
  },
78
78
  "./vanilla-exports": {
79
79
  "types": "./vanilla-exports/index.d.ts",
@@ -1,6 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class NgtsAdaptiveDpr {
3
- pixelated: import("@angular/core").InputSignal<boolean>;
3
+ pixelated: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
4
4
  constructor();
5
5
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsAdaptiveDpr, never>;
6
6
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgtsAdaptiveDpr, "ngts-adaptive-dpr", never, { "pixelated": { "alias": "pixelated"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -19,7 +19,7 @@ export interface NgtsInstancesOptions extends Partial<NgtThreeElements['ngt-inst
19
19
  export declare class NgtsInstances {
20
20
  protected readonly DynamicDrawUsage: 35048;
21
21
  options: import("@angular/core").InputSignalWithTransform<NgtsInstancesOptions, "" | Partial<NgtsInstancesOptions>>;
22
- protected parameters: import("@angular/core").Signal<Omit<NgtsInstancesOptions, "limit" | "frames" | "range">>;
22
+ protected parameters: import("@angular/core").Signal<Omit<NgtsInstancesOptions, "range" | "limit" | "frames">>;
23
23
  instancedMeshRef: import("@angular/core").Signal<ElementRef<THREE.InstancedMesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.InstancedMeshEventMap>>>;
24
24
  private limit;
25
25
  protected buffers: import("@angular/core").Signal<{
@@ -29,7 +29,7 @@ export interface NgtsPointsInstancesOptions extends Partial<NgtThreeElements['ng
29
29
  }
30
30
  export declare class NgtsPointsInstances {
31
31
  options: import("@angular/core").InputSignalWithTransform<NgtsPointsInstancesOptions, "" | Partial<NgtsPointsInstancesOptions>>;
32
- parameters: import("@angular/core").Signal<Omit<NgtsPointsInstancesOptions, "limit" | "range">>;
32
+ parameters: import("@angular/core").Signal<Omit<NgtsPointsInstancesOptions, "range" | "limit">>;
33
33
  pointsRef: import("@angular/core").Signal<ElementRef<THREE.Points<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>;
34
34
  private limit;
35
35
  buffers: import("@angular/core").Signal<{
@@ -1,8 +1,8 @@
1
1
  import * as THREE from 'three';
2
2
  export declare const MeshRefractionMaterial: (new (parameters?: (THREE.ShaderMaterialParameters & Partial<{
3
- [name: string]: number | boolean | any[] | THREE.CubeTexture | THREE.Texture | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | THREE.Color | null;
3
+ [name: string]: number | boolean | any[] | THREE.Color | THREE.CubeTexture | THREE.Texture | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | null;
4
4
  }>) | undefined) => THREE.ShaderMaterial & {
5
- [name: string]: number | boolean | any[] | THREE.CubeTexture | THREE.Texture | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | THREE.Color | null;
5
+ [name: string]: number | boolean | any[] | THREE.Color | THREE.CubeTexture | THREE.Texture | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | null;
6
6
  }) & {
7
7
  key: string;
8
8
  };
@@ -30,7 +30,7 @@ export declare class NgtsAccumulativeShadows {
30
30
  nullTraversal: () => null;
31
31
  Math: Math;
32
32
  options: import("@angular/core").InputSignalWithTransform<NgtsAccumulativeShadowsOptions, "" | Partial<NgtsAccumulativeShadowsOptions>>;
33
- parameters: import("@angular/core").Signal<Omit<NgtsAccumulativeShadowsOptions, "scale" | "temporal" | "frames" | "limit" | "blend" | "opacity" | "alphaTest" | "color" | "colorBlend" | "resolution" | "toneMapped">>;
33
+ parameters: import("@angular/core").Signal<Omit<NgtsAccumulativeShadowsOptions, "scale" | "frames" | "blend" | "limit" | "temporal" | "opacity" | "alphaTest" | "color" | "colorBlend" | "resolution" | "toneMapped">>;
34
34
  lightsRef: import("@angular/core").Signal<ElementRef<THREE.Group<THREE.Object3DEventMap>>>;
35
35
  planeRef: import("@angular/core").Signal<ElementRef<THREE.Mesh<THREE.PlaneGeometry, THREE.ShaderMaterial & {
36
36
  map: THREE.Texture | null;
@@ -38,12 +38,12 @@ export interface NgtsCenterOptions {
38
38
  }
39
39
  export declare class NgtsCenter {
40
40
  options: import("@angular/core").InputSignalWithTransform<Partial<import("angular-three").NgtThreeElement<typeof THREE.Group>> & NgtsCenterOptions, "" | Partial<Partial<import("angular-three").NgtThreeElement<typeof THREE.Group>> & NgtsCenterOptions>>;
41
- protected parameters: import("@angular/core").Signal<Omit<Partial<import("angular-three").NgtThreeElement<typeof THREE.Group>> & NgtsCenterOptions, "left" | "right" | "top" | "bottom" | "disable" | "front" | "back" | "disableX" | "disableY" | "disableZ" | "precise" | "cacheKey">>;
41
+ protected parameters: import("@angular/core").Signal<Omit<Partial<import("angular-three").NgtThreeElement<typeof THREE.Group>> & NgtsCenterOptions, "left" | "right" | "top" | "bottom" | "disable" | "precise" | "cacheKey" | "front" | "back" | "disableX" | "disableY" | "disableZ">>;
42
42
  centered: import("@angular/core").OutputEmitterRef<NgtsCenterState>;
43
43
  groupRef: import("@angular/core").Signal<ElementRef<THREE.Group<THREE.Object3DEventMap>>>;
44
44
  private outerRef;
45
45
  private innerRef;
46
- centerOptions: import("@angular/core").Signal<Pick<Partial<import("angular-three").NgtThreeElement<typeof THREE.Group>> & NgtsCenterOptions, "left" | "right" | "top" | "bottom" | "disable" | "front" | "back" | "disableX" | "disableY" | "disableZ" | "precise" | "cacheKey">>;
46
+ centerOptions: import("@angular/core").Signal<Pick<Partial<import("angular-three").NgtThreeElement<typeof THREE.Group>> & NgtsCenterOptions, "left" | "right" | "top" | "bottom" | "disable" | "precise" | "cacheKey" | "front" | "back" | "disableX" | "disableY" | "disableZ">>;
47
47
  constructor();
48
48
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsCenter, never>;
49
49
  static ɵcmp: i0.ɵɵComponentDeclaration<NgtsCenter, "ngts-center", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "centered": "centered"; }, never, ["*"], true, never>;
@@ -15,7 +15,7 @@ export interface NgtsSkyOptions extends Partial<Omit<NgtThreeElements['ngt-mesh'
15
15
  }
16
16
  export declare class NgtsSky {
17
17
  options: import("@angular/core").InputSignalWithTransform<NgtsSkyOptions, "" | Partial<NgtsSkyOptions>>;
18
- protected parameters: import("@angular/core").Signal<Omit<NgtsSkyOptions, "distance" | "inclination" | "azimuth" | "sunPosition" | "turbidity" | "mieCoefficient" | "mieDirectionalG">>;
18
+ protected parameters: import("@angular/core").Signal<Omit<NgtsSkyOptions, "distance" | "inclination" | "azimuth" | "mieCoefficient" | "mieDirectionalG" | "turbidity" | "sunPosition">>;
19
19
  private distance;
20
20
  protected turbidity: import("@angular/core").Signal<number>;
21
21
  protected mieCoefficient: import("@angular/core").Signal<number>;
@@ -104,7 +104,7 @@ export declare class NgtsSpotLightShadow {
104
104
  export declare class NgtsSpotLight {
105
105
  protected readonly SpotLightHelper: typeof THREE.SpotLightHelper;
106
106
  options: import("@angular/core").InputSignalWithTransform<NgtsSpotLightOptions, "" | Partial<NgtsSpotLightOptions>>;
107
- protected parameters: import("@angular/core").Signal<Omit<NgtsSpotLightOptions, "opacity" | "color" | "debug" | "distance" | "depthBuffer" | "volumetric" | "angle" | "attenuation" | "anglePower" | "radiusTop" | "radiusBottom">>;
107
+ protected parameters: import("@angular/core").Signal<Omit<NgtsSpotLightOptions, "opacity" | "color" | "debug" | "distance" | "depthBuffer" | "angle" | "attenuation" | "anglePower" | "radiusTop" | "radiusBottom" | "volumetric">>;
108
108
  protected volumetricOptions: import("@angular/core").Signal<Pick<NgtsSpotLightOptions, "opacity" | "color" | "debug" | "distance" | "depthBuffer" | "angle" | "attenuation" | "anglePower" | "radiusTop" | "radiusBottom">>;
109
109
  spotLightRef: import("@angular/core").Signal<ElementRef<THREE.SpotLight>>;
110
110
  debug: import("@angular/core").Signal<boolean | undefined>;
@@ -57,9 +57,6 @@ export declare class NgtsStage {
57
57
  protected environment: import("@angular/core").Signal<"apartment" | "city" | "dawn" | "forest" | "lobby" | "night" | "park" | "studio" | "sunset" | "warehouse" | Partial<NgtsEnvironmentOptions> | null>;
58
58
  private preset;
59
59
  protected config: import("@angular/core").Signal<{
60
- main: [x: number, y: number, z: number];
61
- fill: [x: number, y: number, z: number];
62
- } | {
63
60
  readonly main: readonly [1, 2, 1];
64
61
  readonly fill: readonly [-2, -0.5, -2];
65
62
  } | {
@@ -71,6 +68,9 @@ export declare class NgtsStage {
71
68
  } | {
72
69
  readonly main: readonly [-2, 4, 4];
73
70
  readonly fill: readonly [-1, 0.5, -1.5];
71
+ } | {
72
+ main: [x: number, y: number, z: number];
73
+ fill: [x: number, y: number, z: number];
74
74
  }>;
75
75
  protected shadowBias: import("@angular/core").Signal<number>;
76
76
  protected normalBias: import("@angular/core").Signal<number>;