@itwin/core-frontend 3.2.0-dev.1 → 3.2.0-dev.3
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/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js +16 -9
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +19 -17
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js +3 -1
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.js +10 -5
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.d.ts +11 -8
- package/lib/cjs/render/primitives/VertexKey.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.js +24 -6
- package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.d.ts +15 -2
- package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +273 -108
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +22 -10
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +4 -6
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js +16 -13
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +12 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +45 -28
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +107 -146
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +6 -0
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js +6 -0
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +8 -7
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +12 -5
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -1
- package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.js +4 -3
- package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Color.js +1 -1
- package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Decode.d.ts +6 -0
- package/lib/cjs/render/webgl/glsl/Decode.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Decode.js +18 -1
- package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +15 -6
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.d.ts +2 -2
- package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +24 -9
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +18 -19
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +1 -6
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js +31 -14
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +8 -6
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.d.ts +2 -16
- package/lib/cjs/tile/map/BingElevation.d.ts.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js +1 -63
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js +17 -10
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +20 -18
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js +3 -1
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.js +11 -6
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/render/primitives/VertexKey.d.ts +11 -8
- package/lib/esm/render/primitives/VertexKey.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexKey.js +24 -6
- package/lib/esm/render/primitives/VertexKey.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.d.ts +15 -2
- package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +274 -109
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +23 -11
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +4 -6
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js +17 -14
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +12 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +45 -28
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +108 -144
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +6 -0
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js +6 -0
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +8 -7
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +12 -5
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.d.ts +2 -1
- package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.js +4 -3
- package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Color.js +1 -1
- package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Decode.d.ts +6 -0
- package/lib/esm/render/webgl/glsl/Decode.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Decode.js +17 -0
- package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +15 -6
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.d.ts +2 -2
- package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +24 -9
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +18 -19
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.js +1 -6
- package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.js +32 -15
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +9 -7
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.d.ts +2 -16
- package/lib/esm/tile/map/BingElevation.d.ts.map +1 -1
- package/lib/esm/tile/map/BingElevation.js +1 -63
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/package.json +20 -20
|
@@ -7,76 +7,52 @@
|
|
|
7
7
|
* @module Rendering
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.MeshList = exports.Mesh = exports.
|
|
10
|
+
exports.MeshList = exports.Mesh = exports.MeshArgs = exports.MeshArgsEdges = exports.PolylineArgs = void 0;
|
|
11
11
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
12
|
const core_geometry_1 = require("@itwin/core-geometry");
|
|
13
13
|
const core_common_1 = require("@itwin/core-common");
|
|
14
14
|
const ColorMap_1 = require("../ColorMap");
|
|
15
15
|
const DisplayParams_1 = require("../DisplayParams");
|
|
16
16
|
const Primitives_1 = require("../Primitives");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (undefined === pointParams) {
|
|
29
|
-
this.pointParams = core_common_1.QParams3d.fromRange(core_geometry_1.Range3d.createNull());
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
this.pointParams = pointParams;
|
|
17
|
+
/** @internal */
|
|
18
|
+
var PolylineArgs;
|
|
19
|
+
(function (PolylineArgs) {
|
|
20
|
+
function fromMesh(mesh) {
|
|
21
|
+
if (!mesh.polylines || mesh.polylines.length === 0)
|
|
22
|
+
return undefined;
|
|
23
|
+
const polylines = [];
|
|
24
|
+
for (const polyline of mesh.polylines) {
|
|
25
|
+
const polylineData = new core_common_1.PolylineData();
|
|
26
|
+
if (polylineData.init(polyline))
|
|
27
|
+
polylines.push(polylineData);
|
|
33
28
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.points = new core_common_1.QPoint3dList(core_common_1.QParams3d.fromRange(core_geometry_1.Range3d.createNull()));
|
|
40
|
-
this.polylines = [];
|
|
41
|
-
this.colors.reset();
|
|
42
|
-
this.features.reset();
|
|
43
|
-
}
|
|
44
|
-
init(mesh) {
|
|
45
|
-
this.reset();
|
|
46
|
-
if (undefined === mesh.polylines)
|
|
47
|
-
return;
|
|
48
|
-
this.width = mesh.displayParams.width;
|
|
49
|
-
this.linePixels = mesh.displayParams.linePixels;
|
|
50
|
-
this.flags.is2d = mesh.is2d;
|
|
51
|
-
this.flags.isPlanar = mesh.isPlanar;
|
|
52
|
-
this.flags.isDisjoint = Mesh.PrimitiveType.Point === mesh.type;
|
|
53
|
-
if (DisplayParams_1.DisplayParams.RegionEdgeType.Outline === mesh.displayParams.regionEdgeType) {
|
|
29
|
+
if (polylines.length === 0)
|
|
30
|
+
return undefined;
|
|
31
|
+
const flags = new core_common_1.PolylineFlags(mesh.is2d, mesh.isPlanar);
|
|
32
|
+
flags.isDisjoint = mesh.type === Mesh.PrimitiveType.Point;
|
|
33
|
+
if (mesh.displayParams.regionEdgeType === DisplayParams_1.DisplayParams.RegionEdgeType.Outline) {
|
|
54
34
|
// This polyline is behaving as the edges of a region surface.
|
|
55
|
-
if (
|
|
56
|
-
|
|
35
|
+
if (!mesh.displayParams.gradient || mesh.displayParams.gradient.isOutlined)
|
|
36
|
+
flags.setIsNormalEdge();
|
|
57
37
|
else
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
mesh.polylines.forEach((polyline) => {
|
|
61
|
-
const indexedPolyline = new core_common_1.PolylineData();
|
|
62
|
-
if (indexedPolyline.init(polyline)) {
|
|
63
|
-
this.polylines.push(indexedPolyline);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
if (!this.isValid) {
|
|
67
|
-
return false;
|
|
38
|
+
flags.setIsOutlineEdge(); // edges only displayed if fill undisplayed
|
|
68
39
|
}
|
|
69
|
-
|
|
70
|
-
|
|
40
|
+
const colors = new core_common_1.ColorIndex();
|
|
41
|
+
mesh.colorMap.toColorIndex(colors, mesh.colors);
|
|
42
|
+
const features = new core_common_1.FeatureIndex();
|
|
43
|
+
mesh.toFeatureIndex(features);
|
|
44
|
+
return {
|
|
45
|
+
width: mesh.displayParams.width,
|
|
46
|
+
linePixels: mesh.displayParams.linePixels,
|
|
47
|
+
flags,
|
|
48
|
+
polylines,
|
|
49
|
+
points: mesh.points,
|
|
50
|
+
colors,
|
|
51
|
+
features,
|
|
52
|
+
};
|
|
71
53
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
this.points = mesh.points;
|
|
75
|
-
mesh.colorMap.toColorIndex(this.colors, mesh.colors);
|
|
76
|
-
mesh.toFeatureIndex(this.features);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.PolylineArgs = PolylineArgs;
|
|
54
|
+
PolylineArgs.fromMesh = fromMesh;
|
|
55
|
+
})(PolylineArgs = exports.PolylineArgs || (exports.PolylineArgs = {}));
|
|
80
56
|
/** The vertices of the edges are shared with those of the surface
|
|
81
57
|
* @internal
|
|
82
58
|
*/
|
|
@@ -98,84 +74,54 @@ class MeshArgsEdges {
|
|
|
98
74
|
get isValid() { return this.edges.isValid || this.silhouettes.isValid || this.polylines.isValid; }
|
|
99
75
|
}
|
|
100
76
|
exports.MeshArgsEdges = MeshArgsEdges;
|
|
101
|
-
/* A carrier of information needed to describe a triangle mesh and its edges.
|
|
102
|
-
* @internal
|
|
103
|
-
*/
|
|
104
|
-
class MeshArgs {
|
|
105
|
-
constructor() {
|
|
106
|
-
this.edges = new MeshArgsEdges();
|
|
107
|
-
this.colors = new core_common_1.ColorIndex();
|
|
108
|
-
this.features = new core_common_1.FeatureIndex();
|
|
109
|
-
this.fillFlags = core_common_1.FillFlags.None;
|
|
110
|
-
this.isPlanar = false;
|
|
111
|
-
this.is2d = false;
|
|
112
|
-
this.hasBakedLighting = false;
|
|
113
|
-
this.isVolumeClassifier = false;
|
|
114
|
-
this.hasFixedNormals = false;
|
|
115
|
-
}
|
|
116
|
-
clear() {
|
|
117
|
-
this.edges.clear();
|
|
118
|
-
this.vertIndices = undefined;
|
|
119
|
-
this.points = undefined;
|
|
120
|
-
this.normals = undefined;
|
|
121
|
-
this.textureUv = undefined;
|
|
122
|
-
this.texture = undefined;
|
|
123
|
-
this.colors.reset();
|
|
124
|
-
this.features.reset();
|
|
125
|
-
this.material = undefined;
|
|
126
|
-
this.fillFlags = core_common_1.FillFlags.None;
|
|
127
|
-
this.isPlanar = this.is2d = this.hasBakedLighting = this.isVolumeClassifier = this.hasFixedNormals = false;
|
|
128
|
-
this.auxChannels = undefined;
|
|
129
|
-
}
|
|
130
|
-
init(mesh) {
|
|
131
|
-
this.clear();
|
|
132
|
-
if (undefined === mesh.triangles || mesh.triangles.isEmpty)
|
|
133
|
-
return false;
|
|
134
|
-
(0, core_bentley_1.assert)(0 < mesh.points.length);
|
|
135
|
-
this.vertIndices = mesh.triangles.indices;
|
|
136
|
-
this.points = mesh.points;
|
|
137
|
-
if (!mesh.displayParams.ignoreLighting && 0 < mesh.normals.length)
|
|
138
|
-
this.normals = mesh.normals;
|
|
139
|
-
if (0 < mesh.uvParams.length)
|
|
140
|
-
this.textureUv = mesh.uvParams;
|
|
141
|
-
mesh.colorMap.toColorIndex(this.colors, mesh.colors);
|
|
142
|
-
mesh.toFeatureIndex(this.features);
|
|
143
|
-
this.material = mesh.displayParams.material;
|
|
144
|
-
if (undefined !== mesh.displayParams.textureMapping)
|
|
145
|
-
this.texture = mesh.displayParams.textureMapping.texture;
|
|
146
|
-
this.fillFlags = mesh.displayParams.fillFlags;
|
|
147
|
-
this.isPlanar = mesh.isPlanar;
|
|
148
|
-
this.is2d = mesh.is2d;
|
|
149
|
-
this.hasBakedLighting = (true === mesh.hasBakedLighting);
|
|
150
|
-
this.isVolumeClassifier = (true === mesh.isVolumeClassifier);
|
|
151
|
-
this.edges.width = mesh.displayParams.width;
|
|
152
|
-
this.edges.linePixels = mesh.displayParams.linePixels;
|
|
153
|
-
this.auxChannels = mesh.auxChannels;
|
|
154
|
-
const meshEdges = mesh.edges;
|
|
155
|
-
if (undefined === meshEdges)
|
|
156
|
-
return true;
|
|
157
|
-
this.edges.edges.init(mesh.edges);
|
|
158
|
-
this.edges.silhouettes.init(mesh.edges);
|
|
159
|
-
const polylines = [];
|
|
160
|
-
meshEdges.polylines.forEach((meshPolyline) => {
|
|
161
|
-
const polyline = new core_common_1.PolylineData();
|
|
162
|
-
if (polyline.init(meshPolyline)) {
|
|
163
|
-
polylines.push(polyline);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
this.edges.polylines.init(polylines);
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
exports.MeshArgs = MeshArgs;
|
|
171
77
|
/** @internal */
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
78
|
+
var MeshArgs;
|
|
79
|
+
(function (MeshArgs) {
|
|
80
|
+
function fromMesh(mesh) {
|
|
81
|
+
var _a;
|
|
82
|
+
if (!mesh.triangles || mesh.triangles.isEmpty || mesh.points.length === 0)
|
|
83
|
+
return undefined;
|
|
84
|
+
const texture = (_a = mesh.displayParams.textureMapping) === null || _a === void 0 ? void 0 : _a.texture;
|
|
85
|
+
const textureMapping = texture && mesh.uvParams.length > 0 ? { texture, uvParams: mesh.uvParams } : undefined;
|
|
86
|
+
const colors = new core_common_1.ColorIndex();
|
|
87
|
+
mesh.colorMap.toColorIndex(colors, mesh.colors);
|
|
88
|
+
const features = new core_common_1.FeatureIndex();
|
|
89
|
+
mesh.toFeatureIndex(features);
|
|
90
|
+
let edges;
|
|
91
|
+
if (mesh.edges) {
|
|
92
|
+
edges = new MeshArgsEdges();
|
|
93
|
+
edges.width = mesh.displayParams.width;
|
|
94
|
+
edges.linePixels = mesh.displayParams.linePixels;
|
|
95
|
+
edges.edges.init(mesh.edges);
|
|
96
|
+
edges.silhouettes.init(mesh.edges);
|
|
97
|
+
const polylines = [];
|
|
98
|
+
for (const meshPolyline of mesh.edges.polylines) {
|
|
99
|
+
const polyline = new core_common_1.PolylineData();
|
|
100
|
+
if (polyline.init(meshPolyline))
|
|
101
|
+
polylines.push(polyline);
|
|
102
|
+
}
|
|
103
|
+
edges.polylines.init(polylines);
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
vertIndices: mesh.triangles.indices,
|
|
107
|
+
points: mesh.points,
|
|
108
|
+
normals: !mesh.displayParams.ignoreLighting && mesh.normals.length > 0 ? mesh.normals : undefined,
|
|
109
|
+
textureMapping,
|
|
110
|
+
colors,
|
|
111
|
+
features,
|
|
112
|
+
material: mesh.displayParams.material,
|
|
113
|
+
fillFlags: mesh.displayParams.fillFlags,
|
|
114
|
+
isPlanar: mesh.isPlanar,
|
|
115
|
+
is2d: mesh.is2d,
|
|
116
|
+
hasBakedLighting: true === mesh.hasBakedLighting,
|
|
117
|
+
hasFixedNormals: false,
|
|
118
|
+
isVolumeClassifier: true === mesh.isVolumeClassifier,
|
|
119
|
+
edges,
|
|
120
|
+
auxChannels: mesh.auxChannels,
|
|
121
|
+
};
|
|
176
122
|
}
|
|
177
|
-
|
|
178
|
-
exports.
|
|
123
|
+
MeshArgs.fromMesh = fromMesh;
|
|
124
|
+
})(MeshArgs = exports.MeshArgs || (exports.MeshArgs = {}));
|
|
179
125
|
/** @internal */
|
|
180
126
|
class Mesh {
|
|
181
127
|
constructor(props) {
|
|
@@ -192,7 +138,19 @@ class Mesh {
|
|
|
192
138
|
this.isPlanar = isPlanar;
|
|
193
139
|
this.hasBakedLighting = (true === props.hasBakedLighting);
|
|
194
140
|
this.isVolumeClassifier = (true === props.isVolumeClassifier);
|
|
195
|
-
|
|
141
|
+
if (props.quantizePositions) {
|
|
142
|
+
this.points = new core_common_1.QPoint3dList(core_common_1.QParams3d.fromRange(range));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const points = [];
|
|
146
|
+
points.range = range;
|
|
147
|
+
const center = range.center;
|
|
148
|
+
points.add = (pt) => {
|
|
149
|
+
// assert(range.containsPoint(pt)); rounding error triggers this sometimes...
|
|
150
|
+
points.push(pt.minus(center));
|
|
151
|
+
};
|
|
152
|
+
this.points = points;
|
|
153
|
+
}
|
|
196
154
|
}
|
|
197
155
|
static create(props) { return new Mesh(props); }
|
|
198
156
|
get triangles() {
|
|
@@ -237,15 +195,18 @@ class Mesh {
|
|
|
237
195
|
if (undefined !== this.features)
|
|
238
196
|
this.features.toFeatureIndex(index);
|
|
239
197
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
198
|
+
toMeshArgs() {
|
|
199
|
+
return MeshArgs.fromMesh(this);
|
|
200
|
+
}
|
|
201
|
+
toPolylineArgs() {
|
|
202
|
+
return PolylineArgs.fromMesh(this);
|
|
203
|
+
}
|
|
204
|
+
getGraphics(system, instancesOrViewIndependentOrigin) {
|
|
205
|
+
const meshArgs = this.toMeshArgs();
|
|
206
|
+
if (meshArgs)
|
|
207
|
+
return system.createTriMesh(meshArgs, instancesOrViewIndependentOrigin);
|
|
208
|
+
const plArgs = this.toPolylineArgs();
|
|
209
|
+
return plArgs ? system.createIndexedPolylines(plArgs, instancesOrViewIndependentOrigin) : undefined;
|
|
249
210
|
}
|
|
250
211
|
addPolyline(poly) {
|
|
251
212
|
const { type, polylines } = this;
|
|
@@ -265,7 +226,7 @@ class Mesh {
|
|
|
265
226
|
}
|
|
266
227
|
addVertex(props) {
|
|
267
228
|
const { position, normal, uvParam, fillColor } = props;
|
|
268
|
-
this.points.
|
|
229
|
+
this.points.add(position);
|
|
269
230
|
if (undefined !== normal)
|
|
270
231
|
this.normals.push(normal);
|
|
271
232
|
if (undefined !== uvParam)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeshPrimitives.js","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/MeshPrimitives.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 { assert } from \"@itwin/core-bentley\";\r\nimport { AuxChannel, AuxChannelData, Point2d, Point3d, Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorIndex, EdgeArgs, Feature, FeatureIndex, FeatureIndexType, FeatureTable, FillFlags, LinePixels, MeshEdges, MeshPolyline, MeshPolylineList,\r\n OctEncodedNormal, PolylineData, PolylineEdgeArgs, PolylineFlags, QParams3d, QPoint3dList, RenderMaterial, RenderTexture, SilhouetteEdgeArgs,\r\n} from \"@itwin/core-common\";\r\nimport { InstancedGraphicParams } from \"../../InstancedGraphicParams\";\r\nimport { RenderGraphic } from \"../../RenderGraphic\";\r\nimport { RenderSystem } from \"../../RenderSystem\";\r\nimport { ColorMap } from \"../ColorMap\";\r\nimport { DisplayParams } from \"../DisplayParams\";\r\nimport { Triangle, TriangleList } from \"../Primitives\";\r\nimport { VertexKeyProps } from \"../VertexKey\";\r\n\r\n/* Information needed to draw a set of indexed polylines using a shared vertex buffer.\r\n * @internal\r\n */\r\nexport class PolylineArgs {\r\n public colors = new ColorIndex();\r\n public features = new FeatureIndex();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n public flags: PolylineFlags;\r\n public points: QPoint3dList;\r\n public polylines: PolylineData[];\r\n public pointParams: QParams3d;\r\n\r\n public constructor(points: QPoint3dList = new QPoint3dList(QParams3d.fromRange(Range3d.createNull())),\r\n polylines: PolylineData[] = [], pointParams?: QParams3d, is2d = false, isPlanar = false) {\r\n this.points = points;\r\n this.polylines = polylines;\r\n if (undefined === pointParams) {\r\n this.pointParams = QParams3d.fromRange(Range3d.createNull());\r\n } else {\r\n this.pointParams = pointParams;\r\n }\r\n this.flags = new PolylineFlags(is2d, isPlanar);\r\n }\r\n\r\n public get isValid(): boolean { return this.polylines.length !== 0; }\r\n public reset(): void {\r\n this.flags.initDefaults();\r\n this.points = new QPoint3dList(QParams3d.fromRange(Range3d.createNull()));\r\n this.polylines = [];\r\n this.colors.reset();\r\n this.features.reset();\r\n }\r\n public init(mesh: Mesh) {\r\n this.reset();\r\n if (undefined === mesh.polylines)\r\n return;\r\n\r\n this.width = mesh.displayParams.width;\r\n this.linePixels = mesh.displayParams.linePixels;\r\n this.flags.is2d = mesh.is2d;\r\n this.flags.isPlanar = mesh.isPlanar;\r\n this.flags.isDisjoint = Mesh.PrimitiveType.Point === mesh.type;\r\n if (DisplayParams.RegionEdgeType.Outline === mesh.displayParams.regionEdgeType) {\r\n // This polyline is behaving as the edges of a region surface.\r\n if (undefined === mesh.displayParams.gradient || mesh.displayParams.gradient.isOutlined)\r\n this.flags.setIsNormalEdge();\r\n else\r\n this.flags.setIsOutlineEdge(); // edges only displayed if fill undisplayed...\r\n }\r\n\r\n mesh.polylines.forEach((polyline) => {\r\n const indexedPolyline = new PolylineData();\r\n if (indexedPolyline.init(polyline)) { this.polylines.push(indexedPolyline); }\r\n });\r\n if (!this.isValid) { return false; }\r\n this.finishInit(mesh);\r\n return true;\r\n }\r\n public finishInit(mesh: Mesh) {\r\n this.pointParams = mesh.points.params;\r\n this.points = mesh.points;\r\n mesh.colorMap.toColorIndex(this.colors, mesh.colors);\r\n mesh.toFeatureIndex(this.features);\r\n }\r\n}\r\n\r\n/** The vertices of the edges are shared with those of the surface\r\n * @internal\r\n */\r\nexport class MeshArgsEdges {\r\n public edges = new EdgeArgs();\r\n public silhouettes = new SilhouetteEdgeArgs();\r\n public polylines = new PolylineEdgeArgs();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n\r\n public clear(): void {\r\n this.edges.clear();\r\n this.silhouettes.clear();\r\n this.polylines.clear();\r\n this.width = 0;\r\n this.linePixels = LinePixels.Solid;\r\n }\r\n public get isValid(): boolean { return this.edges.isValid || this.silhouettes.isValid || this.polylines.isValid; }\r\n}\r\n\r\n/* A carrier of information needed to describe a triangle mesh and its edges.\r\n * @internal\r\n */\r\nexport class MeshArgs {\r\n public edges = new MeshArgsEdges();\r\n public vertIndices?: number[];\r\n public points?: QPoint3dList;\r\n public normals?: OctEncodedNormal[];\r\n public textureUv?: Point2d[];\r\n public texture?: RenderTexture;\r\n public colors = new ColorIndex();\r\n public features = new FeatureIndex();\r\n public material?: RenderMaterial;\r\n public fillFlags = FillFlags.None;\r\n public isPlanar = false;\r\n public is2d = false;\r\n public hasBakedLighting = false;\r\n public isVolumeClassifier = false;\r\n public hasFixedNormals = false;\r\n public auxChannels?: ReadonlyArray<AuxChannel>;\r\n\r\n public clear() {\r\n this.edges.clear();\r\n this.vertIndices = undefined;\r\n this.points = undefined;\r\n this.normals = undefined;\r\n this.textureUv = undefined;\r\n this.texture = undefined;\r\n this.colors.reset();\r\n this.features.reset();\r\n this.material = undefined;\r\n this.fillFlags = FillFlags.None;\r\n this.isPlanar = this.is2d = this.hasBakedLighting = this.isVolumeClassifier = this.hasFixedNormals = false;\r\n this.auxChannels = undefined;\r\n }\r\n\r\n public init(mesh: Mesh): boolean {\r\n this.clear();\r\n if (undefined === mesh.triangles || mesh.triangles.isEmpty)\r\n return false;\r\n\r\n assert(0 < mesh.points.length);\r\n\r\n this.vertIndices = mesh.triangles.indices;\r\n this.points = mesh.points;\r\n\r\n if (!mesh.displayParams.ignoreLighting && 0 < mesh.normals.length)\r\n this.normals = mesh.normals;\r\n\r\n if (0 < mesh.uvParams.length)\r\n this.textureUv = mesh.uvParams;\r\n\r\n mesh.colorMap.toColorIndex(this.colors, mesh.colors);\r\n mesh.toFeatureIndex(this.features);\r\n\r\n this.material = mesh.displayParams.material;\r\n if (undefined !== mesh.displayParams.textureMapping)\r\n this.texture = mesh.displayParams.textureMapping.texture;\r\n\r\n this.fillFlags = mesh.displayParams.fillFlags;\r\n this.isPlanar = mesh.isPlanar;\r\n this.is2d = mesh.is2d;\r\n this.hasBakedLighting = (true === mesh.hasBakedLighting);\r\n this.isVolumeClassifier = (true === mesh.isVolumeClassifier);\r\n\r\n this.edges.width = mesh.displayParams.width;\r\n this.edges.linePixels = mesh.displayParams.linePixels;\r\n this.auxChannels = mesh.auxChannels;\r\n\r\n const meshEdges = mesh.edges;\r\n if (undefined === meshEdges)\r\n return true;\r\n\r\n this.edges.edges.init(mesh.edges);\r\n this.edges.silhouettes.init(mesh.edges);\r\n\r\n const polylines: PolylineData[] = [];\r\n meshEdges.polylines.forEach((meshPolyline: MeshPolyline) => {\r\n const polyline = new PolylineData();\r\n if (polyline.init(meshPolyline)) { polylines.push(polyline); }\r\n });\r\n\r\n this.edges.polylines.init(polylines);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshGraphicArgs {\r\n public polylineArgs = new PolylineArgs();\r\n public meshArgs: MeshArgs = new MeshArgs();\r\n}\r\n\r\n/** @internal */\r\nexport class Mesh {\r\n private readonly _data: TriangleList | MeshPolylineList;\r\n public readonly points: QPoint3dList;\r\n public readonly normals: OctEncodedNormal[] = [];\r\n public readonly uvParams: Point2d[] = [];\r\n public readonly colorMap: ColorMap = new ColorMap(); // used to be called ColorTable\r\n public colors: number[] = [];\r\n public edges?: MeshEdges;\r\n public readonly features?: Mesh.Features;\r\n public readonly type: Mesh.PrimitiveType;\r\n public readonly is2d: boolean;\r\n public readonly isPlanar: boolean;\r\n public readonly hasBakedLighting: boolean;\r\n public readonly isVolumeClassifier: boolean;\r\n public displayParams: DisplayParams;\r\n private _auxChannels?: AuxChannel[];\r\n\r\n private constructor(props: Mesh.Props) {\r\n const { displayParams, features, type, range, is2d, isPlanar } = props;\r\n this._data = Mesh.PrimitiveType.Mesh === type ? new TriangleList() : new MeshPolylineList();\r\n this.displayParams = displayParams;\r\n this.features = features;\r\n this.type = type;\r\n this.is2d = is2d;\r\n this.isPlanar = isPlanar;\r\n this.hasBakedLighting = (true === props.hasBakedLighting);\r\n this.isVolumeClassifier = (true === props.isVolumeClassifier);\r\n this.points = new QPoint3dList(QParams3d.fromRange(range));\r\n }\r\n\r\n public static create(props: Mesh.Props): Mesh { return new Mesh(props); }\r\n\r\n public get triangles(): TriangleList | undefined {\r\n return Mesh.PrimitiveType.Mesh === this.type ? this._data as TriangleList : undefined;\r\n }\r\n\r\n public get polylines(): MeshPolylineList | undefined {\r\n return Mesh.PrimitiveType.Mesh !== this.type ? this._data as MeshPolylineList : undefined;\r\n }\r\n\r\n public get auxChannels(): ReadonlyArray<AuxChannel> | undefined {\r\n return this._auxChannels;\r\n }\r\n\r\n public addAuxChannels(channels: ReadonlyArray<AuxChannel>, srcIndex: number): void {\r\n // The native version of this function appears to assume that all polyfaces added to the Mesh will have\r\n // the same number + type of aux channels.\r\n // ###TODO We should really produce a separate Mesh for each unique combination. For now just bail on mismatch.\r\n if (this._auxChannels) {\r\n if (this._auxChannels.length !== channels.length)\r\n return;\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const src = channels[i];\r\n const dst = this._auxChannels[i];\r\n if (src.dataType !== dst.dataType || src.name !== dst.name || src.inputName !== dst.inputName)\r\n return;\r\n }\r\n }\r\n\r\n if (!this._auxChannels) {\r\n // Copy the channels, leaving each AuxData's values array empty.\r\n this._auxChannels = channels.map((x) => new AuxChannel(x.data.map((y) => new AuxChannelData(y.input, [])), x.dataType, x.name, x.inputName));\r\n }\r\n\r\n // Append the value at srcIndex from each source channel's data to our channels.\r\n for (let channelIndex = 0; channelIndex < channels.length; channelIndex++) {\r\n const srcChannel = channels[channelIndex];\r\n const dstChannel = this._auxChannels[channelIndex];\r\n const dstIndex = dstChannel.valueCount;\r\n for (let dataIndex = 0; dataIndex < srcChannel.data.length; dataIndex++) {\r\n const dstData = dstChannel.data[dataIndex];\r\n dstData.copyValues(srcChannel.data[dataIndex], dstIndex, srcIndex, dstChannel.entriesPerValue);\r\n }\r\n }\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (undefined !== this.features)\r\n this.features.toFeatureIndex(index);\r\n }\r\n\r\n public getGraphics(args: MeshGraphicArgs, system: RenderSystem, instancesOrViewIndependentOrigin?: InstancedGraphicParams | Point3d): RenderGraphic | undefined {\r\n if (undefined !== this.triangles && this.triangles.length !== 0) {\r\n if (args.meshArgs.init(this))\r\n return system.createTriMesh(args.meshArgs, instancesOrViewIndependentOrigin);\r\n } else if (undefined !== this.polylines && this.polylines.length !== 0 && args.polylineArgs.init(this)) {\r\n return system.createIndexedPolylines(args.polylineArgs, instancesOrViewIndependentOrigin);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public addPolyline(poly: MeshPolyline): void {\r\n const { type, polylines } = this;\r\n\r\n assert(Mesh.PrimitiveType.Polyline === type || Mesh.PrimitiveType.Point === type);\r\n assert(undefined !== polylines);\r\n\r\n if (Mesh.PrimitiveType.Polyline === type && poly.indices.length < 2)\r\n return;\r\n\r\n if (undefined !== polylines)\r\n polylines.push(poly);\r\n }\r\n\r\n public addTriangle(triangle: Triangle): void {\r\n const { triangles, type } = this;\r\n\r\n assert(Mesh.PrimitiveType.Mesh === type);\r\n assert(undefined !== triangles);\r\n\r\n if (undefined !== triangles)\r\n triangles.addTriangle(triangle);\r\n }\r\n\r\n public addVertex(props: VertexKeyProps): number {\r\n const { position, normal, uvParam, fillColor } = props;\r\n\r\n this.points.push(position);\r\n\r\n if (undefined !== normal)\r\n this.normals.push(normal);\r\n\r\n if (undefined !== uvParam)\r\n this.uvParams.push(uvParam);\r\n\r\n // Don't allocate color indices until we have non-uniform colors\r\n if (0 === this.colorMap.length) {\r\n this.colorMap.insert(fillColor);\r\n assert(this.colorMap.isUniform);\r\n assert(0 === this.colorMap.indexOf(fillColor));\r\n } else if (!this.colorMap.isUniform || !this.colorMap.hasColor(fillColor)) {\r\n // Back-fill uniform value (index=0) for existing vertices if previously uniform\r\n if (0 === this.colors.length)\r\n this.colors.length = this.points.length - 1;\r\n\r\n this.colors.push(this.colorMap.insert(fillColor));\r\n assert(!this.colorMap.isUniform);\r\n }\r\n\r\n return this.points.length - 1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport namespace Mesh { // eslint-disable-line no-redeclare\r\n export enum PrimitiveType {\r\n Mesh, // eslint-disable-line @typescript-eslint/no-shadow\r\n Polyline,\r\n Point,\r\n }\r\n\r\n export class Features {\r\n public readonly table: FeatureTable;\r\n public indices: number[] = [];\r\n public uniform = 0;\r\n public initialized = false;\r\n\r\n public constructor(table: FeatureTable) { this.table = table; }\r\n\r\n public add(feat: Feature, numVerts: number): void {\r\n const index = this.table.insert(feat);\r\n if (!this.initialized) {\r\n // First feature - uniform.\r\n this.uniform = index;\r\n this.initialized = true;\r\n } else if (0 < this.indices.length) {\r\n // Already non-uniform\r\n this.indices.push(index);\r\n } else {\r\n // Second feature - back-fill uniform for existing verts\r\n while (this.indices.length < numVerts - 1)\r\n this.indices.push(this.uniform);\r\n\r\n this.indices.push(index);\r\n }\r\n }\r\n\r\n public setIndices(indices: number[]) {\r\n this.indices.length = 0;\r\n this.uniform = 0;\r\n this.initialized = 0 < indices.length;\r\n\r\n assert(0 < indices.length);\r\n if (1 === indices.length)\r\n this.uniform = indices[0];\r\n else if (1 < indices.length)\r\n this.indices = indices;\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (!this.initialized) {\r\n index.type = FeatureIndexType.Empty;\r\n } else if (this.indices.length === 0) {\r\n index.type = FeatureIndexType.Uniform;\r\n index.featureID = this.uniform;\r\n } else {\r\n index.type = FeatureIndexType.NonUniform;\r\n index.featureIDs = new Uint32Array(this.indices);\r\n }\r\n }\r\n }\r\n\r\n export interface Props {\r\n displayParams: DisplayParams;\r\n features?: Mesh.Features;\r\n type: Mesh.PrimitiveType;\r\n range: Range3d;\r\n is2d: boolean;\r\n isPlanar: boolean;\r\n hasBakedLighting?: boolean;\r\n isVolumeClassifier?: boolean;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshList extends Array<Mesh> {\r\n public readonly features?: FeatureTable;\r\n public readonly range?: Range3d;\r\n constructor(features?: FeatureTable, range?: Range3d) {\r\n super();\r\n this.features = features;\r\n this.range = range;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"MeshPrimitives.js","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/MeshPrimitives.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAC7C,wDAA6F;AAC7F,oDAG4B;AAI5B,0CAAuC;AACvC,oDAAiD;AACjD,8CAAuD;AAmCvD,gBAAgB;AAChB,IAAiB,YAAY,CAyC5B;AAzCD,WAAiB,YAAY;IAC3B,SAAgB,QAAQ,CAAC,IAAU;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAChD,OAAO,SAAS,CAAC;QAEnB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,MAAM,YAAY,GAAG,IAAI,0BAAY,EAAE,CAAC;YACxC,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAChC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YACxB,OAAO,SAAS,CAAC;QAEnB,MAAM,KAAK,GAAG,IAAI,2BAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAC1D,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,KAAK,6BAAa,CAAC,cAAc,CAAC,OAAO,EAAE;YAC9E,8DAA8D;YAC9D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU;gBACxE,KAAK,CAAC,eAAe,EAAE,CAAC;;gBAExB,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,2CAA2C;SACxE;QAED,MAAM,MAAM,GAAG,IAAI,wBAAU,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,IAAI,0BAAY,EAAE,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE9B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;YAC/B,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;YACzC,KAAK;YACL,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAvCe,qBAAQ,WAuCvB,CAAA;AACH,CAAC,EAzCgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAyC5B;AAED;;GAEG;AACH,MAAa,aAAa;IAA1B;QACS,UAAK,GAAG,IAAI,sBAAQ,EAAE,CAAC;QACvB,gBAAW,GAAG,IAAI,gCAAkB,EAAE,CAAC;QACvC,cAAS,GAAG,IAAI,8BAAgB,EAAE,CAAC;QACnC,UAAK,GAAG,CAAC,CAAC;QACV,eAAU,GAAG,wBAAU,CAAC,KAAK,CAAC;IAUvC,CAAC;IARQ,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,wBAAU,CAAC,KAAK,CAAC;IACrC,CAAC;IACD,IAAW,OAAO,KAAc,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CACnH;AAfD,sCAeC;AA0BD,gBAAgB;AAChB,IAAiB,QAAQ,CAkDxB;AAlDD,WAAiB,QAAQ;IACvB,SAAgB,QAAQ,CAAC,IAAU;;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACvE,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,cAAc,0CAAE,OAAO,CAAC;QAC3D,MAAM,cAAc,GAAG,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9G,MAAM,MAAM,GAAG,IAAI,wBAAU,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,IAAI,0BAAY,EAAE,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;YAC5B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACvC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;YACjD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnC,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAC/C,MAAM,QAAQ,GAAG,IAAI,0BAAY,EAAE,CAAC;gBACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;oBAC7B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC5B;YAED,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACjC;QAED,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACjG,cAAc;YACd,MAAM;YACN,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;YACrC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,IAAI,KAAK,IAAI,CAAC,gBAAgB;YAChD,eAAe,EAAE,KAAK;YACtB,kBAAkB,EAAE,IAAI,KAAK,IAAI,CAAC,kBAAkB;YACpD,KAAK;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;IAhDe,iBAAQ,WAgDvB,CAAA;AACH,CAAC,EAlDgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAkDxB;AAED,gBAAgB;AAChB,MAAa,IAAI;IAiBf,YAAoB,KAAiB;QAdrB,YAAO,GAAuB,EAAE,CAAC;QACjC,aAAQ,GAAc,EAAE,CAAC;QACzB,aAAQ,GAAa,IAAI,mBAAQ,EAAE,CAAC,CAAC,+BAA+B;QAC7E,WAAM,GAAa,EAAE,CAAC;QAY3B,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QACvE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,yBAAY,EAAE,CAAC,CAAC,CAAC,IAAI,8BAAgB,EAAE,CAAC;QAC5F,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAY,CAAC,uBAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5D;aAAM;YACL,MAAM,MAAM,GAAG,EAA4B,CAAC;YAC5C,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,EAAW,EAAE,EAAE;gBAC3B,6EAA6E;gBAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC;YACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,KAAiB,IAAU,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzE,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEM,cAAc,CAAC,QAAmC,EAAE,QAAgB;QACzE,uGAAuG;QACvG,0CAA0C;QAC1C,+GAA+G;QAC/G,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAC9C,OAAO;YAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS;oBAC3F,OAAO;aACV;SACF;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,gEAAgE;YAChE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,0BAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,8BAAc,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;SAC9I;QAED,gFAAgF;QAChF,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;YACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC;YACvC,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;gBACvE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3C,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;aAChG;SACF;IACH,CAAC;IAEM,cAAc,CAAC,KAAmB;QACvC,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEM,UAAU;QACf,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,cAAc;QACnB,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,WAAW,CAAC,MAAoB,EAAE,gCAAmE;QAC1G,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,QAAQ;YACV,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,CAAC;IAEM,WAAW,CAAC,IAAkB;QACnC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEjC,IAAA,qBAAM,EAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAClF,IAAA,qBAAM,EAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACjE,OAAO;QAET,IAAI,SAAS,KAAK,SAAS;YACzB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,QAAkB;QACnC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAEjC,IAAA,qBAAM,EAAC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACzC,IAAA,qBAAM,EAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAEhC,IAAI,SAAS,KAAK,SAAS;YACzB,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,KAAqB;QACpC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1B,IAAI,SAAS,KAAK,MAAM;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,SAAS,KAAK,OAAO;YACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9B,gEAAgE;QAChE,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,IAAA,qBAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAChC,IAAA,qBAAM,EAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SAChD;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACzE,gFAAgF;YAChF,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAE9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAClD,IAAA,qBAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAClC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;CACF;AAhKD,oBAgKC;AAED,gBAAgB;AAChB,WAAiB,IAAI;IACnB,IAAY,aAIX;IAJD,WAAY,aAAa;QACvB,iDAAI,CAAA;QACJ,yDAAQ,CAAA;QACR,mDAAK,CAAA;IACP,CAAC,EAJW,aAAa,GAAb,kBAAa,KAAb,kBAAa,QAIxB;IAED,MAAa,QAAQ;QAMnB,YAAmB,KAAmB;YAJ/B,YAAO,GAAa,EAAE,CAAC;YACvB,YAAO,GAAG,CAAC,CAAC;YACZ,gBAAW,GAAG,KAAK,CAAC;YAEe,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAAC,CAAC;QAExD,GAAG,CAAC,IAAa,EAAE,QAAgB;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,2BAA2B;gBAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;iBAAM,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAClC,sBAAsB;gBACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;iBAAM;gBACL,wDAAwD;gBACxD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC;oBACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAElC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;QAEM,UAAU,CAAC,OAAiB;YACjC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAEtC,IAAA,qBAAM,EAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM;gBACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;iBACvB,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM;gBACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;QAEM,cAAc,CAAC,KAAmB;YACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,KAAK,CAAC,IAAI,GAAG,8BAAgB,CAAC,KAAK,CAAC;aACrC;iBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,KAAK,CAAC,IAAI,GAAG,8BAAgB,CAAC,OAAO,CAAC;gBACtC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;aAChC;iBAAM;gBACL,KAAK,CAAC,IAAI,GAAG,8BAAgB,CAAC,UAAU,CAAC;gBACzC,KAAK,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAClD;QACH,CAAC;KACF;IAjDY,aAAQ,WAiDpB,CAAA;AAaH,CAAC,EArEgB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAqEpB;AAED,gBAAgB;AAChB,MAAa,QAAS,SAAQ,KAAW;IAGvC,YAAY,QAAuB,EAAE,KAAe;QAClD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AARD,4BAQC","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 { assert } from \"@itwin/core-bentley\";\r\nimport { AuxChannel, AuxChannelData, Point2d, Point3d, Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorIndex, EdgeArgs, Feature, FeatureIndex, FeatureIndexType, FeatureTable, FillFlags, LinePixels, MeshEdges, MeshPolyline, MeshPolylineList,\r\n OctEncodedNormal, PolylineData, PolylineEdgeArgs, PolylineFlags, QParams3d, QPoint3dList, RenderMaterial, RenderTexture, SilhouetteEdgeArgs,\r\n} from \"@itwin/core-common\";\r\nimport { InstancedGraphicParams } from \"../../InstancedGraphicParams\";\r\nimport { RenderGraphic } from \"../../RenderGraphic\";\r\nimport { RenderSystem } from \"../../RenderSystem\";\r\nimport { ColorMap } from \"../ColorMap\";\r\nimport { DisplayParams } from \"../DisplayParams\";\r\nimport { Triangle, TriangleList } from \"../Primitives\";\r\nimport { VertexKeyProps } from \"../VertexKey\";\r\n\r\n/** A Point3d[] with an [[add]] method used to enable compatibility with the [[MeshPointList]] union type.\r\n * It is provided a range to contain all of the points. Each point added to the list is transformed to be relative to\r\n * the center of that range.\r\n * In the finished graphic, a transform is applied to transform back from the range's center.\r\n * @internal\r\n */\r\nexport interface Point3dList extends Array<Point3d> {\r\n /** Identical to `push`, except it returns `void` instead of `number`; compatible with [QPoint3dList.add]($common). */\r\n add(point: Point3d): void;\r\n /** The range containing all of the points to be contained in the list, computed in advance. */\r\n range: Range3d;\r\n}\r\n\r\n/** The list of points associated with a [[Mesh]].\r\n * @see [[Mesh.Props.quantizePositions]] to specify whether points should be quantized or not.\r\n * @internal\r\n */\r\nexport type MeshPointList = Point3dList | QPoint3dList;\r\n\r\n/* Information needed to draw a set of indexed polylines using a shared vertex buffer.\r\n * @internal\r\n */\r\nexport interface PolylineArgs {\r\n colors: ColorIndex;\r\n features: FeatureIndex;\r\n width: number;\r\n linePixels: LinePixels;\r\n flags: PolylineFlags;\r\n points: QPoint3dList | Omit<Point3dList, \"add\">;\r\n polylines: PolylineData[];\r\n}\r\n\r\n/** @internal */\r\nexport namespace PolylineArgs {\r\n export function fromMesh(mesh: Mesh): PolylineArgs | undefined {\r\n if (!mesh.polylines || mesh.polylines.length === 0)\r\n return undefined;\r\n\r\n const polylines = [];\r\n for (const polyline of mesh.polylines) {\r\n const polylineData = new PolylineData();\r\n if (polylineData.init(polyline))\r\n polylines.push(polylineData);\r\n }\r\n\r\n if (polylines.length === 0)\r\n return undefined;\r\n\r\n const flags = new PolylineFlags(mesh.is2d, mesh.isPlanar);\r\n flags.isDisjoint = mesh.type === Mesh.PrimitiveType.Point;\r\n if (mesh.displayParams.regionEdgeType === DisplayParams.RegionEdgeType.Outline) {\r\n // This polyline is behaving as the edges of a region surface.\r\n if (!mesh.displayParams.gradient || mesh.displayParams.gradient.isOutlined)\r\n flags.setIsNormalEdge();\r\n else\r\n flags.setIsOutlineEdge(); // edges only displayed if fill undisplayed\r\n }\r\n\r\n const colors = new ColorIndex();\r\n mesh.colorMap.toColorIndex(colors, mesh.colors);\r\n\r\n const features = new FeatureIndex();\r\n mesh.toFeatureIndex(features);\r\n\r\n return {\r\n width: mesh.displayParams.width,\r\n linePixels: mesh.displayParams.linePixels,\r\n flags,\r\n polylines,\r\n points: mesh.points,\r\n colors,\r\n features,\r\n };\r\n }\r\n}\r\n\r\n/** The vertices of the edges are shared with those of the surface\r\n * @internal\r\n */\r\nexport class MeshArgsEdges {\r\n public edges = new EdgeArgs();\r\n public silhouettes = new SilhouetteEdgeArgs();\r\n public polylines = new PolylineEdgeArgs();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n\r\n public clear(): void {\r\n this.edges.clear();\r\n this.silhouettes.clear();\r\n this.polylines.clear();\r\n this.width = 0;\r\n this.linePixels = LinePixels.Solid;\r\n }\r\n public get isValid(): boolean { return this.edges.isValid || this.silhouettes.isValid || this.polylines.isValid; }\r\n}\r\n\r\n/* A carrier of information needed to describe a triangle mesh and its edges.\r\n * @internal\r\n */\r\nexport interface MeshArgs {\r\n edges?: MeshArgsEdges;\r\n vertIndices: number[];\r\n points: QPoint3dList | Omit<Point3dList, \"add\">;\r\n normals?: OctEncodedNormal[];\r\n colors: ColorIndex;\r\n features: FeatureIndex;\r\n fillFlags: FillFlags;\r\n isPlanar?: boolean;\r\n is2d?: boolean;\r\n hasBakedLighting?: boolean;\r\n isVolumeClassifier?: boolean;\r\n hasFixedNormals?: boolean;\r\n auxChannels?: ReadonlyArray<AuxChannel>;\r\n material?: RenderMaterial;\r\n textureMapping?: {\r\n texture: RenderTexture;\r\n uvParams: Point2d[];\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport namespace MeshArgs {\r\n export function fromMesh(mesh: Mesh): MeshArgs | undefined {\r\n if (!mesh.triangles || mesh.triangles.isEmpty || mesh.points.length === 0)\r\n return undefined;\r\n\r\n const texture = mesh.displayParams.textureMapping?.texture;\r\n const textureMapping = texture && mesh.uvParams.length > 0 ? { texture, uvParams: mesh.uvParams } : undefined;\r\n\r\n const colors = new ColorIndex();\r\n mesh.colorMap.toColorIndex(colors, mesh.colors);\r\n\r\n const features = new FeatureIndex();\r\n mesh.toFeatureIndex(features);\r\n\r\n let edges;\r\n if (mesh.edges) {\r\n edges = new MeshArgsEdges();\r\n edges.width = mesh.displayParams.width;\r\n edges.linePixels = mesh.displayParams.linePixels;\r\n edges.edges.init(mesh.edges);\r\n edges.silhouettes.init(mesh.edges);\r\n\r\n const polylines = [];\r\n for (const meshPolyline of mesh.edges.polylines) {\r\n const polyline = new PolylineData();\r\n if (polyline.init(meshPolyline))\r\n polylines.push(polyline);\r\n }\r\n\r\n edges.polylines.init(polylines);\r\n }\r\n\r\n return {\r\n vertIndices: mesh.triangles.indices,\r\n points: mesh.points,\r\n normals: !mesh.displayParams.ignoreLighting && mesh.normals.length > 0 ? mesh.normals : undefined,\r\n textureMapping,\r\n colors,\r\n features,\r\n material: mesh.displayParams.material,\r\n fillFlags: mesh.displayParams.fillFlags,\r\n isPlanar: mesh.isPlanar,\r\n is2d: mesh.is2d,\r\n hasBakedLighting: true === mesh.hasBakedLighting,\r\n hasFixedNormals: false,\r\n isVolumeClassifier: true === mesh.isVolumeClassifier,\r\n edges,\r\n auxChannels: mesh.auxChannels,\r\n };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Mesh {\r\n private readonly _data: TriangleList | MeshPolylineList;\r\n public readonly points: MeshPointList;\r\n public readonly normals: OctEncodedNormal[] = [];\r\n public readonly uvParams: Point2d[] = [];\r\n public readonly colorMap: ColorMap = new ColorMap(); // used to be called ColorTable\r\n public colors: number[] = [];\r\n public edges?: MeshEdges;\r\n public readonly features?: Mesh.Features;\r\n public readonly type: Mesh.PrimitiveType;\r\n public readonly is2d: boolean;\r\n public readonly isPlanar: boolean;\r\n public readonly hasBakedLighting: boolean;\r\n public readonly isVolumeClassifier: boolean;\r\n public displayParams: DisplayParams;\r\n private _auxChannels?: AuxChannel[];\r\n\r\n private constructor(props: Mesh.Props) {\r\n const { displayParams, features, type, range, is2d, isPlanar } = props;\r\n this._data = Mesh.PrimitiveType.Mesh === type ? new TriangleList() : new MeshPolylineList();\r\n this.displayParams = displayParams;\r\n this.features = features;\r\n this.type = type;\r\n this.is2d = is2d;\r\n this.isPlanar = isPlanar;\r\n this.hasBakedLighting = (true === props.hasBakedLighting);\r\n this.isVolumeClassifier = (true === props.isVolumeClassifier);\r\n if (props.quantizePositions) {\r\n this.points = new QPoint3dList(QParams3d.fromRange(range));\r\n } else {\r\n const points = [] as unknown as Point3dList;\r\n points.range = range;\r\n const center = range.center;\r\n points.add = (pt: Point3d) => {\r\n // assert(range.containsPoint(pt)); rounding error triggers this sometimes...\r\n points.push(pt.minus(center));\r\n };\r\n this.points = points;\r\n }\r\n }\r\n\r\n public static create(props: Mesh.Props): Mesh { return new Mesh(props); }\r\n\r\n public get triangles(): TriangleList | undefined {\r\n return Mesh.PrimitiveType.Mesh === this.type ? this._data as TriangleList : undefined;\r\n }\r\n\r\n public get polylines(): MeshPolylineList | undefined {\r\n return Mesh.PrimitiveType.Mesh !== this.type ? this._data as MeshPolylineList : undefined;\r\n }\r\n\r\n public get auxChannels(): ReadonlyArray<AuxChannel> | undefined {\r\n return this._auxChannels;\r\n }\r\n\r\n public addAuxChannels(channels: ReadonlyArray<AuxChannel>, srcIndex: number): void {\r\n // The native version of this function appears to assume that all polyfaces added to the Mesh will have\r\n // the same number + type of aux channels.\r\n // ###TODO We should really produce a separate Mesh for each unique combination. For now just bail on mismatch.\r\n if (this._auxChannels) {\r\n if (this._auxChannels.length !== channels.length)\r\n return;\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const src = channels[i];\r\n const dst = this._auxChannels[i];\r\n if (src.dataType !== dst.dataType || src.name !== dst.name || src.inputName !== dst.inputName)\r\n return;\r\n }\r\n }\r\n\r\n if (!this._auxChannels) {\r\n // Copy the channels, leaving each AuxData's values array empty.\r\n this._auxChannels = channels.map((x) => new AuxChannel(x.data.map((y) => new AuxChannelData(y.input, [])), x.dataType, x.name, x.inputName));\r\n }\r\n\r\n // Append the value at srcIndex from each source channel's data to our channels.\r\n for (let channelIndex = 0; channelIndex < channels.length; channelIndex++) {\r\n const srcChannel = channels[channelIndex];\r\n const dstChannel = this._auxChannels[channelIndex];\r\n const dstIndex = dstChannel.valueCount;\r\n for (let dataIndex = 0; dataIndex < srcChannel.data.length; dataIndex++) {\r\n const dstData = dstChannel.data[dataIndex];\r\n dstData.copyValues(srcChannel.data[dataIndex], dstIndex, srcIndex, dstChannel.entriesPerValue);\r\n }\r\n }\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (undefined !== this.features)\r\n this.features.toFeatureIndex(index);\r\n }\r\n\r\n public toMeshArgs(): MeshArgs | undefined {\r\n return MeshArgs.fromMesh(this);\r\n }\r\n\r\n public toPolylineArgs(): PolylineArgs | undefined {\r\n return PolylineArgs.fromMesh(this);\r\n }\r\n\r\n public getGraphics(system: RenderSystem, instancesOrViewIndependentOrigin?: InstancedGraphicParams | Point3d): RenderGraphic | undefined {\r\n const meshArgs = this.toMeshArgs();\r\n if (meshArgs)\r\n return system.createTriMesh(meshArgs, instancesOrViewIndependentOrigin);\r\n\r\n const plArgs = this.toPolylineArgs();\r\n return plArgs ? system.createIndexedPolylines(plArgs, instancesOrViewIndependentOrigin) : undefined;\r\n }\r\n\r\n public addPolyline(poly: MeshPolyline): void {\r\n const { type, polylines } = this;\r\n\r\n assert(Mesh.PrimitiveType.Polyline === type || Mesh.PrimitiveType.Point === type);\r\n assert(undefined !== polylines);\r\n\r\n if (Mesh.PrimitiveType.Polyline === type && poly.indices.length < 2)\r\n return;\r\n\r\n if (undefined !== polylines)\r\n polylines.push(poly);\r\n }\r\n\r\n public addTriangle(triangle: Triangle): void {\r\n const { triangles, type } = this;\r\n\r\n assert(Mesh.PrimitiveType.Mesh === type);\r\n assert(undefined !== triangles);\r\n\r\n if (undefined !== triangles)\r\n triangles.addTriangle(triangle);\r\n }\r\n\r\n public addVertex(props: VertexKeyProps): number {\r\n const { position, normal, uvParam, fillColor } = props;\r\n\r\n this.points.add(position);\r\n\r\n if (undefined !== normal)\r\n this.normals.push(normal);\r\n\r\n if (undefined !== uvParam)\r\n this.uvParams.push(uvParam);\r\n\r\n // Don't allocate color indices until we have non-uniform colors\r\n if (0 === this.colorMap.length) {\r\n this.colorMap.insert(fillColor);\r\n assert(this.colorMap.isUniform);\r\n assert(0 === this.colorMap.indexOf(fillColor));\r\n } else if (!this.colorMap.isUniform || !this.colorMap.hasColor(fillColor)) {\r\n // Back-fill uniform value (index=0) for existing vertices if previously uniform\r\n if (0 === this.colors.length)\r\n this.colors.length = this.points.length - 1;\r\n\r\n this.colors.push(this.colorMap.insert(fillColor));\r\n assert(!this.colorMap.isUniform);\r\n }\r\n\r\n return this.points.length - 1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport namespace Mesh { // eslint-disable-line no-redeclare\r\n export enum PrimitiveType {\r\n Mesh, // eslint-disable-line @typescript-eslint/no-shadow\r\n Polyline,\r\n Point,\r\n }\r\n\r\n export class Features {\r\n public readonly table: FeatureTable;\r\n public indices: number[] = [];\r\n public uniform = 0;\r\n public initialized = false;\r\n\r\n public constructor(table: FeatureTable) { this.table = table; }\r\n\r\n public add(feat: Feature, numVerts: number): void {\r\n const index = this.table.insert(feat);\r\n if (!this.initialized) {\r\n // First feature - uniform.\r\n this.uniform = index;\r\n this.initialized = true;\r\n } else if (0 < this.indices.length) {\r\n // Already non-uniform\r\n this.indices.push(index);\r\n } else {\r\n // Second feature - back-fill uniform for existing verts\r\n while (this.indices.length < numVerts - 1)\r\n this.indices.push(this.uniform);\r\n\r\n this.indices.push(index);\r\n }\r\n }\r\n\r\n public setIndices(indices: number[]) {\r\n this.indices.length = 0;\r\n this.uniform = 0;\r\n this.initialized = 0 < indices.length;\r\n\r\n assert(0 < indices.length);\r\n if (1 === indices.length)\r\n this.uniform = indices[0];\r\n else if (1 < indices.length)\r\n this.indices = indices;\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (!this.initialized) {\r\n index.type = FeatureIndexType.Empty;\r\n } else if (this.indices.length === 0) {\r\n index.type = FeatureIndexType.Uniform;\r\n index.featureID = this.uniform;\r\n } else {\r\n index.type = FeatureIndexType.NonUniform;\r\n index.featureIDs = new Uint32Array(this.indices);\r\n }\r\n }\r\n }\r\n\r\n export interface Props {\r\n displayParams: DisplayParams;\r\n features?: Mesh.Features;\r\n type: Mesh.PrimitiveType;\r\n range: Range3d;\r\n quantizePositions: boolean;\r\n is2d: boolean;\r\n isPlanar: boolean;\r\n hasBakedLighting?: boolean;\r\n isVolumeClassifier?: boolean;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshList extends Array<Mesh> {\r\n public readonly features?: FeatureTable;\r\n public readonly range?: Range3d;\r\n constructor(features?: FeatureTable, range?: Range3d) {\r\n super();\r\n this.features = features;\r\n this.range = range;\r\n }\r\n}\r\n"]}
|
|
@@ -58,6 +58,11 @@ export declare abstract class CachedGeometry implements WebGLDisposable, RenderM
|
|
|
58
58
|
get isLitSurface(): boolean;
|
|
59
59
|
get hasBakedLighting(): boolean;
|
|
60
60
|
get hasAnimation(): boolean;
|
|
61
|
+
/** If false, the geometry's positions are not quantized.
|
|
62
|
+
* qOrigin and qScale can still be used to derive the geometry's range, but will not be passed to the shader.
|
|
63
|
+
* see VertexLUT.usesQuantizedPositions.
|
|
64
|
+
*/
|
|
65
|
+
get usesQuantizedPositions(): boolean;
|
|
61
66
|
/** Returns the origin of this geometry's quantization parameters. */
|
|
62
67
|
abstract get qOrigin(): Float32Array;
|
|
63
68
|
/** Returns the scale of this geometry's quantization parameters. */
|
|
@@ -94,6 +99,7 @@ export declare abstract class LUTGeometry extends CachedGeometry {
|
|
|
94
99
|
draw(): void;
|
|
95
100
|
drawInstanced(numInstances: number, instanceBuffersContainer: BuffersContainer): void;
|
|
96
101
|
getColor(_target: Target): ColorInfo;
|
|
102
|
+
get usesQuantizedPositions(): boolean;
|
|
97
103
|
get qOrigin(): Float32Array;
|
|
98
104
|
get qScale(): Float32Array;
|
|
99
105
|
get hasAnimation(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachedGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/CachedGeometry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CachedGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/CachedGeometry.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,11 @@ class CachedGeometry {
|
|
|
61
61
|
get hasBakedLighting() { return false; }
|
|
62
62
|
// Returns true if this primitive contains auxillary animation data.
|
|
63
63
|
get hasAnimation() { return false; }
|
|
64
|
+
/** If false, the geometry's positions are not quantized.
|
|
65
|
+
* qOrigin and qScale can still be used to derive the geometry's range, but will not be passed to the shader.
|
|
66
|
+
* see VertexLUT.usesQuantizedPositions.
|
|
67
|
+
*/
|
|
68
|
+
get usesQuantizedPositions() { return true; }
|
|
64
69
|
// Intended to be overridden by specific subclasses
|
|
65
70
|
get materialInfo() { return undefined; }
|
|
66
71
|
get hasMaterialAtlas() {
|
|
@@ -139,6 +144,7 @@ class LUTGeometry extends CachedGeometry {
|
|
|
139
144
|
drawInstanced(numInstances, instanceBuffersContainer) { this._draw(numInstances, instanceBuffersContainer); }
|
|
140
145
|
// Override this if your color varies based on the target
|
|
141
146
|
getColor(_target) { return this.lut.colorInfo; }
|
|
147
|
+
get usesQuantizedPositions() { return this.lut.usesQuantizedPositions; }
|
|
142
148
|
get qOrigin() { return this.lut.qOrigin; }
|
|
143
149
|
get qScale() { return this.lut.qScale; }
|
|
144
150
|
get hasAnimation() { return this.lut.hasAnimation; }
|