@itwin/frontend-tiles 4.0.0-dev.59 → 4.0.0-dev.61
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/.rush/temp/operation/build_ci/state.json +1 -1
- package/.rush/temp/package-deps_build_ci.json +2 -2
- package/lib/cjs/BatchedTileTreeReference.d.ts +4 -0
- package/lib/cjs/BatchedTileTreeReference.d.ts.map +1 -1
- package/lib/cjs/BatchedTileTreeReference.js +26 -2
- package/lib/cjs/BatchedTileTreeReference.js.map +1 -1
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/BatchedTileTreeReference.d.ts +4 -0
- package/lib/esm/BatchedTileTreeReference.d.ts.map +1 -1
- package/lib/esm/BatchedTileTreeReference.js +26 -2
- package/lib/esm/BatchedTileTreeReference.js.map +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/BatchedTileTreeReference.ts +36 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/frontend-tiles",
|
|
3
|
-
"version": "4.0.0-dev.
|
|
3
|
+
"version": "4.0.0-dev.61",
|
|
4
4
|
"description": "Experimental alternative technique for visualizing the contents of iModels",
|
|
5
5
|
"main": "lib/cjs/frontend-tiles.js",
|
|
6
6
|
"module": "lib/esm/frontend-tiles.js",
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
"url": "http://www.bentley.com"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@itwin/core-bentley": "4.0.0-dev.
|
|
26
|
-
"@itwin/core-common": "4.0.0-dev.
|
|
27
|
-
"@itwin/core-frontend": "4.0.0-dev.
|
|
28
|
-
"@itwin/core-geometry": "4.0.0-dev.
|
|
25
|
+
"@itwin/core-bentley": "4.0.0-dev.61",
|
|
26
|
+
"@itwin/core-common": "4.0.0-dev.61",
|
|
27
|
+
"@itwin/core-frontend": "4.0.0-dev.61",
|
|
28
|
+
"@itwin/core-geometry": "4.0.0-dev.61"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@itwin/build-tools": "4.0.0-dev.
|
|
32
|
-
"@itwin/core-bentley": "4.0.0-dev.
|
|
33
|
-
"@itwin/core-common": "4.0.0-dev.
|
|
34
|
-
"@itwin/core-frontend": "4.0.0-dev.
|
|
35
|
-
"@itwin/core-geometry": "4.0.0-dev.
|
|
31
|
+
"@itwin/build-tools": "4.0.0-dev.61",
|
|
32
|
+
"@itwin/core-bentley": "4.0.0-dev.61",
|
|
33
|
+
"@itwin/core-common": "4.0.0-dev.61",
|
|
34
|
+
"@itwin/core-frontend": "4.0.0-dev.61",
|
|
35
|
+
"@itwin/core-geometry": "4.0.0-dev.61",
|
|
36
36
|
"@itwin/eslint-plugin": "^4.0.0-dev.32",
|
|
37
37
|
"@types/node": "^18.11.5",
|
|
38
38
|
"eslint": "^7.11.0",
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
|
|
6
|
-
import { Id64 } from "@itwin/core-bentley";
|
|
7
|
-
import {
|
|
6
|
+
import { Id64, Id64String } from "@itwin/core-bentley";
|
|
7
|
+
import { Range3d } from "@itwin/core-geometry";
|
|
8
|
+
import {
|
|
9
|
+
BatchType, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, ModelExtentsProps,
|
|
10
|
+
} from "@itwin/core-common";
|
|
8
11
|
import {
|
|
9
12
|
AttachToViewportArgs, SpatialViewState, TileTreeOwner, TileTreeReference,
|
|
10
13
|
} from "@itwin/core-frontend";
|
|
@@ -15,6 +18,8 @@ export class BatchedTileTreeReference extends TileTreeReference implements Featu
|
|
|
15
18
|
private readonly _treeOwner: TileTreeOwner;
|
|
16
19
|
private readonly _view: SpatialViewState;
|
|
17
20
|
private readonly _viewedModels = new Id64.Uint32Set();
|
|
21
|
+
private readonly _modelRanges = new Map<Id64String, Range3d>();
|
|
22
|
+
private _modelRangePromise?: Promise<void>;
|
|
18
23
|
private _onModelSelectorChanged?: () => void;
|
|
19
24
|
|
|
20
25
|
private constructor(treeOwner: TileTreeOwner, view: SpatialViewState) {
|
|
@@ -44,8 +49,35 @@ export class BatchedTileTreeReference extends TileTreeReference implements Featu
|
|
|
44
49
|
public updateViewedModels(): void {
|
|
45
50
|
this._viewedModels.clear();
|
|
46
51
|
this._viewedModels.addIds(this._view.modelSelector.models);
|
|
47
|
-
if (this._onModelSelectorChanged)
|
|
48
|
-
|
|
52
|
+
if (!this._onModelSelectorChanged) {
|
|
53
|
+
// Don't bother updating model ranges if we're not attached to a viewport.
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this._onModelSelectorChanged();
|
|
58
|
+
|
|
59
|
+
this._modelRangePromise = undefined;
|
|
60
|
+
const modelIds = Array.from(this._view.modelSelector.models).filter((modelId) => !this._modelRanges.has(modelId));
|
|
61
|
+
if (modelIds.length === 0)
|
|
62
|
+
return;
|
|
63
|
+
|
|
64
|
+
const modelRangePromise = this._modelRangePromise = this._treeOwner.iModel.models.queryExtents(modelIds).then((extents: ModelExtentsProps[]) => {
|
|
65
|
+
if (modelRangePromise !== this._modelRangePromise)
|
|
66
|
+
return;
|
|
67
|
+
|
|
68
|
+
this._modelRangePromise = undefined;
|
|
69
|
+
for (const extent of extents)
|
|
70
|
+
this._modelRanges.set(extent.id, Range3d.fromJSON(extent.extents));
|
|
71
|
+
}).catch(() => { });
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public override unionFitRange(union: Range3d): void {
|
|
75
|
+
this._viewedModels.forEach((low: number, high: number) => {
|
|
76
|
+
const id = Id64.fromUint32Pair(low, high);
|
|
77
|
+
const extent = this._modelRanges.get(id);
|
|
78
|
+
if (extent)
|
|
79
|
+
union.extendRange(extent);
|
|
80
|
+
});
|
|
49
81
|
}
|
|
50
82
|
|
|
51
83
|
public override getAppearanceProvider(): FeatureAppearanceProvider | undefined {
|