@itwin/frontend-tiles 4.0.0-dev.58 → 4.0.0-dev.60
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
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
"extensions/frontend-tiles/LICENSE.md": "77dfb5043040cc16a3611930daba56d86ef54334",
|
|
5
5
|
"extensions/frontend-tiles/README.md": "4ea38e83e862cdfa6fab08adc92eb62bcb2fe238",
|
|
6
6
|
"extensions/frontend-tiles/config/rush-project.json": "10683a57d3bd2b8ae364fbe8f844c01619f1a821",
|
|
7
|
-
"extensions/frontend-tiles/package.json": "
|
|
7
|
+
"extensions/frontend-tiles/package.json": "c7490a9479cae135758ce7d70432df68f3e3c745",
|
|
8
8
|
"extensions/frontend-tiles/src/BatchedSpatialTileTreeRefs.ts": "1bd92ba0d816eada104e1eb9ec1c198eb69d6842",
|
|
9
9
|
"extensions/frontend-tiles/src/BatchedTile.ts": "5a65ba092f420eb9cd5ff2ee9ae2f80bb5b42945",
|
|
10
10
|
"extensions/frontend-tiles/src/BatchedTileContentReader.ts": "7a1392a3e55882eedd68f0fb098db9009f190a3e",
|
|
11
11
|
"extensions/frontend-tiles/src/BatchedTileTree.ts": "bc27ba7b54de36cfe58ce3ecd62c7795569d3509",
|
|
12
|
-
"extensions/frontend-tiles/src/BatchedTileTreeReference.ts": "
|
|
12
|
+
"extensions/frontend-tiles/src/BatchedTileTreeReference.ts": "38e908b8193aef773fb6782142482378041ab923",
|
|
13
13
|
"extensions/frontend-tiles/src/BatchedTileTreeSupplier.ts": "916587d978864b4f9595b560ee1bac3033a123f5",
|
|
14
14
|
"extensions/frontend-tiles/src/BatchedTilesetReader.ts": "0cc90a58fc8f4cafab8c2bbdac6dc1186337b4f0",
|
|
15
15
|
"extensions/frontend-tiles/src/FrontendTiles.ts": "576ca9d6b519e7c75187507f9243fa2b802787d8",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Range3d } from "@itwin/core-geometry";
|
|
1
2
|
import { BatchType, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass } from "@itwin/core-common";
|
|
2
3
|
import { AttachToViewportArgs, SpatialViewState, TileTreeOwner, TileTreeReference } from "@itwin/core-frontend";
|
|
3
4
|
/** @internal */
|
|
@@ -5,6 +6,8 @@ export declare class BatchedTileTreeReference extends TileTreeReference implemen
|
|
|
5
6
|
private readonly _treeOwner;
|
|
6
7
|
private readonly _view;
|
|
7
8
|
private readonly _viewedModels;
|
|
9
|
+
private readonly _modelRanges;
|
|
10
|
+
private _modelRangePromise?;
|
|
8
11
|
private _onModelSelectorChanged?;
|
|
9
12
|
private constructor();
|
|
10
13
|
static create(view: SpatialViewState, baseUrl: URL): BatchedTileTreeReference;
|
|
@@ -12,6 +15,7 @@ export declare class BatchedTileTreeReference extends TileTreeReference implemen
|
|
|
12
15
|
attachToViewport(args: AttachToViewportArgs): void;
|
|
13
16
|
detachFromViewport(): void;
|
|
14
17
|
updateViewedModels(): void;
|
|
18
|
+
unionFitRange(union: Range3d): void;
|
|
15
19
|
getAppearanceProvider(): FeatureAppearanceProvider | undefined;
|
|
16
20
|
getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined;
|
|
17
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchedTileTreeReference.d.ts","sourceRoot":"","sources":["../../src/BatchedTileTreeReference.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"BatchedTileTreeReference.d.ts","sourceRoot":"","sources":["../../src/BatchedTileTreeReference.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACL,SAAS,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,aAAa,EAChG,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EACzE,MAAM,sBAAsB,CAAC;AAG9B,gBAAgB;AAChB,qBAAa,wBAAyB,SAAQ,iBAAkB,YAAW,yBAAyB;IAClG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,kBAAkB,CAAC,CAAgB;IAC3C,OAAO,CAAC,uBAAuB,CAAC,CAAa;IAE7C,OAAO;WAMO,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,GAAG,wBAAwB;IAKpF,IAAoB,SAAS,IAAI,aAAa,CAE7C;IAEM,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAKlD,kBAAkB,IAAI,IAAI;IAI1B,kBAAkB,IAAI,IAAI;IAyBjB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IASnC,qBAAqB,IAAI,yBAAyB,GAAG,SAAS;IAIvE,oBAAoB,CACzB,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC9B,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAClC,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAChC,IAAI,EAAE,SAAS,EACf,eAAe,EAAE,MAAM,GACtB,iBAAiB,GAAG,SAAS;CAOjC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.BatchedTileTreeReference = void 0;
|
|
8
8
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
9
|
+
const core_geometry_1 = require("@itwin/core-geometry");
|
|
9
10
|
const core_frontend_1 = require("@itwin/core-frontend");
|
|
10
11
|
const BatchedTileTreeSupplier_1 = require("./BatchedTileTreeSupplier");
|
|
11
12
|
/** @internal */
|
|
@@ -13,6 +14,7 @@ class BatchedTileTreeReference extends core_frontend_1.TileTreeReference {
|
|
|
13
14
|
constructor(treeOwner, view) {
|
|
14
15
|
super();
|
|
15
16
|
this._viewedModels = new core_bentley_1.Id64.Uint32Set();
|
|
17
|
+
this._modelRanges = new Map();
|
|
16
18
|
this._treeOwner = treeOwner;
|
|
17
19
|
this._view = view;
|
|
18
20
|
}
|
|
@@ -33,8 +35,30 @@ class BatchedTileTreeReference extends core_frontend_1.TileTreeReference {
|
|
|
33
35
|
updateViewedModels() {
|
|
34
36
|
this._viewedModels.clear();
|
|
35
37
|
this._viewedModels.addIds(this._view.modelSelector.models);
|
|
36
|
-
if (this._onModelSelectorChanged)
|
|
37
|
-
|
|
38
|
+
if (!this._onModelSelectorChanged) {
|
|
39
|
+
// Don't bother updating model ranges if we're not attached to a viewport.
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this._onModelSelectorChanged();
|
|
43
|
+
this._modelRangePromise = undefined;
|
|
44
|
+
const modelIds = Array.from(this._view.modelSelector.models).filter((modelId) => !this._modelRanges.has(modelId));
|
|
45
|
+
if (modelIds.length === 0)
|
|
46
|
+
return;
|
|
47
|
+
const modelRangePromise = this._modelRangePromise = this._treeOwner.iModel.models.queryExtents(modelIds).then((extents) => {
|
|
48
|
+
if (modelRangePromise !== this._modelRangePromise)
|
|
49
|
+
return;
|
|
50
|
+
this._modelRangePromise = undefined;
|
|
51
|
+
for (const extent of extents)
|
|
52
|
+
this._modelRanges.set(extent.id, core_geometry_1.Range3d.fromJSON(extent.extents));
|
|
53
|
+
}).catch(() => { });
|
|
54
|
+
}
|
|
55
|
+
unionFitRange(union) {
|
|
56
|
+
this._viewedModels.forEach((low, high) => {
|
|
57
|
+
const id = core_bentley_1.Id64.fromUint32Pair(low, high);
|
|
58
|
+
const extent = this._modelRanges.get(id);
|
|
59
|
+
if (extent)
|
|
60
|
+
union.extendRange(extent);
|
|
61
|
+
});
|
|
38
62
|
}
|
|
39
63
|
getAppearanceProvider() {
|
|
40
64
|
return this._onModelSelectorChanged ? this : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchedTileTreeReference.js","sourceRoot":"","sources":["../../src/BatchedTileTreeReference.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,
|
|
1
|
+
{"version":3,"file":"BatchedTileTreeReference.js","sourceRoot":"","sources":["../../src/BatchedTileTreeReference.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, ModelExtentsProps,\r\n} from \"@itwin/core-common\";\r\nimport {\r\n AttachToViewportArgs, SpatialViewState, TileTreeOwner, TileTreeReference,\r\n} from \"@itwin/core-frontend\";\r\nimport { getBatchedTileTreeOwner } from \"./BatchedTileTreeSupplier\";\r\n\r\n/** @internal */\r\nexport class BatchedTileTreeReference extends TileTreeReference implements FeatureAppearanceProvider {\r\n private readonly _treeOwner: TileTreeOwner;\r\n private readonly _view: SpatialViewState;\r\n private readonly _viewedModels = new Id64.Uint32Set();\r\n private readonly _modelRanges = new Map<Id64String, Range3d>();\r\n private _modelRangePromise?: Promise<void>;\r\n private _onModelSelectorChanged?: () => void;\r\n\r\n private constructor(treeOwner: TileTreeOwner, view: SpatialViewState) {\r\n super();\r\n this._treeOwner = treeOwner;\r\n this._view = view;\r\n }\r\n\r\n public static create(view: SpatialViewState, baseUrl: URL): BatchedTileTreeReference {\r\n const owner = getBatchedTileTreeOwner(view.iModel, baseUrl);\r\n return new BatchedTileTreeReference(owner, view);\r\n }\r\n\r\n public override get treeOwner(): TileTreeOwner {\r\n return this._treeOwner;\r\n }\r\n\r\n public attachToViewport(args: AttachToViewportArgs): void {\r\n this._onModelSelectorChanged = () => args.invalidateSymbologyOverrides();\r\n this.updateViewedModels();\r\n }\r\n\r\n public detachFromViewport(): void {\r\n this._onModelSelectorChanged = undefined;\r\n }\r\n\r\n public updateViewedModels(): void {\r\n this._viewedModels.clear();\r\n this._viewedModels.addIds(this._view.modelSelector.models);\r\n if (!this._onModelSelectorChanged) {\r\n // Don't bother updating model ranges if we're not attached to a viewport.\r\n return;\r\n }\r\n\r\n this._onModelSelectorChanged();\r\n\r\n this._modelRangePromise = undefined;\r\n const modelIds = Array.from(this._view.modelSelector.models).filter((modelId) => !this._modelRanges.has(modelId));\r\n if (modelIds.length === 0)\r\n return;\r\n\r\n const modelRangePromise = this._modelRangePromise = this._treeOwner.iModel.models.queryExtents(modelIds).then((extents: ModelExtentsProps[]) => {\r\n if (modelRangePromise !== this._modelRangePromise)\r\n return;\r\n\r\n this._modelRangePromise = undefined;\r\n for (const extent of extents)\r\n this._modelRanges.set(extent.id, Range3d.fromJSON(extent.extents));\r\n }).catch(() => { });\r\n }\r\n\r\n public override unionFitRange(union: Range3d): void {\r\n this._viewedModels.forEach((low: number, high: number) => {\r\n const id = Id64.fromUint32Pair(low, high);\r\n const extent = this._modelRanges.get(id);\r\n if (extent)\r\n union.extendRange(extent);\r\n });\r\n }\r\n\r\n public override getAppearanceProvider(): FeatureAppearanceProvider | undefined {\r\n return this._onModelSelectorChanged ? this : undefined;\r\n }\r\n\r\n public getFeatureAppearance(\r\n source: FeatureAppearanceSource,\r\n elemLo: number, elemHi: number,\r\n subcatLo: number, subcatHi: number,\r\n geomClass: GeometryClass,\r\n modelLo: number, modelHi: number,\r\n type: BatchType,\r\n animationNodeId: number\r\n ): FeatureAppearance | undefined {\r\n // ###TODO: Until MultiModelPackedFeatureTable is hooked up we'll always get the transient model Id - remove check after that.\r\n if (modelHi !== 0xffffff00 && !this._viewedModels.has(modelLo, modelHi))\r\n return undefined;\r\n\r\n return source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n }\r\n}\r\n"]}
|