@xeokit/xeokit-sdk 2.2.4 → 2.2.5-beta-2
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/dist/xeokit-sdk.cjs.js +77 -40
- package/dist/xeokit-sdk.es.js +77 -40
- package/dist/xeokit-sdk.min.cjs.js +1 -1
- package/dist/xeokit-sdk.min.es.js +1 -1
- package/package.json +4 -2
- package/types/extras/ContextMenu/ContextMenu.d.ts +125 -0
- package/types/extras/ContextMenu/index.d.ts +1 -0
- package/types/extras/index.d.ts +1 -0
- package/types/index.d.ts +3 -0
- package/types/plugins/AngleMeasurementsPlugin/AngleMeasurement.d.ts +144 -0
- package/types/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.d.ts +42 -0
- package/types/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.d.ts +85 -0
- package/types/plugins/AngleMeasurementsPlugin/index.d.ts +1 -0
- package/types/plugins/AnnotationsPlugin/Annotation.d.ts +134 -0
- package/types/plugins/AnnotationsPlugin/AnnotationsPlugin.d.ts +117 -0
- package/types/plugins/AnnotationsPlugin/index.d.ts +1 -0
- package/types/plugins/AxisGizmoPlugin/AxisGizmoPlugin.d.ts +28 -0
- package/types/plugins/AxisGizmoPlugin/index.d.ts +1 -0
- package/types/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.d.ts +146 -0
- package/types/plugins/BCFViewpointsPlugin/index.d.ts +1 -0
- package/types/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.d.ts +81 -0
- package/types/plugins/CityJSONLoaderPlugin/index.d.ts +1 -0
- package/types/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.d.ts +137 -0
- package/types/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.d.ts +40 -0
- package/types/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.d.ts +120 -0
- package/types/plugins/DistanceMeasurementsPlugin/index.d.ts +1 -0
- package/types/plugins/FastNavPlugin/FastNavPlugin.d.ts +203 -0
- package/types/plugins/FastNavPlugin/index.d.ts +1 -0
- package/types/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.d.ts +140 -0
- package/types/plugins/GLTFLoaderPlugin/index.d.ts +1 -0
- package/types/plugins/LASLoaderPlugin/LASLoaderPlugin.d.ts +146 -0
- package/types/plugins/LASLoaderPlugin/index.d.ts +1 -0
- package/types/plugins/NavCubePlugin/NavCubePlugin.d.ts +160 -0
- package/types/plugins/NavCubePlugin/index.d.ts +1 -0
- package/types/plugins/OBJLoaderPlugin/OBJLoaderPlugin.d.ts +44 -0
- package/types/plugins/OBJLoaderPlugin/index.d.ts +1 -0
- package/types/plugins/STLLoaderPlugin/STLLoaderPlugin.d.ts +88 -0
- package/types/plugins/STLLoaderPlugin/index.d.ts +2 -0
- package/types/plugins/SectionPlanesPlugin/SectionPlanesPlugin.d.ts +103 -0
- package/types/plugins/SectionPlanesPlugin/index.d.ts +1 -0
- package/types/plugins/SkyboxesPlugin/SkyboxesPlugin.d.ts +34 -0
- package/types/plugins/SkyboxesPlugin/index.d.ts +1 -0
- package/types/plugins/StoreyViewsPlugin/Storey.d.ts +47 -0
- package/types/plugins/StoreyViewsPlugin/StoreyMap.d.ts +41 -0
- package/types/plugins/StoreyViewsPlugin/StoreyViewsPlugin.d.ts +173 -0
- package/types/plugins/StoreyViewsPlugin/index.d.ts +1 -0
- package/types/plugins/TreeViewPlugin/ModelTreeView.d.ts +24 -0
- package/types/plugins/TreeViewPlugin/TreeViewNode.d.ts +66 -0
- package/types/plugins/TreeViewPlugin/TreeViewPlugin.d.ts +136 -0
- package/types/plugins/TreeViewPlugin/index.d.ts +1 -0
- package/types/plugins/ViewCullPlugin/ViewCullPlugin.d.ts +34 -0
- package/types/plugins/ViewCullPlugin/index.d.ts +1 -0
- package/types/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.d.ts +230 -0
- package/types/plugins/WebIFCLoaderPlugin/index.d.ts +1 -0
- package/types/plugins/XKTLoaderPlugin/XKTLoaderPlugin.d.ts +277 -0
- package/types/plugins/XKTLoaderPlugin/index.d.ts +1 -0
- package/types/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.d.ts +65 -0
- package/types/plugins/XML3DLoaderPlugin/index.d.ts +1 -0
- package/types/plugins/index.d.ts +34 -0
- package/types/viewer/Configs.d.ts +20 -0
- package/types/viewer/Plugin.d.ts +69 -0
- package/types/viewer/Viewer.d.ts +212 -0
- package/types/viewer/index.d.ts +6 -0
- package/types/viewer/localization/LocaleService.d.ts +176 -0
- package/types/viewer/metadata/IFCObjectDefaults.d.ts +9 -0
- package/types/viewer/metadata/MetaModel.d.ts +65 -0
- package/types/viewer/metadata/MetaObject.d.ts +74 -0
- package/types/viewer/metadata/MetaScene.d.ts +135 -0
- package/types/viewer/metadata/Property.d.ts +29 -0
- package/types/viewer/metadata/PropertySet.d.ts +31 -0
- package/types/viewer/metadata/index.d.ts +6 -0
- package/types/viewer/scene/CameraControl/CameraControl.d.ts +591 -0
- package/types/viewer/scene/Component.d.ts +155 -0
- package/types/viewer/scene/Entity.d.ts +394 -0
- package/types/viewer/scene/PerformanceModel/PerformanceModel.d.ts +605 -0
- package/types/viewer/scene/PerformanceModel/PerformanceNode.d.ts +302 -0
- package/types/viewer/scene/camera/Camera.d.ts +364 -0
- package/types/viewer/scene/camera/CameraFlightAnimation.d.ts +167 -0
- package/types/viewer/scene/camera/CameraPath.d.ts +28 -0
- package/types/viewer/scene/camera/CameraPathAnimation.d.ts +95 -0
- package/types/viewer/scene/camera/CustomProjection.d.ts +57 -0
- package/types/viewer/scene/camera/Frustum.d.ts +166 -0
- package/types/viewer/scene/camera/Ortho.d.ts +115 -0
- package/types/viewer/scene/camera/Perspective.d.ts +136 -0
- package/types/viewer/scene/camera/index.d.ts +4 -0
- package/types/viewer/scene/geometry/Geometry.d.ts +7 -0
- package/types/viewer/scene/geometry/ReadableGeometry.d.ts +95 -0
- package/types/viewer/scene/geometry/index.d.ts +1 -0
- package/types/viewer/scene/index.d.ts +6 -0
- package/types/viewer/scene/marker/Marker.d.ts +136 -0
- package/types/viewer/scene/marker/index.d.ts +1 -0
- package/types/viewer/scene/materials/EdgeMaterial.d.ts +83 -0
- package/types/viewer/scene/materials/EmphasisMaterial.d.ts +241 -0
- package/types/viewer/scene/materials/Fresnel.d.ts +149 -0
- package/types/viewer/scene/materials/LinesMaterial.d.ts +71 -0
- package/types/viewer/scene/materials/Material.d.ts +3 -0
- package/types/viewer/scene/materials/PhongMaterial.d.ts +468 -0
- package/types/viewer/scene/materials/PointsMaterial.d.ts +206 -0
- package/types/viewer/scene/materials/Texture.d.ts +261 -0
- package/types/viewer/scene/materials/index.d.ts +5 -0
- package/types/viewer/scene/math/math.d.ts +36 -0
- package/types/viewer/scene/postfx/SAO.d.ts +209 -0
- package/types/viewer/scene/scene/Scene.d.ts +727 -0
- package/types/viewer/scene/sectionPlane/SectionPlane.d.ts +93 -0
- package/types/viewer/scene/sectionPlane/index.d.ts +1 -0
- package/types/viewer/scene/viewport/Viewport.d.ts +23 -0
- package/types/viewer/scene/webgl/PickResult.d.ts +103 -0
|
@@ -0,0 +1,727 @@
|
|
|
1
|
+
import { Component } from "../Component";
|
|
2
|
+
import { Camera } from "../camera/Camera";
|
|
3
|
+
import { PickResult } from "../webgl/PickResult";
|
|
4
|
+
import { SAO } from "../postfx/SAO";
|
|
5
|
+
import { Entity } from "../Entity";
|
|
6
|
+
import { ReadableGeometry } from "../geometry";
|
|
7
|
+
import { EdgeMaterial, EmphasisMaterial, PhongMaterial, PointsMaterial, LinesMaterial } from "../materials";
|
|
8
|
+
import { Viewport } from "../viewport/Viewport";
|
|
9
|
+
|
|
10
|
+
export declare class Scene extends Component {
|
|
11
|
+
/**
|
|
12
|
+
* The epoch time (in milliseconds since 1970) when this Scene was instantiated.
|
|
13
|
+
*/
|
|
14
|
+
get startTime(): Date;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Map of {@link Entity}s that represent models.
|
|
18
|
+
*
|
|
19
|
+
* Each {@link Entity} is mapped here by {@link Entity#id} when {@link Entity#isModel} is ````true````.
|
|
20
|
+
* @type {{String:Entity}}
|
|
21
|
+
*/
|
|
22
|
+
get models(): {[key: string]: Entity};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Map of {@link Entity}s that represents objects.
|
|
26
|
+
*
|
|
27
|
+
* Each {@link Entity} is mapped here by {@link Entity#id} when {@link Entity#isObject} is ````true````.
|
|
28
|
+
* @final
|
|
29
|
+
* @type {{String:Entity}}
|
|
30
|
+
*/
|
|
31
|
+
get objects(): {[key: string]: Entity};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Map of currently visible {@link Entity}s that represent objects.
|
|
35
|
+
*
|
|
36
|
+
* An Entity represents an object if {@link Entity#isObject} is ````true````, and is visible when {@link Entity#visible} is true.
|
|
37
|
+
* @type {{String:Object}}
|
|
38
|
+
*/
|
|
39
|
+
get visibleObjects(): {[key: string]: Entity};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Map of currently xrayed {@link Entity}s that represent objects.
|
|
43
|
+
*
|
|
44
|
+
* An Entity represents an object if {@link Entity#isObject} is ````true````, and is xrayed when {@link Entity#xrayed} is true.
|
|
45
|
+
*
|
|
46
|
+
* Each {@link Entity} is mapped here by {@link Entity#id}.
|
|
47
|
+
*
|
|
48
|
+
* @type {{String:Object}}
|
|
49
|
+
*/
|
|
50
|
+
get xrayedObjects(): {[key: string]: Entity};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Map of currently highlighted {@link Entity}s that represent objects.
|
|
54
|
+
*
|
|
55
|
+
* An Entity represents an object if {@link Entity#isObject} is ````true```` is true, and is highlighted when {@link Entity#highlighted} is true.
|
|
56
|
+
*
|
|
57
|
+
* Each {@link Entity} is mapped here by {@link Entity#id}.
|
|
58
|
+
*
|
|
59
|
+
* @type {{String:Object}}
|
|
60
|
+
*/
|
|
61
|
+
get highlightedObjects(): {[key: string]: Entity};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Map of currently selected {@link Entity}s that represent objects.
|
|
65
|
+
*
|
|
66
|
+
* An Entity represents an object if {@link Entity#isObject} is true, and is selected while {@link Entity#selected} is true.
|
|
67
|
+
*
|
|
68
|
+
* Each {@link Entity} is mapped here by {@link Entity#id}.
|
|
69
|
+
*
|
|
70
|
+
* @type {{String:Object}}
|
|
71
|
+
*/
|
|
72
|
+
get selectedObjects(): {[key: string]: Entity};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Map of currently colorized {@link Entity}s that represent objects.
|
|
76
|
+
*
|
|
77
|
+
* An Entity represents an object if {@link Entity#isObject} is ````true````.
|
|
78
|
+
*
|
|
79
|
+
* Each {@link Entity} is mapped here by {@link Entity#id}.
|
|
80
|
+
*
|
|
81
|
+
* @type {{String:Object}}
|
|
82
|
+
*/
|
|
83
|
+
get colorizedObjects(): {[key: string]: Entity};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Map of {@link Entity}s that represent objects whose opacity was updated.
|
|
87
|
+
*
|
|
88
|
+
* An Entity represents an object if {@link Entity#isObject} is ````true````.
|
|
89
|
+
*
|
|
90
|
+
* Each {@link Entity} is mapped here by {@link Entity#id}.
|
|
91
|
+
*
|
|
92
|
+
* @type {{String:Object}}
|
|
93
|
+
*/
|
|
94
|
+
get opacityObjects(): {[key: string]: Entity};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Map of {@link Entity}s that represent objects whose {@link Entity#offset}s were updated.
|
|
98
|
+
*
|
|
99
|
+
* An Entity represents an object if {@link Entity#isObject} is ````true````.
|
|
100
|
+
*
|
|
101
|
+
* Each {@link Entity} is mapped here by {@link Entity#id}.
|
|
102
|
+
*
|
|
103
|
+
* @property offsetObjects
|
|
104
|
+
* @final
|
|
105
|
+
* @type {{String:Object}}
|
|
106
|
+
*/
|
|
107
|
+
get offsetObjects(): {[key: string]: Entity};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Whether {@link Entity#offset} is enabled.
|
|
111
|
+
*
|
|
112
|
+
* This is set via the {@link Viewer} constructor and is ````false```` by default.
|
|
113
|
+
*
|
|
114
|
+
* @returns {Boolean} True if {@link Entity#offset} is enabled.
|
|
115
|
+
*/
|
|
116
|
+
get entityOffsetsEnabled(): boolean;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Whether precision surface picking is enabled.
|
|
120
|
+
*
|
|
121
|
+
* This is set via the {@link Viewer} constructor and is ````false```` by default.
|
|
122
|
+
*
|
|
123
|
+
* The ````pickSurfacePrecision```` option for ````Scene#pick```` only works if this is set ````true````.
|
|
124
|
+
*
|
|
125
|
+
* Note that when ````true````, this configuration will increase the amount of browser memory used by the Viewer.
|
|
126
|
+
*
|
|
127
|
+
* @returns {Boolean} True if precision picking is enabled.
|
|
128
|
+
*/
|
|
129
|
+
get pickSurfacePrecisionEnabled(): boolean;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Whether logarithmic depth buffer is enabled.
|
|
133
|
+
*
|
|
134
|
+
* This is set via the {@link Viewer} constructor and is ````false```` by default.
|
|
135
|
+
*
|
|
136
|
+
* @returns {Boolean} True if logarithmic depth buffer is enabled.
|
|
137
|
+
*/
|
|
138
|
+
get logarithmicDepthBufferEnabled(): boolean;
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Sets whether physically-based rendering is enabled.
|
|
142
|
+
*
|
|
143
|
+
*/
|
|
144
|
+
set pbrEnabled(value: boolean);
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Gets whether quality rendering is enabled.
|
|
148
|
+
*
|
|
149
|
+
* Default is ````false````.
|
|
150
|
+
*
|
|
151
|
+
* @returns {Boolean} True if quality rendering is enabled.
|
|
152
|
+
*/
|
|
153
|
+
get pbrEnabled(): boolean
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#models}.
|
|
157
|
+
*
|
|
158
|
+
* @type {String[]}
|
|
159
|
+
*/
|
|
160
|
+
get modelIds(): string[];
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Gets the number of {@link Entity}s in {@link Scene#objects}.
|
|
164
|
+
*
|
|
165
|
+
* @type {Number}
|
|
166
|
+
*/
|
|
167
|
+
get numObjects(): number;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#objects}.
|
|
171
|
+
*
|
|
172
|
+
* @type {String[]}
|
|
173
|
+
*/
|
|
174
|
+
get objectIds(): string[];
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Gets the number of {@link Entity}s in {@link Scene#visibleObjects}.
|
|
178
|
+
*
|
|
179
|
+
* @type {Number}
|
|
180
|
+
*/
|
|
181
|
+
get numVisibleObjects(): number;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#visibleObjects}.
|
|
185
|
+
*
|
|
186
|
+
* @type {String[]}
|
|
187
|
+
*/
|
|
188
|
+
get visibleObjectIds(): string[];
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Gets the number of {@link Entity}s in {@link Scene#xrayedObjects}.
|
|
192
|
+
*
|
|
193
|
+
* @type {Number}
|
|
194
|
+
*/
|
|
195
|
+
get numXRayedObjects(): number;
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#xrayedObjects}.
|
|
199
|
+
*
|
|
200
|
+
* @type {String[]}
|
|
201
|
+
*/
|
|
202
|
+
get xrayedObjectIds(): string[];
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Gets the number of {@link Entity}s in {@link Scene#highlightedObjects}.
|
|
206
|
+
*
|
|
207
|
+
* @type {Number}
|
|
208
|
+
*/
|
|
209
|
+
get numHighlightedObjects(): number;
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#highlightedObjects}.
|
|
213
|
+
*
|
|
214
|
+
* @type {String[]}
|
|
215
|
+
*/
|
|
216
|
+
get highlightedObjectIds(): string[];
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Gets the number of {@link Entity}s in {@link Scene#selectedObjects}.
|
|
220
|
+
*
|
|
221
|
+
* @type {Number}
|
|
222
|
+
*/
|
|
223
|
+
get numSelectedObjects(): number;
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#selectedObjects}.
|
|
227
|
+
*
|
|
228
|
+
* @type {String[]}
|
|
229
|
+
*/
|
|
230
|
+
get selectedObjectIds(): string[];
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Gets the number of {@link Entity}s in {@link Scene#colorizedObjects}.
|
|
234
|
+
*
|
|
235
|
+
* @type {Number}
|
|
236
|
+
*/
|
|
237
|
+
get numColorizedObjects(): number;
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#colorizedObjects}.
|
|
241
|
+
*
|
|
242
|
+
* @type {String[]}
|
|
243
|
+
*/
|
|
244
|
+
get colorizedObjectIds(): string[];
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#opacityObjects}.
|
|
248
|
+
*
|
|
249
|
+
* @type {String[]}
|
|
250
|
+
*/
|
|
251
|
+
get opacityObjectIds(): string[];
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Gets the IDs of the {@link Entity}s in {@link Scene#offsetObjects}.
|
|
255
|
+
*
|
|
256
|
+
* @type {String[]}
|
|
257
|
+
*/
|
|
258
|
+
get offsetObjectIds(): string[];
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Sets the number of "ticks" that happen between each render or this Scene.
|
|
262
|
+
*
|
|
263
|
+
* Default value is ````1````.
|
|
264
|
+
*
|
|
265
|
+
* @type {Number}
|
|
266
|
+
*/
|
|
267
|
+
set ticksPerRender(value: number);
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Gets the number of "ticks" that happen between each render or this Scene.
|
|
271
|
+
*
|
|
272
|
+
* Default value is ````1````.
|
|
273
|
+
*
|
|
274
|
+
* @type {Number}
|
|
275
|
+
*/
|
|
276
|
+
get ticksPerRender(): number;
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Sets the number of "ticks" that happen between occlusion testing for {@link Marker}s.
|
|
280
|
+
*
|
|
281
|
+
* Default value is ````20````.
|
|
282
|
+
*
|
|
283
|
+
* @type {Number}
|
|
284
|
+
*/
|
|
285
|
+
set ticksPerOcclusionTest(value: number);
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Gets the number of "ticks" that happen between each render of this Scene.
|
|
289
|
+
*
|
|
290
|
+
* Default value is ````1````.
|
|
291
|
+
*
|
|
292
|
+
* @type {Number}
|
|
293
|
+
*/
|
|
294
|
+
get ticksPerOcclusionTest(): number;
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Sets the number of times this Scene renders per frame.
|
|
298
|
+
*
|
|
299
|
+
* Default value is ````1````.
|
|
300
|
+
*
|
|
301
|
+
* @type {Number}
|
|
302
|
+
*/
|
|
303
|
+
set passes(value: number)
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Gets the number of times this Scene renders per frame.
|
|
307
|
+
*
|
|
308
|
+
* Default value is ````1````.
|
|
309
|
+
*
|
|
310
|
+
* @type {Number}
|
|
311
|
+
*/
|
|
312
|
+
get passes(): number;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* When {@link Scene#passes} is greater than ````1````, indicates whether or not to clear the canvas before each pass (````true````) or just before the first pass (````false````).
|
|
316
|
+
*
|
|
317
|
+
* Default value is ````false````.
|
|
318
|
+
*
|
|
319
|
+
* @type {Boolean}
|
|
320
|
+
*/
|
|
321
|
+
set clearEachPass(value: boolean);
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* When {@link Scene#passes} is greater than ````1````, indicates whether or not to clear the canvas before each pass (````true````) or just before the first pass (````false````).
|
|
325
|
+
*
|
|
326
|
+
* Default value is ````false````.
|
|
327
|
+
*
|
|
328
|
+
* @type {Boolean}
|
|
329
|
+
*/
|
|
330
|
+
get clearEachPass(): boolean;
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Sets whether or not {@link Scene} should expect all {@link Texture}s and colors to have pre-multiplied gamma.
|
|
334
|
+
*
|
|
335
|
+
* Default value is ````false````.
|
|
336
|
+
*
|
|
337
|
+
* @type {Boolean}
|
|
338
|
+
*/
|
|
339
|
+
set gammaInput(value: boolean);
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Gets whether or not {@link Scene} should expect all {@link Texture}s and colors to have pre-multiplied gamma.
|
|
343
|
+
*
|
|
344
|
+
* Default value is ````false````.
|
|
345
|
+
*
|
|
346
|
+
* @type {Boolean}
|
|
347
|
+
*/
|
|
348
|
+
get gammaInput(): boolean;
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Sets whether or not to render pixels with pre-multiplied gama.
|
|
352
|
+
*
|
|
353
|
+
* Default value is ````false````.
|
|
354
|
+
*
|
|
355
|
+
* @type {Boolean}
|
|
356
|
+
*/
|
|
357
|
+
set gammaOutput(value: boolean);
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Gets whether or not to render pixels with pre-multiplied gama.
|
|
361
|
+
*
|
|
362
|
+
* Default value is ````true````.
|
|
363
|
+
*
|
|
364
|
+
* @type {Boolean}
|
|
365
|
+
*/
|
|
366
|
+
get gammaOutput(): boolean;
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Sets the gamma factor to use when {@link Scene#gammaOutput} is set true.
|
|
370
|
+
*
|
|
371
|
+
* Default value is ````2.2````.
|
|
372
|
+
*
|
|
373
|
+
* @type {Number}
|
|
374
|
+
*/
|
|
375
|
+
set gammaFactor(value: number);
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Gets the gamma factor to use when {@link Scene#gammaOutput} is set true.
|
|
379
|
+
*
|
|
380
|
+
* Default value is ````2.2````.
|
|
381
|
+
*
|
|
382
|
+
* @type {Number}
|
|
383
|
+
*/
|
|
384
|
+
get gammaFactor(): number;
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Gets the default {@link Geometry} for this Scene, which is a {@link ReadableGeometry} with a unit-sized box shape.
|
|
388
|
+
*
|
|
389
|
+
* Has {@link ReadableGeometry#id} set to "default.geometry".
|
|
390
|
+
*
|
|
391
|
+
* {@link Mesh}s in this Scene have {@link Mesh#geometry} set to this {@link ReadableGeometry} by default.
|
|
392
|
+
*
|
|
393
|
+
* @type {ReadableGeometry}
|
|
394
|
+
*/
|
|
395
|
+
get geometry(): ReadableGeometry;
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Gets the default {@link Material} for this Scene, which is a {@link PhongMaterial}.
|
|
399
|
+
*
|
|
400
|
+
* Has {@link PhongMaterial#id} set to "default.material".
|
|
401
|
+
*
|
|
402
|
+
* {@link Mesh}s in this Scene have {@link Mesh#material} set to this {@link PhongMaterial} by default.
|
|
403
|
+
*
|
|
404
|
+
* @type {PhongMaterial}
|
|
405
|
+
*/
|
|
406
|
+
get material(): PhongMaterial;
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Gets the default xraying {@link EmphasisMaterial} for this Scene.
|
|
410
|
+
*
|
|
411
|
+
* Has {@link EmphasisMaterial#id} set to "default.xrayMaterial".
|
|
412
|
+
*
|
|
413
|
+
* {@link Mesh}s in this Scene have {@link Mesh#xrayMaterial} set to this {@link EmphasisMaterial} by default.
|
|
414
|
+
*
|
|
415
|
+
* {@link Mesh}s are xrayed while {@link Mesh#xrayed} is ````true````.
|
|
416
|
+
*
|
|
417
|
+
* @type {EmphasisMaterial}
|
|
418
|
+
*/
|
|
419
|
+
get xrayMaterial(): EmphasisMaterial;
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Gets the default highlight {@link EmphasisMaterial} for this Scene.
|
|
423
|
+
*
|
|
424
|
+
* Has {@link EmphasisMaterial#id} set to "default.highlightMaterial".
|
|
425
|
+
*
|
|
426
|
+
* {@link Mesh}s in this Scene have {@link Mesh#highlightMaterial} set to this {@link EmphasisMaterial} by default.
|
|
427
|
+
*
|
|
428
|
+
* {@link Mesh}s are highlighted while {@link Mesh#highlighted} is ````true````.
|
|
429
|
+
*
|
|
430
|
+
* @type {EmphasisMaterial}
|
|
431
|
+
*/
|
|
432
|
+
get highlightMaterial(): EmphasisMaterial;
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Gets the default selection {@link EmphasisMaterial} for this Scene.
|
|
436
|
+
*
|
|
437
|
+
* Has {@link EmphasisMaterial#id} set to "default.selectedMaterial".
|
|
438
|
+
*
|
|
439
|
+
* {@link Mesh}s in this Scene have {@link Mesh#highlightMaterial} set to this {@link EmphasisMaterial} by default.
|
|
440
|
+
*
|
|
441
|
+
* {@link Mesh}s are highlighted while {@link Mesh#highlighted} is ````true````.
|
|
442
|
+
*
|
|
443
|
+
* @type {EmphasisMaterial}
|
|
444
|
+
*/
|
|
445
|
+
get selectedMaterial(): EmphasisMaterial;
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Gets the default {@link EdgeMaterial} for this Scene.
|
|
449
|
+
*
|
|
450
|
+
* Has {@link EdgeMaterial#id} set to "default.edgeMaterial".
|
|
451
|
+
*
|
|
452
|
+
* {@link Mesh}s in this Scene have {@link Mesh#edgeMaterial} set to this {@link EdgeMaterial} by default.
|
|
453
|
+
*
|
|
454
|
+
* {@link Mesh}s have their edges emphasized while {@link Mesh#edges} is ````true````.
|
|
455
|
+
*
|
|
456
|
+
* @type {EdgeMaterial}
|
|
457
|
+
*/
|
|
458
|
+
get edgeMaterial(): EdgeMaterial;
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Gets the {@link PointsMaterial} for this Scene.
|
|
462
|
+
*
|
|
463
|
+
* @type {PointsMaterial}
|
|
464
|
+
*/
|
|
465
|
+
get pointsMaterial(): PointsMaterial
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Gets the {@link LinesMaterial} for this Scene.
|
|
469
|
+
*
|
|
470
|
+
* @type {LinesMaterial}
|
|
471
|
+
*/
|
|
472
|
+
get linesMaterial(): LinesMaterial
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* Gets the {@link Viewport} for this Scene.
|
|
476
|
+
*
|
|
477
|
+
* @type Viewport
|
|
478
|
+
*/
|
|
479
|
+
get viewport(): Viewport
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* Gets the {@link Camera} for this Scene.
|
|
483
|
+
*
|
|
484
|
+
* @type {Camera}
|
|
485
|
+
*/
|
|
486
|
+
get camera(): Camera;
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Gets the World-space 3D center of this Scene.
|
|
490
|
+
*
|
|
491
|
+
*@type {Number[]}
|
|
492
|
+
*/
|
|
493
|
+
get center(): number[];
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* Gets the World-space axis-aligned 3D boundary (AABB) of this Scene.
|
|
497
|
+
*
|
|
498
|
+
* The AABB is represented by a six-element Float64Array containing the min/max extents of the axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.
|
|
499
|
+
*
|
|
500
|
+
* When the Scene has no content, will be ````[-100,-100,-100,100,100,100]````.
|
|
501
|
+
*
|
|
502
|
+
* @type {Number[]}
|
|
503
|
+
*/
|
|
504
|
+
get aabb(): number[];
|
|
505
|
+
|
|
506
|
+
get sao(): SAO;
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Performs an occlusion test on all {@link Marker}s in this {@link Scene}.
|
|
510
|
+
*
|
|
511
|
+
* Sets each {@link Marker#visible} ````true```` if the Marker is currently not occluded by any opaque {@link Entity}s
|
|
512
|
+
* in the Scene, or ````false```` if an Entity is occluding it.
|
|
513
|
+
*/
|
|
514
|
+
doOcclusionTest(): void;
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Renders a single frame of this Scene.
|
|
518
|
+
*
|
|
519
|
+
* The Scene will periodically render itself after any updates, but you can call this method to force a render
|
|
520
|
+
* if required.
|
|
521
|
+
*
|
|
522
|
+
* @param {Boolean} [forceRender=false] Forces a render when true, otherwise only renders if something has changed in this Scene
|
|
523
|
+
* since the last render.
|
|
524
|
+
*/
|
|
525
|
+
render(forceRender?: boolean);
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Attempts to pick an {@link Entity} in this Scene.
|
|
529
|
+
* @param {*} params Picking parameters.
|
|
530
|
+
* @param {Boolean} [params.pickSurface=false] Whether to find the picked position on the surface of the Entity.
|
|
531
|
+
* @param {Boolean} [params.pickSurfacePrecision=false] When picking an Entity surface position, indicates whether or not we want full-precision {@link PickResult#worldPos}. Only works when {@link Scene#pickSurfacePrecisionEnabled} is ````true````. If pick succeeds, the returned {@link PickResult} will have {@link PickResult#precision} set ````true````, to indicate that it contains full-precision surface pick results.
|
|
532
|
+
* @param {Boolean} [params.pickSurfaceNormal=false] Whether to find the picked normal on the surface of the Entity. Only works if ````pickSurface```` is given.
|
|
533
|
+
* @param {Number[]} [params.canvasPos] Canvas-space coordinates. When ray-picking, this will override the **origin** and ** direction** parameters and will cause the ray to be fired through the canvas at this position, directly along the negative View-space Z-axis.
|
|
534
|
+
* @param {Number[]} [params.origin] World-space ray origin when ray-picking. Ignored when canvasPos given.
|
|
535
|
+
* @param {Number[]} [params.direction] World-space ray direction when ray-picking. Also indicates the length of the ray. Ignored when canvasPos given.
|
|
536
|
+
* @param {Number[]} [params.matrix] 4x4 transformation matrix to define the World-space ray origin and direction, as an alternative to ````origin```` and ````direction````.
|
|
537
|
+
* @param {String[]} [params.includeEntities] IDs of {@link Entity}s to restrict picking to. When given, ignores {@link Entity}s whose IDs are not in this list.
|
|
538
|
+
* @param {String[]} [params.excludeEntities] IDs of {@link Entity}s to ignore. When given, will pick *through* these {@link Entity}s, as if they were not there.
|
|
539
|
+
* @param {PickResult} [pickResult] Holds the results of the pick attempt. Will use the Scene's singleton PickResult if you don't supply your own.
|
|
540
|
+
* @returns {PickResult} Holds results of the pick attempt, returned when an {@link Entity} is picked, else null. See method comments for description.
|
|
541
|
+
*/
|
|
542
|
+
pick(params: {
|
|
543
|
+
pickSurface?: boolean;
|
|
544
|
+
pickSurfacePrecision?: boolean;
|
|
545
|
+
pickSurfaceNormal?: boolean;
|
|
546
|
+
canvasPos?: number[];
|
|
547
|
+
origin?: number[];
|
|
548
|
+
direction?: number[];
|
|
549
|
+
matrix?: number[];
|
|
550
|
+
includeEntities?: string[];
|
|
551
|
+
excludeEntities?: string[];
|
|
552
|
+
}, pickResult?: PickResult): PickResult | null;
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* Destroys all non-default {@link Component}s in this Scene.
|
|
556
|
+
*/
|
|
557
|
+
clear(): void;
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Destroys all {@link Light}s in this Scene..
|
|
561
|
+
*/
|
|
562
|
+
clearLights(): void;
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Destroys all {@link SectionPlane}s in this Scene.
|
|
566
|
+
*/
|
|
567
|
+
clearSectionPlanes(): void;
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Gets the collective axis-aligned boundary (AABB) of a batch of {@link Entity}s that represent objects.
|
|
571
|
+
*
|
|
572
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
573
|
+
*
|
|
574
|
+
* Each {@link Entity} on which {@link Entity#isObject} is registered by {@link Entity#id} in {@link Scene#visibleObjects}.
|
|
575
|
+
*
|
|
576
|
+
* Each {@link Entity} is only included in the AABB when {@link Entity#collidable} is ````true````.
|
|
577
|
+
*
|
|
578
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
579
|
+
* @returns {[Number, Number, Number, Number, Number, Number]} An axis-aligned World-space bounding box, given as elements ````[xmin, ymin, zmin, xmax, ymax, zmax]````.
|
|
580
|
+
*/
|
|
581
|
+
getAABB(ids: string[]): number[];
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Batch-updates {@link Entity#visible} on {@link Entity}s that represent objects.
|
|
585
|
+
*
|
|
586
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
587
|
+
*
|
|
588
|
+
* Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#visible} are ````true```` is
|
|
589
|
+
* registered by {@link Entity#id} in {@link Scene#visibleObjects}.
|
|
590
|
+
*
|
|
591
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
592
|
+
* @param {Boolean} visible Whether or not to set visible.
|
|
593
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
594
|
+
*/
|
|
595
|
+
setObjectsVisible(ids: string[], visible: boolean): boolean;
|
|
596
|
+
|
|
597
|
+
/**
|
|
598
|
+
* Batch-updates {@link Entity#collidable} on {@link Entity}s that represent objects.
|
|
599
|
+
*
|
|
600
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
601
|
+
*
|
|
602
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
603
|
+
* @param {Boolean} collidable Whether or not to set collidable.
|
|
604
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
605
|
+
*/
|
|
606
|
+
setObjectsCollidable(ids: string[], collidable: boolean): boolean;
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Batch-updates {@link Entity#culled} on {@link Entity}s that represent objects.
|
|
610
|
+
*
|
|
611
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
612
|
+
*
|
|
613
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
614
|
+
* @param {Boolean} culled Whether or not to cull.
|
|
615
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
616
|
+
*/
|
|
617
|
+
setObjectsCulled(ids: string[], culled: boolean): boolean;
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* Batch-updates {@link Entity#selected} on {@link Entity}s that represent objects.
|
|
621
|
+
*
|
|
622
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
623
|
+
*
|
|
624
|
+
* Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#selected} are ````true```` is
|
|
625
|
+
* registered by {@link Entity#id} in {@link Scene#selectedObjects}.
|
|
626
|
+
*
|
|
627
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
628
|
+
* @param {Boolean} selected Whether or not to select.
|
|
629
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
630
|
+
*/
|
|
631
|
+
setObjectsSelected(ids: string[], selected: boolean): boolean;
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Batch-updates {@link Entity#highlighted} on {@link Entity}s that represent objects.
|
|
635
|
+
*
|
|
636
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
637
|
+
*
|
|
638
|
+
* Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#highlighted} are ````true```` is
|
|
639
|
+
* registered by {@link Entity#id} in {@link Scene#highlightedObjects}.
|
|
640
|
+
*
|
|
641
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
642
|
+
* @param {Boolean} highlighted Whether or not to highlight.
|
|
643
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
644
|
+
*/
|
|
645
|
+
setObjectsHighlighted(ids: string[], highlighted: boolean): boolean;
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* Batch-updates {@link Entity#xrayed} on {@link Entity}s that represent objects.
|
|
649
|
+
*
|
|
650
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
651
|
+
*
|
|
652
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
653
|
+
* @param {Boolean} xrayed Whether or not to xray.
|
|
654
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
655
|
+
*/
|
|
656
|
+
setObjectsXRayed(ids: string[], xrayed: boolean): boolean;
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Batch-updates {@link Entity#edges} on {@link Entity}s that represent objects.
|
|
660
|
+
*
|
|
661
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
662
|
+
*
|
|
663
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
664
|
+
* @param {Boolean} edges Whether or not to show edges.
|
|
665
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
666
|
+
*/
|
|
667
|
+
setObjectsEdges(ids: string[], edges: boolean): boolean;
|
|
668
|
+
|
|
669
|
+
/**
|
|
670
|
+
* Batch-updates {@link Entity#colorize} on {@link Entity}s that represent objects.
|
|
671
|
+
*
|
|
672
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
673
|
+
*
|
|
674
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
675
|
+
* @param {Number[]} [colorize=(1,1,1)] RGB colorize factors, multiplied by the rendered pixel colors.
|
|
676
|
+
* @returns {Boolean} True if any {@link Entity}s changed opacity, else false if all updates were redundant and not applied.
|
|
677
|
+
*/
|
|
678
|
+
setObjectsColorized(ids: string[], colorize: number[]): boolean;
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Batch-updates {@link Entity#opacity} on {@link Entity}s that represent objects.
|
|
682
|
+
*
|
|
683
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
684
|
+
*
|
|
685
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
686
|
+
* @param {Number} [opacity=1.0] Opacity factor, multiplied by the rendered pixel alphas.
|
|
687
|
+
* @returns {Boolean} True if any {@link Entity}s changed opacity, else false if all updates were redundant and not applied.
|
|
688
|
+
*/
|
|
689
|
+
setObjectsOpacity(ids: string[], opacity: number): boolean
|
|
690
|
+
|
|
691
|
+
/**
|
|
692
|
+
* Batch-updates {@link Entity#pickable} on {@link Entity}s that represent objects.
|
|
693
|
+
*
|
|
694
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
695
|
+
*
|
|
696
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
697
|
+
* @param {Boolean} pickable Whether or not to set pickable.
|
|
698
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
699
|
+
*/
|
|
700
|
+
setObjectsPickable(ids: string[], pickable: boolean): boolean;
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Batch-updates {@link Entity#offset} on {@link Entity}s that represent objects.
|
|
704
|
+
*
|
|
705
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
706
|
+
*
|
|
707
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
708
|
+
* @param {Number[]} [offset] 3D offset vector.
|
|
709
|
+
*/
|
|
710
|
+
setObjectsOffset(ids: string[], offset: number[]): void;
|
|
711
|
+
|
|
712
|
+
/**
|
|
713
|
+
* Iterates with a callback over {@link Entity}s that represent objects.
|
|
714
|
+
*
|
|
715
|
+
* An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.
|
|
716
|
+
*
|
|
717
|
+
* @param {String[]} ids Array of {@link Entity#id} values.
|
|
718
|
+
* @param {Function} callback Callback to execute on eacn {@link Entity}.
|
|
719
|
+
* @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.
|
|
720
|
+
*/
|
|
721
|
+
withObjects(ids: string[], callback): boolean;
|
|
722
|
+
|
|
723
|
+
/**
|
|
724
|
+
* Destroys this Scene.
|
|
725
|
+
*/
|
|
726
|
+
destroy(); void;
|
|
727
|
+
}
|