@itwin/core-frontend 4.9.0-dev.2 → 4.9.0-dev.21
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/CHANGELOG.md +50 -1
- package/lib/cjs/AccuDraw.d.ts +7 -0
- package/lib/cjs/AccuDraw.d.ts.map +1 -1
- package/lib/cjs/AccuDraw.js +16 -8
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +18 -35
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/cjs/tile/DynamicIModelTile.js +3 -0
- package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -1
- package/lib/cjs/workers/RegisterWorker.js +5 -2
- package/lib/cjs/workers/RegisterWorker.js.map +1 -1
- package/lib/esm/AccuDraw.d.ts +7 -0
- package/lib/esm/AccuDraw.d.ts.map +1 -1
- package/lib/esm/AccuDraw.js +16 -8
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.d.ts.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +18 -35
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/esm/tile/DynamicIModelTile.js +3 -0
- package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/workers/RegisterWorker.d.ts.map +1 -1
- package/lib/esm/workers/RegisterWorker.js +5 -2
- package/lib/esm/workers/RegisterWorker.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicDescriptionBuilderImpl.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAoB,YAAY,EAAa,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAA6B,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EACwC,kBAAkB,EAAE,yBAAyB,EAAE,gCAAgC,EAC7H,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAoC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAU,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AAO9E,OAAO,EAAgB,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAInF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG;IAC5D,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,qBAAa,6BAA8B,SAAQ,gBAAiB,YAAW,yBAAyB;IACtG,SAAgB,CAAC,yBAAyB,CAAC,YAAa;IACxD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgE;IACvG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAU;gBAE/B,OAAO,EAAE,gCAAgC;IA0BrD,MAAM,IAAI,sBAAsB;
|
|
1
|
+
{"version":3,"file":"GraphicDescriptionBuilderImpl.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAoB,YAAY,EAAa,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAA6B,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EACwC,kBAAkB,EAAE,yBAAyB,EAAE,gCAAgC,EAC7H,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAoC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAU,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AAO9E,OAAO,EAAgB,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAInF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG;IAC5D,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,qBAAa,6BAA8B,SAAQ,gBAAiB,YAAW,yBAAyB;IACtG,SAAgB,CAAC,yBAAyB,CAAC,YAAa;IACxD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgE;IACvG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAU;gBAE/B,OAAO,EAAE,gCAAgC;IA0BrD,MAAM,IAAI,sBAAsB;IA6FvC,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,0BAA0B;cAgBf,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI;CAG3D;AAWD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,sBAAsB,CAG3G;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAQtH"}
|
|
@@ -59,23 +59,6 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
|
|
|
59
59
|
if (meshes.length === 0) {
|
|
60
60
|
return description;
|
|
61
61
|
}
|
|
62
|
-
const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;
|
|
63
|
-
if (featureTable) {
|
|
64
|
-
(0, core_bentley_1.assert)(undefined !== this.pickable);
|
|
65
|
-
const features = core_common_1.PackedFeatureTable.pack(featureTable);
|
|
66
|
-
const range = meshes.range ?? new core_geometry_1.Range3d();
|
|
67
|
-
description.batch = {
|
|
68
|
-
...this.pickable,
|
|
69
|
-
range: range.toJSON(),
|
|
70
|
-
modelId: this.pickable.modelId ?? this.pickable.id,
|
|
71
|
-
featureTable: {
|
|
72
|
-
multiModel: false,
|
|
73
|
-
data: features.data,
|
|
74
|
-
numFeatures: features.numFeatures,
|
|
75
|
-
animationNodeIds: features.animationNodeIds,
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
62
|
// If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance
|
|
80
63
|
// from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply
|
|
81
64
|
// it in the transform instead.
|
|
@@ -95,7 +78,7 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
|
|
|
95
78
|
// In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.
|
|
96
79
|
// We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.
|
|
97
80
|
// Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.
|
|
98
|
-
//
|
|
81
|
+
// This will become the range in local coordinates of the batch, if we are creating a batch.
|
|
99
82
|
transformOrigin = verts.range.center;
|
|
100
83
|
if (!meshesRangeOffset) {
|
|
101
84
|
meshes.range?.low.subtractInPlace(transformOrigin);
|
|
@@ -121,31 +104,31 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
|
|
|
121
104
|
type: "viewIndependentOrigin",
|
|
122
105
|
origin: { x: origin.x, y: origin.y, z: origin.z },
|
|
123
106
|
};
|
|
124
|
-
/* ###TODO } else if (this._instances) {
|
|
125
|
-
primitive.modifier = {
|
|
126
|
-
...this._instances,
|
|
127
|
-
type: "instances",
|
|
128
|
-
transformCenter: { x: this._instances.transformCenter.x, y: this._instances.transformCenter.y, z: this._instances.transformCenter.z },
|
|
129
|
-
range: this._instances.range ? {
|
|
130
|
-
low: { x: this._instances.range.low.x, y: this._instances.range.low.y, z: this._instances.range.low.z },
|
|
131
|
-
high: { x: this._instances.range.high.x, y: this._instances.range.high.y, z: this._instances.range.high.z },
|
|
132
|
-
} : undefined,
|
|
133
|
-
};
|
|
134
|
-
*/
|
|
135
107
|
}
|
|
136
108
|
description.primitives.push(primitive);
|
|
137
109
|
}
|
|
138
110
|
}
|
|
139
|
-
// Restore the meshes range if we modified it above.
|
|
140
|
-
if (meshesRangeOffset) {
|
|
141
|
-
(0, core_bentley_1.assert)(undefined !== transformOrigin);
|
|
142
|
-
meshes.range?.low.addInPlace(transformOrigin);
|
|
143
|
-
meshes.range?.high.addInPlace(transformOrigin);
|
|
144
|
-
}
|
|
145
111
|
this[Symbols_1._accumulator].clear();
|
|
146
112
|
if (transformOrigin) {
|
|
147
113
|
description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };
|
|
148
114
|
}
|
|
115
|
+
const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;
|
|
116
|
+
if (featureTable) {
|
|
117
|
+
(0, core_bentley_1.assert)(undefined !== this.pickable);
|
|
118
|
+
const features = core_common_1.PackedFeatureTable.pack(featureTable);
|
|
119
|
+
const range = meshes.range ?? new core_geometry_1.Range3d();
|
|
120
|
+
description.batch = {
|
|
121
|
+
...this.pickable,
|
|
122
|
+
range: range.toJSON(),
|
|
123
|
+
modelId: this.pickable.modelId ?? this.pickable.id,
|
|
124
|
+
featureTable: {
|
|
125
|
+
multiModel: false,
|
|
126
|
+
data: features.data,
|
|
127
|
+
numFeatures: features.numFeatures,
|
|
128
|
+
animationNodeIds: features.animationNodeIds,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
149
132
|
return description;
|
|
150
133
|
}
|
|
151
134
|
createPrimitive(mesh) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicDescriptionBuilderImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.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/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Point3d, Range3d, Range3dProps, Transform, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { addPrimitiveTransferables, ImdlModel } from \"../../imdl/ImdlModel\";\r\nimport {\r\n ComputeGraphicDescriptionChordToleranceArgs, GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions,\r\n} from \"../../render/GraphicDescriptionBuilder\";\r\nimport { GraphicType } from \"../../render/GraphicType\";\r\nimport { GraphicAssembler } from \"../../render/GraphicAssembler\";\r\nimport { Gradient, PackedFeatureTable, QPoint3dList } from \"@itwin/core-common\";\r\nimport { BatchOptions } from \"../../render/BatchOptions\";\r\nimport { assert, Id64String, TransientIdSequence } from \"@itwin/core-bentley\";\r\nimport { Mesh } from \"./MeshPrimitives\";\r\nimport { createPointStringParams } from \"./PointStringParams\";\r\nimport { VertexTable } from \"./VertexTable\";\r\nimport { createPolylineParams } from \"./PolylineParams\";\r\nimport { createMeshParams } from \"./VertexTableBuilder\";\r\nimport { edgeParamsToImdl } from \"../../imdl/ParseImdlDocument\";\r\nimport { _accumulator, _implementationProhibited } from \"../Symbols\";\r\nimport { WorkerGraphicDescriptionContextImpl, WorkerMaterial, WorkerTexture } from \"./GraphicDescriptionContextImpl\";\r\nimport { GraphicDescriptionContext } from \"../../render/GraphicDescriptionContext\";\r\nimport { MeshArgs } from \"../../../render/MeshArgs\";\r\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\r\n\r\nexport type BatchDescription = Omit<BatchOptions, \"tileId\"> & {\r\n featureTable: ImdlModel.FeatureTable;\r\n range: Range3dProps;\r\n isVolumeClassifier?: boolean;\r\n modelId: Id64String;\r\n};\r\n\r\nexport interface GraphicDescriptionImpl extends GraphicDescription {\r\n type: GraphicType;\r\n primitives: ImdlModel.Primitive[];\r\n translation?: XYAndZ;\r\n batch?: BatchDescription;\r\n /** Initialized the first time createGraphicFromDescription remaps the description in-place using a GraphicDescriptionContext.\r\n * Subsequently attempting to remap using same context should be a no-op.\r\n * Attempting to remap using a different context is an error.\r\n */\r\n remapContext?: GraphicDescriptionContext;\r\n}\r\n\r\nexport class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n private readonly _computeChordTolerance: (args: ComputeGraphicDescriptionChordToleranceArgs) => number;\r\n private readonly _context: WorkerGraphicDescriptionContextImpl;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public constructor(options: GraphicDescriptionBuilderOptions) {\r\n const type = options.type;\r\n const placement = options.placement ?? Transform.createIdentity();\r\n const wantEdges = options.generateEdges ?? type === GraphicType.Scene;\r\n const wantNormals = wantEdges || type === GraphicType.Scene;\r\n const preserveOrder = type === GraphicType.ViewOverlay || type === GraphicType.WorldOverlay || type === GraphicType.ViewBackground;\r\n\r\n super({\r\n ...options,\r\n [_implementationProhibited]: undefined,\r\n type,\r\n placement,\r\n wantEdges,\r\n wantNormals,\r\n preserveOrder,\r\n });\r\n\r\n this._computeChordTolerance = options.computeChordTolerance;\r\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\r\n\r\n this._context = options.context as WorkerGraphicDescriptionContextImpl;\r\n if (!(this._context.transientIds instanceof TransientIdSequence)) {\r\n throw new Error(\"Invalid WorkerGraphicDescriptionContext\");\r\n }\r\n }\r\n\r\n public finish(): GraphicDescriptionImpl {\r\n const description: GraphicDescriptionImpl = {\r\n [_implementationProhibited]: undefined,\r\n type: this.type,\r\n primitives: [],\r\n };\r\n\r\n if (this[_accumulator].isEmpty) {\r\n return description;\r\n }\r\n\r\n const tolerance = this._computeChordTolerance({ builder: this, computeRange: () => this[_accumulator].geometries.computeRange() });\r\n const meshes = this[_accumulator].toMeshes(this, tolerance, this.pickable);\r\n if (meshes.length === 0) {\r\n return description;\r\n }\r\n\r\n const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;\r\n if (featureTable) {\r\n assert(undefined !== this.pickable);\r\n const features = PackedFeatureTable.pack(featureTable);\r\n const range = meshes.range ?? new Range3d();\r\n description.batch = {\r\n ...this.pickable,\r\n range: range.toJSON(),\r\n modelId: this.pickable.modelId ?? this.pickable.id,\r\n featureTable: {\r\n multiModel: false,\r\n data: features.data,\r\n numFeatures: features.numFeatures,\r\n animationNodeIds: features.animationNodeIds,\r\n },\r\n };\r\n }\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (!transformOrigin) {\r\n // This is the first mesh we've processed.\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n transformOrigin = verts.range.center;\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const primitive = this.createPrimitive(mesh);\r\n if (primitive) {\r\n const origin = this._viewIndependentOrigin;\r\n if (origin) {\r\n primitive.modifier = {\r\n type: \"viewIndependentOrigin\",\r\n origin: { x: origin.x, y: origin.y, z: origin.z },\r\n };\r\n /* ###TODO } else if (this._instances) {\r\n primitive.modifier = {\r\n ...this._instances,\r\n type: \"instances\",\r\n transformCenter: { x: this._instances.transformCenter.x, y: this._instances.transformCenter.y, z: this._instances.transformCenter.z },\r\n range: this._instances.range ? {\r\n low: { x: this._instances.range.low.x, y: this._instances.range.low.y, z: this._instances.range.low.z },\r\n high: { x: this._instances.range.high.x, y: this._instances.range.high.y, z: this._instances.range.high.z },\r\n } : undefined,\r\n };\r\n */\r\n }\r\n\r\n description.primitives.push(primitive);\r\n }\r\n }\r\n\r\n // Restore the meshes range if we modified it above.\r\n if (meshesRangeOffset) {\r\n assert(undefined !== transformOrigin);\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n\r\n this[_accumulator].clear();\r\n if (transformOrigin) {\r\n description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };\r\n }\r\n\r\n return description;\r\n }\r\n\r\n private createPrimitive(mesh: Mesh): ImdlModel.Primitive | undefined {\r\n const meshArgs = mesh.toMeshArgs();\r\n if (meshArgs) {\r\n return this.createMeshPrimitive(meshArgs);\r\n }\r\n\r\n const polylineArgs = mesh.toPolylineArgs();\r\n if (!polylineArgs) {\r\n return undefined;\r\n }\r\n\r\n return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);\r\n }\r\n\r\n private createMeshPrimitive(args: MeshArgs): ImdlModel.Primitive | undefined {\r\n const params = createMeshParams(args, this._context.constraints.maxTextureSize, true);\r\n\r\n let material;\r\n const mat = params.surface.material;\r\n if (mat) {\r\n assert(mat.isAtlas === false && mat.material instanceof WorkerMaterial);\r\n material = mat.material.toImdl();\r\n }\r\n\r\n let textureMapping;\r\n const tex = params.surface.textureMapping;\r\n if (tex) {\r\n assert(tex.texture instanceof WorkerTexture);\r\n textureMapping = { alwaysDisplayed: false, texture: tex.texture.index.toString(10) };\r\n }\r\n\r\n return {\r\n type: \"mesh\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n auxChannels: params.auxChannels?.toJSON(),\r\n edges: params.edges ? edgeParamsToImdl(params.edges) : undefined,\r\n surface: {\r\n ...params.surface,\r\n indices: params.surface.indices.data,\r\n material,\r\n textureMapping,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPolylinePrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPolylineParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"polyline\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n polyline: {\r\n indices: params.polyline.indices.data,\r\n prevIndices: params.polyline.prevIndices.data,\r\n nextIndicesAndParams: params.polyline.nextIndicesAndParams,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPointStringPrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPointStringParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"point\",\r\n params: {\r\n indices: params.indices.data,\r\n vertices: convertVertexTable(params.vertices),\r\n weight: params.weight,\r\n },\r\n };\r\n }\r\n\r\n protected override resolveGradient(gradient: Gradient.Symb) {\r\n return this._context.createGradientTexture(gradient);\r\n }\r\n}\r\n\r\nfunction convertVertexTable(src: VertexTable): ImdlModel.VertexTable {\r\n return {\r\n ...src,\r\n qparams: src.qparams.toJSON(),\r\n uvParams: src.uvParams?.toJSON(),\r\n uniformColor: src.uniformColor?.toJSON(),\r\n };\r\n}\r\n\r\nexport function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl {\r\n const descr = description as GraphicDescriptionImpl;\r\n return \"object\" === typeof descr && Array.isArray(descr.primitives) && \"number\" === typeof descr.type;\r\n}\r\n\r\nexport function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void {\r\n if (!isGraphicDescription(description)) {\r\n throw new Error(\"Invalid GraphicDescription\");\r\n }\r\n\r\n for (const primitive of description.primitives) {\r\n addPrimitiveTransferables(xfers, primitive);\r\n }\r\n}\r\n\r\n"]}
|
|
1
|
+
{"version":3,"file":"GraphicDescriptionBuilderImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.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/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Point3d, Range3d, Range3dProps, Transform, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { addPrimitiveTransferables, ImdlModel } from \"../../imdl/ImdlModel\";\r\nimport {\r\n ComputeGraphicDescriptionChordToleranceArgs, GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions,\r\n} from \"../../render/GraphicDescriptionBuilder\";\r\nimport { GraphicType } from \"../../render/GraphicType\";\r\nimport { GraphicAssembler } from \"../../render/GraphicAssembler\";\r\nimport { Gradient, PackedFeatureTable, QPoint3dList } from \"@itwin/core-common\";\r\nimport { BatchOptions } from \"../../render/BatchOptions\";\r\nimport { assert, Id64String, TransientIdSequence } from \"@itwin/core-bentley\";\r\nimport { Mesh } from \"./MeshPrimitives\";\r\nimport { createPointStringParams } from \"./PointStringParams\";\r\nimport { VertexTable } from \"./VertexTable\";\r\nimport { createPolylineParams } from \"./PolylineParams\";\r\nimport { createMeshParams } from \"./VertexTableBuilder\";\r\nimport { edgeParamsToImdl } from \"../../imdl/ParseImdlDocument\";\r\nimport { _accumulator, _implementationProhibited } from \"../Symbols\";\r\nimport { WorkerGraphicDescriptionContextImpl, WorkerMaterial, WorkerTexture } from \"./GraphicDescriptionContextImpl\";\r\nimport { GraphicDescriptionContext } from \"../../render/GraphicDescriptionContext\";\r\nimport { MeshArgs } from \"../../../render/MeshArgs\";\r\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\r\n\r\nexport type BatchDescription = Omit<BatchOptions, \"tileId\"> & {\r\n featureTable: ImdlModel.FeatureTable;\r\n range: Range3dProps;\r\n isVolumeClassifier?: boolean;\r\n modelId: Id64String;\r\n};\r\n\r\nexport interface GraphicDescriptionImpl extends GraphicDescription {\r\n type: GraphicType;\r\n primitives: ImdlModel.Primitive[];\r\n translation?: XYAndZ;\r\n batch?: BatchDescription;\r\n /** Initialized the first time createGraphicFromDescription remaps the description in-place using a GraphicDescriptionContext.\r\n * Subsequently attempting to remap using same context should be a no-op.\r\n * Attempting to remap using a different context is an error.\r\n */\r\n remapContext?: GraphicDescriptionContext;\r\n}\r\n\r\nexport class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n private readonly _computeChordTolerance: (args: ComputeGraphicDescriptionChordToleranceArgs) => number;\r\n private readonly _context: WorkerGraphicDescriptionContextImpl;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public constructor(options: GraphicDescriptionBuilderOptions) {\r\n const type = options.type;\r\n const placement = options.placement ?? Transform.createIdentity();\r\n const wantEdges = options.generateEdges ?? type === GraphicType.Scene;\r\n const wantNormals = wantEdges || type === GraphicType.Scene;\r\n const preserveOrder = type === GraphicType.ViewOverlay || type === GraphicType.WorldOverlay || type === GraphicType.ViewBackground;\r\n\r\n super({\r\n ...options,\r\n [_implementationProhibited]: undefined,\r\n type,\r\n placement,\r\n wantEdges,\r\n wantNormals,\r\n preserveOrder,\r\n });\r\n\r\n this._computeChordTolerance = options.computeChordTolerance;\r\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\r\n\r\n this._context = options.context as WorkerGraphicDescriptionContextImpl;\r\n if (!(this._context.transientIds instanceof TransientIdSequence)) {\r\n throw new Error(\"Invalid WorkerGraphicDescriptionContext\");\r\n }\r\n }\r\n\r\n public finish(): GraphicDescriptionImpl {\r\n const description: GraphicDescriptionImpl = {\r\n [_implementationProhibited]: undefined,\r\n type: this.type,\r\n primitives: [],\r\n };\r\n\r\n if (this[_accumulator].isEmpty) {\r\n return description;\r\n }\r\n\r\n const tolerance = this._computeChordTolerance({ builder: this, computeRange: () => this[_accumulator].geometries.computeRange() });\r\n const meshes = this[_accumulator].toMeshes(this, tolerance, this.pickable);\r\n if (meshes.length === 0) {\r\n return description;\r\n }\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (!transformOrigin) {\r\n // This is the first mesh we've processed.\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // This will become the range in local coordinates of the batch, if we are creating a batch.\r\n transformOrigin = verts.range.center;\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const primitive = this.createPrimitive(mesh);\r\n if (primitive) {\r\n const origin = this._viewIndependentOrigin;\r\n if (origin) {\r\n primitive.modifier = {\r\n type: \"viewIndependentOrigin\",\r\n origin: { x: origin.x, y: origin.y, z: origin.z },\r\n };\r\n }\r\n\r\n description.primitives.push(primitive);\r\n }\r\n }\r\n\r\n this[_accumulator].clear();\r\n if (transformOrigin) {\r\n description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };\r\n }\r\n\r\n const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;\r\n if (featureTable) {\r\n assert(undefined !== this.pickable);\r\n const features = PackedFeatureTable.pack(featureTable);\r\n const range = meshes.range ?? new Range3d();\r\n description.batch = {\r\n ...this.pickable,\r\n range: range.toJSON(),\r\n modelId: this.pickable.modelId ?? this.pickable.id,\r\n featureTable: {\r\n multiModel: false,\r\n data: features.data,\r\n numFeatures: features.numFeatures,\r\n animationNodeIds: features.animationNodeIds,\r\n },\r\n };\r\n }\r\n\r\n return description;\r\n }\r\n\r\n private createPrimitive(mesh: Mesh): ImdlModel.Primitive | undefined {\r\n const meshArgs = mesh.toMeshArgs();\r\n if (meshArgs) {\r\n return this.createMeshPrimitive(meshArgs);\r\n }\r\n\r\n const polylineArgs = mesh.toPolylineArgs();\r\n if (!polylineArgs) {\r\n return undefined;\r\n }\r\n\r\n return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);\r\n }\r\n\r\n private createMeshPrimitive(args: MeshArgs): ImdlModel.Primitive | undefined {\r\n const params = createMeshParams(args, this._context.constraints.maxTextureSize, true);\r\n\r\n let material;\r\n const mat = params.surface.material;\r\n if (mat) {\r\n assert(mat.isAtlas === false && mat.material instanceof WorkerMaterial);\r\n material = mat.material.toImdl();\r\n }\r\n\r\n let textureMapping;\r\n const tex = params.surface.textureMapping;\r\n if (tex) {\r\n assert(tex.texture instanceof WorkerTexture);\r\n textureMapping = { alwaysDisplayed: false, texture: tex.texture.index.toString(10) };\r\n }\r\n\r\n return {\r\n type: \"mesh\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n auxChannels: params.auxChannels?.toJSON(),\r\n edges: params.edges ? edgeParamsToImdl(params.edges) : undefined,\r\n surface: {\r\n ...params.surface,\r\n indices: params.surface.indices.data,\r\n material,\r\n textureMapping,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPolylinePrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPolylineParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"polyline\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n polyline: {\r\n indices: params.polyline.indices.data,\r\n prevIndices: params.polyline.prevIndices.data,\r\n nextIndicesAndParams: params.polyline.nextIndicesAndParams,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPointStringPrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPointStringParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"point\",\r\n params: {\r\n indices: params.indices.data,\r\n vertices: convertVertexTable(params.vertices),\r\n weight: params.weight,\r\n },\r\n };\r\n }\r\n\r\n protected override resolveGradient(gradient: Gradient.Symb) {\r\n return this._context.createGradientTexture(gradient);\r\n }\r\n}\r\n\r\nfunction convertVertexTable(src: VertexTable): ImdlModel.VertexTable {\r\n return {\r\n ...src,\r\n qparams: src.qparams.toJSON(),\r\n uvParams: src.uvParams?.toJSON(),\r\n uniformColor: src.uniformColor?.toJSON(),\r\n };\r\n}\r\n\r\nexport function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl {\r\n const descr = description as GraphicDescriptionImpl;\r\n return \"object\" === typeof descr && Array.isArray(descr.primitives) && \"number\" === typeof descr.type;\r\n}\r\n\r\nexport function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void {\r\n if (!isGraphicDescription(description)) {\r\n throw new Error(\"Invalid GraphicDescription\");\r\n }\r\n\r\n for (const primitive of description.primitives) {\r\n addPrimitiveTransferables(xfers, primitive);\r\n }\r\n}\r\n\r\n"]}
|
|
@@ -220,6 +220,9 @@ class ElementTile extends internal_1.Tile {
|
|
|
220
220
|
}
|
|
221
221
|
update(range) {
|
|
222
222
|
range.clone(this.range);
|
|
223
|
+
const center = this.range.low.interpolate(0.5, this.range.high);
|
|
224
|
+
const radius = 0.5 * this.range.low.distance(this.range.high);
|
|
225
|
+
this.boundingSphere.init(center, radius);
|
|
223
226
|
// Discard out-dated graphics.
|
|
224
227
|
(0, core_bentley_1.assert)(undefined !== this.children);
|
|
225
228
|
for (const child of this.children)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicIModelTile.js","sourceRoot":"","sources":["../../../src/tile/DynamicIModelTile.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/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport {\r\n assert, BeTimePoint, ByteStream, compareStrings, DbOpcode, Id64, Id64Array, Id64String, partitionArray, SortedArray,\r\n} from \"@itwin/core-bentley\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, ElementGeometryChange, ElementGraphicsRequestProps, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, TileFormat,\r\n} from \"@itwin/core-common\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport {\r\n ImdlReader, IModelTileTree, RootIModelTile, Tile, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileTree,\r\n} from \"./internal\";\r\n\r\n/** The root tile for the branch of an [[IModelTileTree]] containing graphics for elements that have been modified during the current\r\n * Not intended for direct consumption - exported for use by [[IModelTileTree]].\r\n * [[GraphicalEditingScope]].\r\n * @internal\r\n */\r\nexport abstract class DynamicIModelTile extends Tile {\r\n protected constructor(params: TileParams, tree: TileTree) {\r\n super(params, tree);\r\n }\r\n\r\n public static create(root: RootIModelTile, elements: Iterable<ElementGeometryChange>): DynamicIModelTile {\r\n return new RootTile(root, elements);\r\n }\r\n\r\n /** Updates the tiles when elements are modified during the editing scope. */\r\n public abstract handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void;\r\n\r\n /** Overrides symbology of the *static* [[IModelTile]]s to hide elements that have been deleted or modified. */\r\n public abstract get appearanceProvider(): FeatureAppearanceProvider;\r\n\r\n /** Exposed strictly for tests. */\r\n public abstract get hiddenElements(): Id64Array;\r\n\r\n /** Select tiles for display, requesting content for tiles as necessary. */\r\n public abstract selectTiles(selected: Tile[], args: TileDrawArgs): void;\r\n\r\n /** Discard tiles that have not been used since the specified time point. */\r\n public abstract pruneChildren(olderThan: BeTimePoint): void;\r\n}\r\n\r\n/** The child tiles of the root tile, representing inserted or modified elements and sorted by element Id. */\r\nclass ElementTiles extends SortedArray<ElementTile> {\r\n public constructor() {\r\n super((lhs, rhs) => compareStrings(lhs.contentId, rhs.contentId));\r\n }\r\n\r\n public get array(): ElementTile[] {\r\n return this._array;\r\n }\r\n}\r\n\r\n/** The root tile. Each of its children represent a newly-inserted or modified element. */\r\nclass RootTile extends DynamicIModelTile implements FeatureAppearanceProvider {\r\n private readonly _hiddenElements: Id64.Uint32Set;\r\n public readonly transformToTree: Transform;\r\n private readonly _elements: ElementTiles;\r\n\r\n private get _imodelRoot() { return this.parent as RootIModelTile; }\r\n\r\n private get _elementChildren(): ElementTile[] {\r\n assert(undefined !== this.children);\r\n assert(this.children === this._elements.array);\r\n return this._elements.array;\r\n }\r\n\r\n public constructor(parent: RootIModelTile, elements: Iterable<ElementGeometryChange>) {\r\n const params: TileParams = {\r\n parent,\r\n isLeaf: false,\r\n contentId: \"dynamic\",\r\n range: Range3d.createNull(),\r\n maximumSize: parent.tileScreenSize,\r\n };\r\n\r\n super(params, parent.tree);\r\n\r\n this._hiddenElements = new Id64.Uint32Set();\r\n\r\n const inverseTransform = parent.tree.iModelTransform.inverse();\r\n assert(undefined !== inverseTransform);\r\n this.transformToTree = inverseTransform;\r\n\r\n this._elements = new ElementTiles();\r\n this.loadChildren(); // initially empty.\r\n assert(undefined !== this.children);\r\n\r\n this.setIsReady();\r\n this.handleGeometryChanges(elements);\r\n }\r\n\r\n public get hiddenElements(): Id64Array {\r\n return this._hiddenElements.toId64Array();\r\n }\r\n\r\n public get appearanceProvider(): FeatureAppearanceProvider {\r\n return this;\r\n }\r\n\r\n public getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\r\n if (this._hiddenElements.has(elemLo, elemHi))\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 public handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void {\r\n assert(undefined !== this.children);\r\n\r\n for (const change of changes) {\r\n if (change.type !== DbOpcode.Insert)\r\n this._hiddenElements.addId(change.id);\r\n\r\n let tile = this._elements.findEquivalent((t: ElementTile) => compareStrings(t.contentId, change.id));\r\n if (change.type === DbOpcode.Delete) {\r\n if (tile) {\r\n tile.dispose();\r\n this._elements.remove(tile);\r\n }\r\n } else {\r\n const range = change.range.isNull ? change.range.clone() : this.transformToTree.multiplyRange(change.range);\r\n if (tile)\r\n tile.update(range);\r\n else\r\n this._elements.insert(tile = new ElementTile(this, change.id, range));\r\n }\r\n }\r\n\r\n // Recompute range.\r\n this.range.setNull();\r\n for (const element of this._elements)\r\n this.range.extendRange(element.range);\r\n\r\n this._imodelRoot.updateDynamicRange(this);\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (errpr: Error) => void): void {\r\n // This is invoked from constructor. We will add a child per element later - for now just mark the children as having been loaded.\r\n resolve(this._elements.array);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n throw new Error(\"Root dynamic tile has no content\");\r\n }\r\n\r\n public async requestContent(): Promise<TileRequest.Response> {\r\n assert(false, \"Root dynamic tile has no content\");\r\n return undefined;\r\n }\r\n\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\r\n throw new Error(\"Root dynamic tile has no content\");\r\n }\r\n\r\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\r\n for (const child of this._elementChildren)\r\n child.selectTiles(selected, args);\r\n }\r\n\r\n public pruneChildren(olderThan: BeTimePoint): void {\r\n // Never discard ElementTiles - do discard not-recently-used graphics.\r\n for (const child of this._elementChildren)\r\n child.pruneChildren(olderThan);\r\n }\r\n}\r\n\r\n/** Represents a single element that has been inserted or had its geometric properties modified during the current [[GraphicalEditingScope]].\r\n * It has no graphics of its own; it has any number of child tiles, each of which have graphics of a different level of detail.\r\n * Its contentId is the element's Id.\r\n */\r\nclass ElementTile extends Tile {\r\n public constructor(parent: RootTile, elementId: Id64String, range: Range3d) {\r\n super({\r\n parent,\r\n isLeaf: false,\r\n contentId: elementId,\r\n range,\r\n maximumSize: parent.maximumSize,\r\n }, parent.tree);\r\n\r\n this.loadChildren();\r\n this.setIsReady();\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n // Invoked from constructor. We'll add child tiles later as needed.\r\n resolve([]);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n throw new Error(\"ElementTile has no content\");\r\n }\r\n\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n assert(false, \"ElementTile has no content\");\r\n return undefined;\r\n }\r\n\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\r\n throw new Error(\"ElementTile has no content\");\r\n }\r\n\r\n public pruneChildren(olderThan: BeTimePoint): void {\r\n const children = this.children as GraphicsTile[];\r\n assert(undefined !== children);\r\n\r\n const partitionIndex = partitionArray(children, (child) => !child.usageMarker.isExpired(olderThan));\r\n\r\n // Remove expired children.\r\n if (partitionIndex < children.length) {\r\n const expired = children.splice(partitionIndex);\r\n for (const child of expired)\r\n child.dispose();\r\n }\r\n\r\n // Restore ordering.\r\n children.sort((x, y) => y.toleranceLog10 - x.toleranceLog10);\r\n }\r\n\r\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\r\n assert(undefined !== this.children);\r\n if (this.isRegionCulled(args))\r\n return;\r\n\r\n args.markUsed(this);\r\n\r\n // ###TODO: Test content range culled.\r\n\r\n // Compute the ideal chord tolerance.\r\n assert(this.maximumSize > 0);\r\n const pixelSize = args.getPixelSizeInMetersAtClosestPoint(this);\r\n assert(pixelSize > 0);\r\n\r\n // Round down to the nearest power of ten.\r\n const toleranceLog10 = Math.floor(Math.log10(pixelSize));\r\n\r\n // Find (or create) a child tile of desired tolerance. Also find a child tile that can be substituted for the desired tile if that tile's content is not yet loaded.\r\n // NB: Children are sorted in descending order by log10(tolerance)\r\n const children = this.children as GraphicsTile[];\r\n let closestMatch: GraphicsTile | undefined;\r\n let exactMatch: GraphicsTile | undefined;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n const tol = child.toleranceLog10;\r\n if (tol > toleranceLog10) {\r\n assert(undefined === exactMatch);\r\n if (child.hasGraphics)\r\n closestMatch = child;\r\n } else if (tol === toleranceLog10) {\r\n exactMatch = child;\r\n } else if (tol < toleranceLog10) {\r\n if (!exactMatch)\r\n children.splice(i++, 0, exactMatch = new GraphicsTile(this, toleranceLog10));\r\n\r\n if (child.hasGraphics && (!closestMatch || closestMatch.toleranceLog10 > toleranceLog10))\r\n closestMatch = child;\r\n }\r\n }\r\n\r\n if (!exactMatch) {\r\n assert(children.length === 0 || children[children.length - 1].toleranceLog10 > toleranceLog10);\r\n children.push(exactMatch = new GraphicsTile(this, toleranceLog10));\r\n }\r\n\r\n if (!exactMatch.isReady) {\r\n args.insertMissing(exactMatch);\r\n if (closestMatch) {\r\n selected.push(closestMatch);\r\n args.markUsed(closestMatch);\r\n }\r\n } else if (exactMatch.hasGraphics) {\r\n selected.push(exactMatch);\r\n args.markUsed(exactMatch);\r\n }\r\n }\r\n\r\n public update(range: Range3d): void {\r\n range.clone(this.range);\r\n\r\n // Discard out-dated graphics.\r\n assert(undefined !== this.children);\r\n for (const child of this.children)\r\n child.dispose();\r\n\r\n this.children.length = 0;\r\n }\r\n}\r\n\r\nfunction* makeIdSequence() {\r\n let current = 0;\r\n while (true) {\r\n if (current >= Number.MAX_SAFE_INTEGER)\r\n current = 0;\r\n\r\n yield ++current;\r\n }\r\n}\r\n\r\nconst requestIdSequence = makeIdSequence();\r\n\r\n/** Supplies graphics of a specific LOD for a single element. */\r\nclass GraphicsTile extends Tile {\r\n public readonly toleranceLog10: number;\r\n public readonly tolerance: number;\r\n\r\n public constructor(parent: ElementTile, toleranceLog10: number) {\r\n assert(Math.round(toleranceLog10) === toleranceLog10);\r\n super({\r\n parent,\r\n isLeaf: true,\r\n contentId: `${parent.contentId}_${toleranceLog10}`,\r\n range: parent.range,\r\n maximumSize: parent.maximumSize,\r\n }, parent.tree);\r\n\r\n this.toleranceLog10 = toleranceLog10;\r\n this.tolerance = 10 ** toleranceLog10;\r\n }\r\n\r\n public override computeLoadPriority(): number {\r\n // We want the element's graphics to be updated as soon as possible\r\n return 0;\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n resolve(undefined);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n return IModelApp.tileAdmin.channels.elementGraphicsRpc;\r\n }\r\n\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n // ###TODO tree flags (enforce display priority)\r\n // ###TODO classifiers, animation\r\n\r\n assert(undefined !== this.parent);\r\n\r\n const requestId = requestIdSequence.next();\r\n assert(!requestId.done);\r\n\r\n assert(this.tree instanceof IModelTileTree);\r\n const idProvider = this.tree.contentIdProvider;\r\n\r\n const props: ElementGraphicsRequestProps = {\r\n id: requestId.value.toString(16),\r\n elementId: this.parent.contentId,\r\n toleranceLog10: this.toleranceLog10,\r\n formatVersion: idProvider.majorFormatVersion,\r\n location: this.tree.iModelTransform.toJSON(),\r\n contentFlags: idProvider.contentFlags,\r\n omitEdges: !this.tree.edgeOptions,\r\n edgeType: this.tree.edgeOptions && \"non-indexed\" !== this.tree.edgeOptions.type ? 2 : 1,\r\n smoothPolyfaceEdges: this.tree.edgeOptions && this.tree.edgeOptions.smooth,\r\n clipToProjectExtents: this.tree.is3d,\r\n sectionCut: this.tree.stringifiedSectionClip,\r\n };\r\n\r\n return IModelApp.tileAdmin.requestElementGraphics(this.tree.iModel, props);\r\n }\r\n\r\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled: () => boolean): Promise<TileContent> {\r\n if (undefined === isCanceled)\r\n isCanceled = () => !this.isLoading;\r\n\r\n assert(data instanceof Uint8Array);\r\n const stream = ByteStream.fromUint8Array(data);\r\n\r\n const position = stream.curPos;\r\n const format = stream.readUint32();\r\n stream.curPos = position;\r\n\r\n // ###TODO: IModelGraphics format wraps IModel format.\r\n assert(TileFormat.IModel === format);\r\n\r\n const tree = this.tree;\r\n assert(tree instanceof IModelTileTree);\r\n const { iModel, modelId, is3d, containsTransformNodes } = tree;\r\n const reader = ImdlReader.create({\r\n stream, iModel, modelId, is3d, system, isCanceled, containsTransformNodes,\r\n type: tree.batchType,\r\n loadEdges: false !== tree.edgeOptions,\r\n options: { tileId: this.contentId },\r\n timeline: tree.timeline,\r\n });\r\n\r\n let content: TileContent = { isLeaf: true };\r\n if (reader) {\r\n try {\r\n content = await reader.read();\r\n } catch {\r\n //\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DynamicIModelTile.js","sourceRoot":"","sources":["../../../src/tile/DynamicIModelTile.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/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport {\r\n assert, BeTimePoint, ByteStream, compareStrings, DbOpcode, Id64, Id64Array, Id64String, partitionArray, SortedArray,\r\n} from \"@itwin/core-bentley\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, ElementGeometryChange, ElementGraphicsRequestProps, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, TileFormat,\r\n} from \"@itwin/core-common\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport {\r\n ImdlReader, IModelTileTree, RootIModelTile, Tile, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileTree,\r\n} from \"./internal\";\r\n\r\n/** The root tile for the branch of an [[IModelTileTree]] containing graphics for elements that have been modified during the current\r\n * Not intended for direct consumption - exported for use by [[IModelTileTree]].\r\n * [[GraphicalEditingScope]].\r\n * @internal\r\n */\r\nexport abstract class DynamicIModelTile extends Tile {\r\n protected constructor(params: TileParams, tree: TileTree) {\r\n super(params, tree);\r\n }\r\n\r\n public static create(root: RootIModelTile, elements: Iterable<ElementGeometryChange>): DynamicIModelTile {\r\n return new RootTile(root, elements);\r\n }\r\n\r\n /** Updates the tiles when elements are modified during the editing scope. */\r\n public abstract handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void;\r\n\r\n /** Overrides symbology of the *static* [[IModelTile]]s to hide elements that have been deleted or modified. */\r\n public abstract get appearanceProvider(): FeatureAppearanceProvider;\r\n\r\n /** Exposed strictly for tests. */\r\n public abstract get hiddenElements(): Id64Array;\r\n\r\n /** Select tiles for display, requesting content for tiles as necessary. */\r\n public abstract selectTiles(selected: Tile[], args: TileDrawArgs): void;\r\n\r\n /** Discard tiles that have not been used since the specified time point. */\r\n public abstract pruneChildren(olderThan: BeTimePoint): void;\r\n}\r\n\r\n/** The child tiles of the root tile, representing inserted or modified elements and sorted by element Id. */\r\nclass ElementTiles extends SortedArray<ElementTile> {\r\n public constructor() {\r\n super((lhs, rhs) => compareStrings(lhs.contentId, rhs.contentId));\r\n }\r\n\r\n public get array(): ElementTile[] {\r\n return this._array;\r\n }\r\n}\r\n\r\n/** The root tile. Each of its children represent a newly-inserted or modified element. */\r\nclass RootTile extends DynamicIModelTile implements FeatureAppearanceProvider {\r\n private readonly _hiddenElements: Id64.Uint32Set;\r\n public readonly transformToTree: Transform;\r\n private readonly _elements: ElementTiles;\r\n\r\n private get _imodelRoot() { return this.parent as RootIModelTile; }\r\n\r\n private get _elementChildren(): ElementTile[] {\r\n assert(undefined !== this.children);\r\n assert(this.children === this._elements.array);\r\n return this._elements.array;\r\n }\r\n\r\n public constructor(parent: RootIModelTile, elements: Iterable<ElementGeometryChange>) {\r\n const params: TileParams = {\r\n parent,\r\n isLeaf: false,\r\n contentId: \"dynamic\",\r\n range: Range3d.createNull(),\r\n maximumSize: parent.tileScreenSize,\r\n };\r\n\r\n super(params, parent.tree);\r\n\r\n this._hiddenElements = new Id64.Uint32Set();\r\n\r\n const inverseTransform = parent.tree.iModelTransform.inverse();\r\n assert(undefined !== inverseTransform);\r\n this.transformToTree = inverseTransform;\r\n\r\n this._elements = new ElementTiles();\r\n this.loadChildren(); // initially empty.\r\n assert(undefined !== this.children);\r\n\r\n this.setIsReady();\r\n this.handleGeometryChanges(elements);\r\n }\r\n\r\n public get hiddenElements(): Id64Array {\r\n return this._hiddenElements.toId64Array();\r\n }\r\n\r\n public get appearanceProvider(): FeatureAppearanceProvider {\r\n return this;\r\n }\r\n\r\n public getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\r\n if (this._hiddenElements.has(elemLo, elemHi))\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 public handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void {\r\n assert(undefined !== this.children);\r\n\r\n for (const change of changes) {\r\n if (change.type !== DbOpcode.Insert)\r\n this._hiddenElements.addId(change.id);\r\n\r\n let tile = this._elements.findEquivalent((t: ElementTile) => compareStrings(t.contentId, change.id));\r\n if (change.type === DbOpcode.Delete) {\r\n if (tile) {\r\n tile.dispose();\r\n this._elements.remove(tile);\r\n }\r\n } else {\r\n const range = change.range.isNull ? change.range.clone() : this.transformToTree.multiplyRange(change.range);\r\n if (tile)\r\n tile.update(range);\r\n else\r\n this._elements.insert(tile = new ElementTile(this, change.id, range));\r\n }\r\n }\r\n\r\n // Recompute range.\r\n this.range.setNull();\r\n for (const element of this._elements)\r\n this.range.extendRange(element.range);\r\n\r\n this._imodelRoot.updateDynamicRange(this);\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (errpr: Error) => void): void {\r\n // This is invoked from constructor. We will add a child per element later - for now just mark the children as having been loaded.\r\n resolve(this._elements.array);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n throw new Error(\"Root dynamic tile has no content\");\r\n }\r\n\r\n public async requestContent(): Promise<TileRequest.Response> {\r\n assert(false, \"Root dynamic tile has no content\");\r\n return undefined;\r\n }\r\n\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\r\n throw new Error(\"Root dynamic tile has no content\");\r\n }\r\n\r\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\r\n for (const child of this._elementChildren)\r\n child.selectTiles(selected, args);\r\n }\r\n\r\n public pruneChildren(olderThan: BeTimePoint): void {\r\n // Never discard ElementTiles - do discard not-recently-used graphics.\r\n for (const child of this._elementChildren)\r\n child.pruneChildren(olderThan);\r\n }\r\n}\r\n\r\n/** Represents a single element that has been inserted or had its geometric properties modified during the current [[GraphicalEditingScope]].\r\n * It has no graphics of its own; it has any number of child tiles, each of which have graphics of a different level of detail.\r\n * Its contentId is the element's Id.\r\n */\r\nclass ElementTile extends Tile {\r\n public constructor(parent: RootTile, elementId: Id64String, range: Range3d) {\r\n super({\r\n parent,\r\n isLeaf: false,\r\n contentId: elementId,\r\n range,\r\n maximumSize: parent.maximumSize,\r\n }, parent.tree);\r\n\r\n this.loadChildren();\r\n this.setIsReady();\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n // Invoked from constructor. We'll add child tiles later as needed.\r\n resolve([]);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n throw new Error(\"ElementTile has no content\");\r\n }\r\n\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n assert(false, \"ElementTile has no content\");\r\n return undefined;\r\n }\r\n\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\r\n throw new Error(\"ElementTile has no content\");\r\n }\r\n\r\n public pruneChildren(olderThan: BeTimePoint): void {\r\n const children = this.children as GraphicsTile[];\r\n assert(undefined !== children);\r\n\r\n const partitionIndex = partitionArray(children, (child) => !child.usageMarker.isExpired(olderThan));\r\n\r\n // Remove expired children.\r\n if (partitionIndex < children.length) {\r\n const expired = children.splice(partitionIndex);\r\n for (const child of expired)\r\n child.dispose();\r\n }\r\n\r\n // Restore ordering.\r\n children.sort((x, y) => y.toleranceLog10 - x.toleranceLog10);\r\n }\r\n\r\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\r\n assert(undefined !== this.children);\r\n if (this.isRegionCulled(args))\r\n return;\r\n\r\n args.markUsed(this);\r\n\r\n // ###TODO: Test content range culled.\r\n\r\n // Compute the ideal chord tolerance.\r\n assert(this.maximumSize > 0);\r\n const pixelSize = args.getPixelSizeInMetersAtClosestPoint(this);\r\n assert(pixelSize > 0);\r\n\r\n // Round down to the nearest power of ten.\r\n const toleranceLog10 = Math.floor(Math.log10(pixelSize));\r\n\r\n // Find (or create) a child tile of desired tolerance. Also find a child tile that can be substituted for the desired tile if that tile's content is not yet loaded.\r\n // NB: Children are sorted in descending order by log10(tolerance)\r\n const children = this.children as GraphicsTile[];\r\n let closestMatch: GraphicsTile | undefined;\r\n let exactMatch: GraphicsTile | undefined;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n const tol = child.toleranceLog10;\r\n if (tol > toleranceLog10) {\r\n assert(undefined === exactMatch);\r\n if (child.hasGraphics)\r\n closestMatch = child;\r\n } else if (tol === toleranceLog10) {\r\n exactMatch = child;\r\n } else if (tol < toleranceLog10) {\r\n if (!exactMatch)\r\n children.splice(i++, 0, exactMatch = new GraphicsTile(this, toleranceLog10));\r\n\r\n if (child.hasGraphics && (!closestMatch || closestMatch.toleranceLog10 > toleranceLog10))\r\n closestMatch = child;\r\n }\r\n }\r\n\r\n if (!exactMatch) {\r\n assert(children.length === 0 || children[children.length - 1].toleranceLog10 > toleranceLog10);\r\n children.push(exactMatch = new GraphicsTile(this, toleranceLog10));\r\n }\r\n\r\n if (!exactMatch.isReady) {\r\n args.insertMissing(exactMatch);\r\n if (closestMatch) {\r\n selected.push(closestMatch);\r\n args.markUsed(closestMatch);\r\n }\r\n } else if (exactMatch.hasGraphics) {\r\n selected.push(exactMatch);\r\n args.markUsed(exactMatch);\r\n }\r\n }\r\n\r\n public update(range: Range3d): void {\r\n range.clone(this.range);\r\n const center = this.range.low.interpolate(0.5, this.range.high);\r\n const radius = 0.5 * this.range.low.distance(this.range.high);\r\n this.boundingSphere.init(center, radius);\r\n\r\n // Discard out-dated graphics.\r\n assert(undefined !== this.children);\r\n for (const child of this.children)\r\n child.dispose();\r\n\r\n this.children.length = 0;\r\n }\r\n}\r\n\r\nfunction* makeIdSequence() {\r\n let current = 0;\r\n while (true) {\r\n if (current >= Number.MAX_SAFE_INTEGER)\r\n current = 0;\r\n\r\n yield ++current;\r\n }\r\n}\r\n\r\nconst requestIdSequence = makeIdSequence();\r\n\r\n/** Supplies graphics of a specific LOD for a single element. */\r\nclass GraphicsTile extends Tile {\r\n public readonly toleranceLog10: number;\r\n public readonly tolerance: number;\r\n\r\n public constructor(parent: ElementTile, toleranceLog10: number) {\r\n assert(Math.round(toleranceLog10) === toleranceLog10);\r\n super({\r\n parent,\r\n isLeaf: true,\r\n contentId: `${parent.contentId}_${toleranceLog10}`,\r\n range: parent.range,\r\n maximumSize: parent.maximumSize,\r\n }, parent.tree);\r\n\r\n this.toleranceLog10 = toleranceLog10;\r\n this.tolerance = 10 ** toleranceLog10;\r\n }\r\n\r\n public override computeLoadPriority(): number {\r\n // We want the element's graphics to be updated as soon as possible\r\n return 0;\r\n }\r\n\r\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n resolve(undefined);\r\n }\r\n\r\n public get channel(): TileRequestChannel {\r\n return IModelApp.tileAdmin.channels.elementGraphicsRpc;\r\n }\r\n\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n // ###TODO tree flags (enforce display priority)\r\n // ###TODO classifiers, animation\r\n\r\n assert(undefined !== this.parent);\r\n\r\n const requestId = requestIdSequence.next();\r\n assert(!requestId.done);\r\n\r\n assert(this.tree instanceof IModelTileTree);\r\n const idProvider = this.tree.contentIdProvider;\r\n\r\n const props: ElementGraphicsRequestProps = {\r\n id: requestId.value.toString(16),\r\n elementId: this.parent.contentId,\r\n toleranceLog10: this.toleranceLog10,\r\n formatVersion: idProvider.majorFormatVersion,\r\n location: this.tree.iModelTransform.toJSON(),\r\n contentFlags: idProvider.contentFlags,\r\n omitEdges: !this.tree.edgeOptions,\r\n edgeType: this.tree.edgeOptions && \"non-indexed\" !== this.tree.edgeOptions.type ? 2 : 1,\r\n smoothPolyfaceEdges: this.tree.edgeOptions && this.tree.edgeOptions.smooth,\r\n clipToProjectExtents: this.tree.is3d,\r\n sectionCut: this.tree.stringifiedSectionClip,\r\n };\r\n\r\n return IModelApp.tileAdmin.requestElementGraphics(this.tree.iModel, props);\r\n }\r\n\r\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled: () => boolean): Promise<TileContent> {\r\n if (undefined === isCanceled)\r\n isCanceled = () => !this.isLoading;\r\n\r\n assert(data instanceof Uint8Array);\r\n const stream = ByteStream.fromUint8Array(data);\r\n\r\n const position = stream.curPos;\r\n const format = stream.readUint32();\r\n stream.curPos = position;\r\n\r\n // ###TODO: IModelGraphics format wraps IModel format.\r\n assert(TileFormat.IModel === format);\r\n\r\n const tree = this.tree;\r\n assert(tree instanceof IModelTileTree);\r\n const { iModel, modelId, is3d, containsTransformNodes } = tree;\r\n const reader = ImdlReader.create({\r\n stream, iModel, modelId, is3d, system, isCanceled, containsTransformNodes,\r\n type: tree.batchType,\r\n loadEdges: false !== tree.edgeOptions,\r\n options: { tileId: this.contentId },\r\n timeline: tree.timeline,\r\n });\r\n\r\n let content: TileContent = { isLeaf: true };\r\n if (reader) {\r\n try {\r\n content = await reader.read();\r\n } catch {\r\n //\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterWorker.d.ts","sourceRoot":"","sources":["../../../src/workers/RegisterWorker.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAWlE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"RegisterWorker.d.ts","sourceRoot":"","sources":["../../../src/workers/RegisterWorker.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAWlE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAqBrE"}
|
|
@@ -14,14 +14,17 @@ const core_bentley_1 = require("@itwin/core-bentley");
|
|
|
14
14
|
* @beta
|
|
15
15
|
*/
|
|
16
16
|
function registerWorker(impl) {
|
|
17
|
-
onmessage = (e) => {
|
|
17
|
+
onmessage = async (e) => {
|
|
18
18
|
const req = e.data;
|
|
19
19
|
const msgId = req.msgId;
|
|
20
20
|
try {
|
|
21
21
|
(0, core_bentley_1.assert)(typeof req === "object" && "operation" in req && "payload" in req && "msgId" in req);
|
|
22
22
|
const func = impl[req.operation];
|
|
23
23
|
(0, core_bentley_1.assert)(typeof func === "function");
|
|
24
|
-
|
|
24
|
+
let ret = func(req.payload);
|
|
25
|
+
if (ret instanceof Promise) {
|
|
26
|
+
ret = await ret;
|
|
27
|
+
}
|
|
25
28
|
if (typeof ret === "object" && "transfer" in ret)
|
|
26
29
|
postMessage({ result: ret.result, msgId }, { transfer: ret.transfer });
|
|
27
30
|
else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterWorker.js","sourceRoot":"","sources":["../../../src/workers/RegisterWorker.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAY7C;;;GAGG;AACH,SAAgB,cAAc,CAAI,IAA6B;IAC7D,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"RegisterWorker.js","sourceRoot":"","sources":["../../../src/workers/RegisterWorker.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAY7C;;;GAGG;AACH,SAAgB,cAAc,CAAI,IAA6B;IAC7D,SAAS,GAAG,KAAK,EAAE,CAAe,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAqB,CAAC;QACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC;YACH,IAAA,qBAAM,EAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC;YAC5F,MAAM,IAAI,GAAI,IAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAA,qBAAM,EAAC,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC;YACnC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,GAAG,YAAY,OAAO,EAAE,CAAC;gBAC3B,GAAG,GAAG,MAAM,GAAG,CAAC;YAClB,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,UAAU,IAAI,GAAG;gBAC9C,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;;gBAEvE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC7E,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AArBD,wCAqBC","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/** @packageDocumentation\r\n * @module Utils\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport type { WorkerImplementation } from \"../common/WorkerProxy\";\r\n\r\ninterface WorkerRequest {\r\n /** The name of the method in the worker's interface to invoke. */\r\n operation: string;\r\n /** Correlates the response to the caller on the main thread to resolve/reject the promise. */\r\n msgId: number;\r\n /** Arguments to `operation`. */\r\n payload?: any;\r\n}\r\n\r\n/** Configure an implementation of the operations defined by `T` to execute on a worker thread.\r\n * See [this article]($docs/learning/frontend/WorkerProxy.md) for more details and examples.\r\n * @beta\r\n */\r\nexport function registerWorker<T>(impl: WorkerImplementation<T>): void {\r\n onmessage = async (e: MessageEvent) => {\r\n const req = e.data as WorkerRequest;\r\n const msgId = req.msgId;\r\n try {\r\n assert(typeof req === \"object\" && \"operation\" in req && \"payload\" in req && \"msgId\" in req);\r\n const func = (impl as any)[req.operation];\r\n assert(typeof func === \"function\");\r\n let ret = func(req.payload);\r\n if (ret instanceof Promise) {\r\n ret = await ret;\r\n }\r\n if (typeof ret === \"object\" && \"transfer\" in ret)\r\n postMessage({ result: ret.result, msgId }, { transfer: ret.transfer });\r\n else\r\n postMessage({ result: ret, msgId });\r\n } catch (err: unknown) {\r\n const error = err instanceof Error ? err : new Error(\"Unknown worker error\");\r\n postMessage({ error, msgId });\r\n }\r\n };\r\n}\r\n"]}
|
package/lib/esm/AccuDraw.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { StandardViewId } from "./StandardView";
|
|
|
10
10
|
import { BeButtonEvent } from "./tools/Tool";
|
|
11
11
|
import { DecorateContext } from "./ViewContext";
|
|
12
12
|
import { ScreenViewport, Viewport } from "./Viewport";
|
|
13
|
+
import { ParserSpec } from "@itwin/core-quantity";
|
|
13
14
|
/** @internal */
|
|
14
15
|
export declare enum AccuDrawFlags {
|
|
15
16
|
None = 0,
|
|
@@ -334,7 +335,13 @@ export declare class AccuDraw {
|
|
|
334
335
|
/** Set the current value for the supplied input field */
|
|
335
336
|
setValueByIndex(index: ItemField, value: number): void;
|
|
336
337
|
private updateVector;
|
|
338
|
+
/** Allow the AccuDraw user interface to supply the distance parser */
|
|
339
|
+
getLengthParser(): ParserSpec | undefined;
|
|
337
340
|
private stringToDistance;
|
|
341
|
+
/** Allow the AccuDraw user interface to specify bearing */
|
|
342
|
+
get isBearingMode(): boolean;
|
|
343
|
+
/** Allow the AccuDraw user interface to supply the angle/direction parser */
|
|
344
|
+
getAngleParser(): ParserSpec | undefined;
|
|
338
345
|
private stringToAngle;
|
|
339
346
|
private updateFieldValue;
|
|
340
347
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccuDraw.d.ts","sourceRoot":"","sources":["../../src/AccuDraw.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccuDraw.d.ts","sourceRoot":"","sources":["../../src/AccuDraw.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/AccuDraw.js
CHANGED
|
@@ -905,21 +905,30 @@ export class AccuDraw {
|
|
|
905
905
|
const rMatrix = this.getRotation();
|
|
906
906
|
rMatrix.multiplyTransposeVector(this.vector);
|
|
907
907
|
}
|
|
908
|
+
/** Allow the AccuDraw user interface to supply the distance parser */
|
|
909
|
+
getLengthParser() {
|
|
910
|
+
return IModelApp.quantityFormatter.findParserSpecByQuantityType(QuantityType.Length);
|
|
911
|
+
}
|
|
908
912
|
stringToDistance(str) {
|
|
909
|
-
const parserSpec =
|
|
913
|
+
const parserSpec = this.getLengthParser();
|
|
910
914
|
if (parserSpec)
|
|
911
915
|
return parserSpec.parseToQuantityValue(str);
|
|
912
916
|
return { ok: false, error: ParseError.InvalidParserSpec };
|
|
913
917
|
}
|
|
918
|
+
/** Allow the AccuDraw user interface to specify bearing */
|
|
919
|
+
get isBearingMode() { return false; }
|
|
920
|
+
/** Allow the AccuDraw user interface to supply the angle/direction parser */
|
|
921
|
+
getAngleParser() {
|
|
922
|
+
// TODO: Use QuantityType.Angle when isBearingMode=false and "Bearing" for isBearingMode=true.
|
|
923
|
+
return IModelApp.quantityFormatter.findParserSpecByQuantityType(QuantityType.Angle);
|
|
924
|
+
}
|
|
914
925
|
stringToAngle(inString) {
|
|
915
|
-
|
|
916
|
-
// use QuantityType.Angle for isBearing=false and "Bearing" for isBearing=true.
|
|
917
|
-
const parserSpec = IModelApp.quantityFormatter.findParserSpecByQuantityType(QuantityType.Angle);
|
|
926
|
+
const parserSpec = this.getAngleParser();
|
|
918
927
|
if (parserSpec)
|
|
919
928
|
return parserSpec.parseToQuantityValue(inString);
|
|
920
929
|
return { ok: false, error: ParseError.InvalidParserSpec };
|
|
921
930
|
}
|
|
922
|
-
updateFieldValue(index, input
|
|
931
|
+
updateFieldValue(index, input) {
|
|
923
932
|
if (input.length === 0)
|
|
924
933
|
return BentleyStatus.ERROR;
|
|
925
934
|
if (input.length === 1)
|
|
@@ -1062,8 +1071,7 @@ export class AccuDraw {
|
|
|
1062
1071
|
}
|
|
1063
1072
|
/** Call from an AccuDraw UI event to sync the supplied input field value */
|
|
1064
1073
|
async processFieldInput(index, input, synchText) {
|
|
1065
|
-
|
|
1066
|
-
if (BentleyStatus.SUCCESS !== this.updateFieldValue(index, input, { isBearing })) {
|
|
1074
|
+
if (BentleyStatus.SUCCESS !== this.updateFieldValue(index, input)) {
|
|
1067
1075
|
const saveKeyinStatus = this._keyinStatus[index]; // Don't want this to change when entering '.', etc.
|
|
1068
1076
|
this.updateFieldLock(index, false);
|
|
1069
1077
|
this._keyinStatus[index] = saveKeyinStatus;
|
|
@@ -1080,7 +1088,7 @@ export class AccuDraw {
|
|
|
1080
1088
|
this.onFieldValueChange(index);
|
|
1081
1089
|
this.setKeyinStatus(index, KeyinStatus.Dynamic);
|
|
1082
1090
|
}
|
|
1083
|
-
if (!
|
|
1091
|
+
if (!this.isBearingMode || !this.flags.bearingFixToPlane2D)
|
|
1084
1092
|
this.updateVector(this._angle);
|
|
1085
1093
|
else
|
|
1086
1094
|
this.vector.set(Math.cos(this._angle), Math.sin(this._angle), 0.0);
|