@itwin/core-frontend 3.0.0-dev.85 → 3.0.0-dev.89
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/ContextRealityModelState.d.ts.map +1 -1
- package/lib/cjs/ContextRealityModelState.js +1 -6
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts +6 -6
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +2 -2
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/EmphasizeElements.d.ts +1 -1
- package/lib/cjs/EmphasizeElements.js +1 -1
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/ModelState.d.ts +1 -1
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +2 -11
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts +3 -1
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +26 -0
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.d.ts +2 -1
- package/lib/cjs/render/webgl/EdgeSettings.d.ts.map +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.js +3 -6
- package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +6 -5
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +10 -5
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/StyleUniforms.d.ts +2 -0
- package/lib/cjs/render/webgl/StyleUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/StyleUniforms.js +5 -0
- package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts +3 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +32 -2
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +5 -5
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.js +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +3 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +2 -2
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +46 -16
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
- package/lib/esm/ContextRealityModelState.js +2 -7
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts +6 -6
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +2 -2
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/EmphasizeElements.d.ts +1 -1
- package/lib/esm/EmphasizeElements.js +1 -1
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/ModelState.d.ts +1 -1
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +3 -12
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts +3 -1
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +26 -0
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/render/webgl/EdgeSettings.d.ts +2 -1
- package/lib/esm/render/webgl/EdgeSettings.d.ts.map +1 -1
- package/lib/esm/render/webgl/EdgeSettings.js +3 -6
- package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +6 -5
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +10 -5
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/StyleUniforms.d.ts +2 -0
- package/lib/esm/render/webgl/StyleUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/StyleUniforms.js +5 -0
- package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -1
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts +3 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +30 -1
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +5 -5
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarGrid.js +1 -1
- package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +3 -1
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +2 -2
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +1 -1
- package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
- package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +47 -17
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/package.json +25 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Polyline.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 WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, ShaderBuilderFlags, VariableType, VertexShaderBuilder, VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { IsInstanced } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addFrustum, addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addLineCode as addLineCodeUniform, addLineWeight, addModelViewMatrix, addProjectionMatrix } from \"./Vertex\";\r\nimport { addModelToWindowCoordinates, addViewport } from \"./Viewport\";\r\n\r\nconst checkForDiscard = \"return discardByLineCode;\";\r\n\r\nconst applyLineCode = `\r\n if (v_texc.x >= 0.0) { // v_texc = (-1,-1) for solid lines - don't bother with any of this\r\n vec4 texColor = TEXTURE(u_lineCodeTexture, v_texc);\r\n discardByLineCode = (0.0 == texColor.r);\r\n }\r\n\r\n if (v_lnInfo.w > 0.5) { // line needs pixel trimming\r\n // calculate pixel distance from pixel center to expected line center, opposite dir from major\r\n vec2 dxy = gl_FragCoord.xy - v_lnInfo.xy;\r\n if (v_lnInfo.w < 1.5) // not x-major\r\n dxy = dxy.yx;\r\n\r\n float dist = v_lnInfo.z * dxy.x - dxy.y;\r\n float distA = abs(dist);\r\n if (distA > 0.5 || (distA == 0.5 && dist < 0.0))\r\n discardByLineCode = true; // borrow this flag to force discard\r\n }\r\n\r\n return baseColor;\r\n`;\r\n\r\nconst computeTextureCoord = `\r\nvec2 computeLineCodeTextureCoords(vec2 windowDir, vec4 projPos, float adjust) {\r\n vec2 texc;\r\n float lineCode = computeLineCode();\r\n if (0.0 == lineCode) {\r\n // Solid line - tell frag shader not to bother.\r\n texc = vec2(-1.0, -1.0);\r\n } else {\r\n const float imagesPerPixel = 1.0/32.0;\r\n const float textureCoordinateBase = 8192.0; // Temp workardound for clipping problem in perspective views (negative values don't seem to interpolate correctly).\r\n\r\n if (abs(windowDir.x) > abs(windowDir.y))\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.x + adjust * windowDir.x);\r\n else\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.y + adjust * windowDir.y);\r\n\r\n const float numLineCodes = 16.0; // NB: Actually only 10, but texture is 16px tall because it needs to be a power of 2.\r\n const float rowsPerCode = 1.0;\r\n const float numRows = numLineCodes*rowsPerCode;\r\n const float centerY = 0.5/numRows;\r\n const float stepY = rowsPerCode/numRows;\r\n texc.y = stepY * lineCode + centerY;\r\n }\r\n\r\n return texc;\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport const adjustWidth = `\r\nvoid adjustWidth(inout float width, vec2 d2, vec2 org) {\r\n if (u_aaSamples > 1) {\r\n if (width < 5.0)\r\n width += (5.0 - width) * 0.125;\r\n return;\r\n }\r\n\r\n // calculate slope based width adjustment for non-AA lines, widths 1 to 4\r\n vec2 d2A = abs(d2);\r\n const float s_myFltEpsilon = 0.0001; // limit test resolution to 4 digits in case 24 bit (s16e7) is used in hardware\r\n if (d2A.y > s_myFltEpsilon && width < 4.5) {\r\n float len = length(d2A);\r\n float tan = d2A.x / d2A.y;\r\n\r\n if (width < 1.5) { // width 1\r\n if (tan <= 1.0)\r\n width = d2A.y;\r\n else\r\n width = d2A.x;\r\n // width 1 requires additional adjustment plus trimming in frag shader using v_lnInfo\r\n width *= 1.01;\r\n v_lnInfo.xy = org;\r\n v_lnInfo.w = 1.0; // set flag to do trimming\r\n // set slope in v_lnInfo.z\r\n if (d2A.x - d2A.y > s_myFltEpsilon) {\r\n v_lnInfo.z = d2.y / d2.x;\r\n v_lnInfo.w += 2.0; // add in x-major flag\r\n } else\r\n v_lnInfo.z = d2.x / d2.y;\r\n\r\n } else if (width < 2.5) { // width 2\r\n if (tan <= 0.5)\r\n width = 2.0 * d2A.y;\r\n else\r\n width = (d2A.y + 2.0 * d2A.x);\r\n\r\n } else if (width < 3.5) { // width 3\r\n if (tan <= 1.0)\r\n width = (3.0 * d2A.y + d2A.x);\r\n else\r\n width = (d2A.y + 3.0 * d2A.x);\r\n\r\n } else { // if (width < 4.5) // width 4\r\n if (tan <= 0.5)\r\n width = (4.0 * d2A.y + d2A.x);\r\n else if (tan <= 2.0)\r\n width = (3.0 * d2A.y + 3.0 * d2A.x);\r\n else\r\n width = (d2A.y + 4.0 * d2A.x);\r\n }\r\n width /= len;\r\n }\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addAdjustWidth(vert: VertexShaderBuilder) {\r\n vert.addUniform(\"u_aaSamples\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_aaSamples\", (attr, params) => {\r\n const numSamples = System.instance.frameBufferStack.currentFbMultisampled ? params.target.compositor.antialiasSamples : 1;\r\n attr.setUniform1i(numSamples);\r\n });\r\n });\r\n vert.addFunction(adjustWidth);\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCodeTexture(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_lineCodeTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_lineCodeTexture\", (uniform) => {\r\n const lct = System.instance.lineCodeTexture;\r\n assert(undefined !== lct);\r\n if (undefined !== lct)\r\n lct.bindSampler(uniform, TextureUnit.LineCode);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCode(prog: ProgramBuilder, args: string) {\r\n const vert = prog.vert;\r\n const frag = prog.frag;\r\n\r\n addLineCodeUniform(vert);\r\n\r\n const funcCall: string = `computeLineCodeTextureCoords(${args})`;\r\n\r\n prog.addFunctionComputedVaryingWithArgs(\"v_texc\", VariableType.Vec2, funcCall, computeTextureCoord);\r\n\r\n addFrustum(prog);\r\n addLineCodeTexture(prog.frag);\r\n\r\n frag.set(FragmentShaderComponent.FinalizeBaseColor, applyLineCode);\r\n frag.set(FragmentShaderComponent.CheckForDiscard, checkForDiscard);\r\n frag.addGlobal(\"discardByLineCode\", VariableType.Boolean, \"false\");\r\n}\r\n\r\nfunction polylineAddLineCode(prog: ProgramBuilder) {\r\n addLineCode(prog, lineCodeArgs);\r\n addModelViewMatrix(prog.vert);\r\n}\r\n\r\nfunction addCommon(prog: ProgramBuilder) {\r\n const vert = prog.vert;\r\n addModelToWindowCoordinates(vert); // adds u_mvp, u_viewportTransformation\r\n addProjectionMatrix(vert);\r\n addModelViewMatrix(vert);\r\n addViewport(vert);\r\n\r\n vert.addGlobal(\"g_windowPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_prevPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_nextPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_windowDir\", VariableType.Vec2);\r\n vert.addInitializer(decodeAdjacentPositions);\r\n\r\n vert.addFunction(unquantize2d);\r\n\r\n addLineWeight(vert);\r\n\r\n vert.addGlobal(\"miterAdjust\", VariableType.Float, \"0.0\");\r\n prog.addVarying(\"v_eyeSpace\", VariableType.Vec3);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n prog.addVarying(\"v_lnInfo\", VariableType.Vec4);\r\n addAdjustWidth(vert);\r\n vert.addFunction(decodePosition);\r\n}\r\n\r\nconst decodePosition = `\r\nvec4 decodePosition(vec3 baseIndex) {\r\n float index = decodeUInt24(baseIndex);\r\n vec2 tc = compute_vert_coords(index);\r\n vec4 e0 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n tc.x += g_vert_stepX;\r\n vec4 e1 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n vec3 qpos = vec3(decodeUInt16(e0.xy), decodeUInt16(e0.zw), decodeUInt16(e1.xy));\r\n return unquantizePosition(qpos, u_qOrigin, u_qScale);\r\n}\r\n`;\r\n\r\nconst decodeAdjacentPositions = `\r\n g_prevPos = decodePosition(a_prevIndex);\r\n g_nextPos = decodePosition(a_nextIndex);\r\n`;\r\n\r\nconst computePosition = `\r\n const float kNone = 0.0,\r\n kSquare = 1.0*3.0,\r\n kMiter = 2.0*3.0,\r\n kMiterInsideOnly = 3.0*3.0,\r\n kJointBase = 4.0*3.0,\r\n kNegatePerp = 8.0*3.0,\r\n kNegateAlong = 16.0*3.0,\r\n kNoneAdjWt = 32.0*3.0;\r\n\r\n v_lnInfo = vec4(0.0, 0.0, 0.0, 0.0); // init and set flag to false\r\n\r\n vec4 next = g_nextPos;\r\n vec4 pos;\r\n g_windowPos = modelToWindowCoordinates(rawPos, next, pos, v_eyeSpace);\r\n if (g_windowPos.w == 0.0)\r\n return g_windowPos;\r\n\r\n float param = a_param;\r\n float weight = computeLineWeight();\r\n float scale = 1.0, directionScale = 1.0;\r\n\r\n if (param >= kNoneAdjWt)\r\n param -= kNoneAdjWt;\r\n\r\n if (param >= kNegateAlong) {\r\n directionScale = -directionScale;\r\n param -= kNegateAlong;\r\n }\r\n\r\n if (param >= kNegatePerp) {\r\n scale = -1.0;\r\n param -= kNegatePerp;\r\n }\r\n\r\n vec4 otherPos;\r\n vec3 otherMvPos;\r\n vec4 projNext = modelToWindowCoordinates(next, rawPos, otherPos, otherMvPos);\r\n g_windowDir = projNext.xy - g_windowPos.xy;\r\n\r\n if (param < kJointBase) {\r\n vec2 dir = (directionScale > 0.0) ? g_windowDir : -g_windowDir;\r\n vec2 pos = (directionScale > 0.0) ? g_windowPos.xy : projNext.xy;\r\n adjustWidth(weight, dir, pos);\r\n }\r\n\r\n if (kNone != param) {\r\n vec2 delta = vec2(0.0);\r\n vec4 prev = g_prevPos;\r\n vec4 projPrev = modelToWindowCoordinates(prev, rawPos, otherPos, otherMvPos);\r\n vec2 prevDir = g_windowPos.xy - projPrev.xy;\r\n float thisLength = sqrt(g_windowDir.x * g_windowDir.x + g_windowDir.y * g_windowDir.y);\r\n const float s_minNormalizeLength = 1.0E-5; // avoid normalizing zero length vectors.\r\n float dist = weight / 2.0;\r\n\r\n if (thisLength > s_minNormalizeLength) {\r\n g_windowDir /= thisLength;\r\n\r\n float prevLength = sqrt(prevDir.x * prevDir.x + prevDir.y * prevDir.y);\r\n\r\n if (prevLength > s_minNormalizeLength) {\r\n prevDir /= prevLength;\r\n const float s_minParallelDot= -.9999, s_maxParallelDot = .9999;\r\n float prevNextDot = dot(prevDir, g_windowDir);\r\n\r\n if (prevNextDot < s_minParallelDot || prevNextDot > s_maxParallelDot) // No miter if parallel or antiparallel.\r\n param = kSquare;\r\n } else\r\n param = kSquare;\r\n } else {\r\n g_windowDir = -normalize(prevDir);\r\n param = kSquare;\r\n }\r\n\r\n vec2 perp = scale * vec2(-g_windowDir.y, g_windowDir.x);\r\n\r\n if (param == kSquare) {\r\n delta = perp;\r\n } else {\r\n vec2 bisector = normalize(prevDir - g_windowDir);\r\n float dotP = dot (bisector, perp);\r\n\r\n if (dotP != 0.0) { // Should never occur - but avoid divide by zero.\r\n const float maxMiter = 3.0;\r\n float miterDistance = 1.0/dotP;\r\n\r\n if (param == kMiter) { // Straight miter.\r\n delta = (abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else if (param == kMiterInsideOnly) { // Miter at inside, square at outside (to make room for joint).\r\n delta = (dotP > 0.0 || abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else {\r\n const float jointTriangleCount = 3.0;\r\n float ratio = (param - kJointBase) / jointTriangleCount; // 3 triangles per half-joint as defined in Graphics.cpp\r\n delta = normalize((1.0 - ratio) * bisector + (dotP < 0.0 ? -ratio : ratio) * perp); // Miter/Straight combination.\r\n }\r\n }\r\n }\r\n\r\n miterAdjust = dot(g_windowDir, delta) * dist; // Not actually used for hilite shader but meh.\r\n pos.x += dist * delta.x * 2.0 * pos.w / u_viewport.x;\r\n pos.y += dist * delta.y * 2.0 * pos.w / u_viewport.y;\r\n }\r\n\r\n return pos;\r\n`;\r\n\r\nconst lineCodeArgs = \"g_windowDir, g_windowPos, miterAdjust\";\r\n\r\n/** @internal */\r\nexport function createPolylineBuilder(instanced: IsInstanced): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.Polyline, IsInstanced.Yes === instanced), instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n addShaderFlags(builder);\r\n\r\n addCommon(builder);\r\n\r\n polylineAddLineCode(builder);\r\n\r\n addColor(builder);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPolylineHiliter(instanced: IsInstanced): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.Polyline, IsInstanced.Yes === instanced), instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n addCommon(builder);\r\n addFrustum(builder);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Polyline.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 WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, ShaderBuilderFlags, VariableType, VertexShaderBuilder, VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { IsInstanced } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addEdgeContrast } from \"./Edge\";\r\nimport { addFrustum, addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addLineCode as addLineCodeUniform, addLineWeight, addModelViewMatrix, addProjectionMatrix } from \"./Vertex\";\r\nimport { addModelToWindowCoordinates, addViewport } from \"./Viewport\";\r\n\r\nconst checkForDiscard = \"return discardByLineCode;\";\r\n\r\nconst applyLineCode = `\r\n if (v_texc.x >= 0.0) { // v_texc = (-1,-1) for solid lines - don't bother with any of this\r\n vec4 texColor = TEXTURE(u_lineCodeTexture, v_texc);\r\n discardByLineCode = (0.0 == texColor.r);\r\n }\r\n\r\n if (v_lnInfo.w > 0.5) { // line needs pixel trimming\r\n // calculate pixel distance from pixel center to expected line center, opposite dir from major\r\n vec2 dxy = gl_FragCoord.xy - v_lnInfo.xy;\r\n if (v_lnInfo.w < 1.5) // not x-major\r\n dxy = dxy.yx;\r\n\r\n float dist = v_lnInfo.z * dxy.x - dxy.y;\r\n float distA = abs(dist);\r\n if (distA > 0.5 || (distA == 0.5 && dist < 0.0))\r\n discardByLineCode = true; // borrow this flag to force discard\r\n }\r\n\r\n return baseColor;\r\n`;\r\n\r\nconst computeTextureCoord = `\r\nvec2 computeLineCodeTextureCoords(vec2 windowDir, vec4 projPos, float adjust) {\r\n vec2 texc;\r\n float lineCode = computeLineCode();\r\n if (0.0 == lineCode) {\r\n // Solid line - tell frag shader not to bother.\r\n texc = vec2(-1.0, -1.0);\r\n } else {\r\n const float imagesPerPixel = 1.0/32.0;\r\n const float textureCoordinateBase = 8192.0; // Temp workardound for clipping problem in perspective views (negative values don't seem to interpolate correctly).\r\n\r\n if (abs(windowDir.x) > abs(windowDir.y))\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.x + adjust * windowDir.x);\r\n else\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.y + adjust * windowDir.y);\r\n\r\n const float numLineCodes = 16.0; // NB: Actually only 10, but texture is 16px tall because it needs to be a power of 2.\r\n const float rowsPerCode = 1.0;\r\n const float numRows = numLineCodes*rowsPerCode;\r\n const float centerY = 0.5/numRows;\r\n const float stepY = rowsPerCode/numRows;\r\n texc.y = stepY * lineCode + centerY;\r\n }\r\n\r\n return texc;\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport const adjustWidth = `\r\nvoid adjustWidth(inout float width, vec2 d2, vec2 org) {\r\n if (u_aaSamples > 1) {\r\n if (width < 5.0)\r\n width += (5.0 - width) * 0.125;\r\n return;\r\n }\r\n\r\n // calculate slope based width adjustment for non-AA lines, widths 1 to 4\r\n vec2 d2A = abs(d2);\r\n const float s_myFltEpsilon = 0.0001; // limit test resolution to 4 digits in case 24 bit (s16e7) is used in hardware\r\n if (d2A.y > s_myFltEpsilon && width < 4.5) {\r\n float len = length(d2A);\r\n float tan = d2A.x / d2A.y;\r\n\r\n if (width < 1.5) { // width 1\r\n if (tan <= 1.0)\r\n width = d2A.y;\r\n else\r\n width = d2A.x;\r\n // width 1 requires additional adjustment plus trimming in frag shader using v_lnInfo\r\n width *= 1.01;\r\n v_lnInfo.xy = org;\r\n v_lnInfo.w = 1.0; // set flag to do trimming\r\n // set slope in v_lnInfo.z\r\n if (d2A.x - d2A.y > s_myFltEpsilon) {\r\n v_lnInfo.z = d2.y / d2.x;\r\n v_lnInfo.w += 2.0; // add in x-major flag\r\n } else\r\n v_lnInfo.z = d2.x / d2.y;\r\n\r\n } else if (width < 2.5) { // width 2\r\n if (tan <= 0.5)\r\n width = 2.0 * d2A.y;\r\n else\r\n width = (d2A.y + 2.0 * d2A.x);\r\n\r\n } else if (width < 3.5) { // width 3\r\n if (tan <= 1.0)\r\n width = (3.0 * d2A.y + d2A.x);\r\n else\r\n width = (d2A.y + 3.0 * d2A.x);\r\n\r\n } else { // if (width < 4.5) // width 4\r\n if (tan <= 0.5)\r\n width = (4.0 * d2A.y + d2A.x);\r\n else if (tan <= 2.0)\r\n width = (3.0 * d2A.y + 3.0 * d2A.x);\r\n else\r\n width = (d2A.y + 4.0 * d2A.x);\r\n }\r\n width /= len;\r\n }\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addAdjustWidth(vert: VertexShaderBuilder) {\r\n vert.addUniform(\"u_aaSamples\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_aaSamples\", (attr, params) => {\r\n const numSamples = System.instance.frameBufferStack.currentFbMultisampled ? params.target.compositor.antialiasSamples : 1;\r\n attr.setUniform1i(numSamples);\r\n });\r\n });\r\n vert.addFunction(adjustWidth);\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCodeTexture(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_lineCodeTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_lineCodeTexture\", (uniform) => {\r\n const lct = System.instance.lineCodeTexture;\r\n assert(undefined !== lct);\r\n if (undefined !== lct)\r\n lct.bindSampler(uniform, TextureUnit.LineCode);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCode(prog: ProgramBuilder, args: string) {\r\n const vert = prog.vert;\r\n const frag = prog.frag;\r\n\r\n addLineCodeUniform(vert);\r\n\r\n const funcCall: string = `computeLineCodeTextureCoords(${args})`;\r\n\r\n prog.addFunctionComputedVaryingWithArgs(\"v_texc\", VariableType.Vec2, funcCall, computeTextureCoord);\r\n\r\n addFrustum(prog);\r\n addLineCodeTexture(prog.frag);\r\n\r\n frag.set(FragmentShaderComponent.FinalizeBaseColor, applyLineCode);\r\n frag.set(FragmentShaderComponent.CheckForDiscard, checkForDiscard);\r\n frag.addGlobal(\"discardByLineCode\", VariableType.Boolean, \"false\");\r\n}\r\n\r\nfunction polylineAddLineCode(prog: ProgramBuilder) {\r\n addLineCode(prog, lineCodeArgs);\r\n addModelViewMatrix(prog.vert);\r\n}\r\n\r\nfunction addCommon(prog: ProgramBuilder) {\r\n const vert = prog.vert;\r\n addModelToWindowCoordinates(vert); // adds u_mvp, u_viewportTransformation\r\n addProjectionMatrix(vert);\r\n addModelViewMatrix(vert);\r\n addViewport(vert);\r\n\r\n vert.addGlobal(\"g_windowPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_prevPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_nextPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_windowDir\", VariableType.Vec2);\r\n vert.addInitializer(decodeAdjacentPositions);\r\n\r\n vert.addFunction(unquantize2d);\r\n\r\n addLineWeight(vert);\r\n\r\n vert.addGlobal(\"miterAdjust\", VariableType.Float, \"0.0\");\r\n prog.addVarying(\"v_eyeSpace\", VariableType.Vec3);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n prog.addVarying(\"v_lnInfo\", VariableType.Vec4);\r\n addAdjustWidth(vert);\r\n vert.addFunction(decodePosition);\r\n}\r\n\r\nconst decodePosition = `\r\nvec4 decodePosition(vec3 baseIndex) {\r\n float index = decodeUInt24(baseIndex);\r\n vec2 tc = compute_vert_coords(index);\r\n vec4 e0 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n tc.x += g_vert_stepX;\r\n vec4 e1 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n vec3 qpos = vec3(decodeUInt16(e0.xy), decodeUInt16(e0.zw), decodeUInt16(e1.xy));\r\n return unquantizePosition(qpos, u_qOrigin, u_qScale);\r\n}\r\n`;\r\n\r\nconst decodeAdjacentPositions = `\r\n g_prevPos = decodePosition(a_prevIndex);\r\n g_nextPos = decodePosition(a_nextIndex);\r\n`;\r\n\r\nconst computePosition = `\r\n const float kNone = 0.0,\r\n kSquare = 1.0*3.0,\r\n kMiter = 2.0*3.0,\r\n kMiterInsideOnly = 3.0*3.0,\r\n kJointBase = 4.0*3.0,\r\n kNegatePerp = 8.0*3.0,\r\n kNegateAlong = 16.0*3.0,\r\n kNoneAdjWt = 32.0*3.0;\r\n\r\n v_lnInfo = vec4(0.0, 0.0, 0.0, 0.0); // init and set flag to false\r\n\r\n vec4 next = g_nextPos;\r\n vec4 pos;\r\n g_windowPos = modelToWindowCoordinates(rawPos, next, pos, v_eyeSpace);\r\n if (g_windowPos.w == 0.0)\r\n return g_windowPos;\r\n\r\n float param = a_param;\r\n float weight = computeLineWeight();\r\n float scale = 1.0, directionScale = 1.0;\r\n\r\n if (param >= kNoneAdjWt)\r\n param -= kNoneAdjWt;\r\n\r\n if (param >= kNegateAlong) {\r\n directionScale = -directionScale;\r\n param -= kNegateAlong;\r\n }\r\n\r\n if (param >= kNegatePerp) {\r\n scale = -1.0;\r\n param -= kNegatePerp;\r\n }\r\n\r\n vec4 otherPos;\r\n vec3 otherMvPos;\r\n vec4 projNext = modelToWindowCoordinates(next, rawPos, otherPos, otherMvPos);\r\n g_windowDir = projNext.xy - g_windowPos.xy;\r\n\r\n if (param < kJointBase) {\r\n vec2 dir = (directionScale > 0.0) ? g_windowDir : -g_windowDir;\r\n vec2 pos = (directionScale > 0.0) ? g_windowPos.xy : projNext.xy;\r\n adjustWidth(weight, dir, pos);\r\n }\r\n\r\n if (kNone != param) {\r\n vec2 delta = vec2(0.0);\r\n vec4 prev = g_prevPos;\r\n vec4 projPrev = modelToWindowCoordinates(prev, rawPos, otherPos, otherMvPos);\r\n vec2 prevDir = g_windowPos.xy - projPrev.xy;\r\n float thisLength = sqrt(g_windowDir.x * g_windowDir.x + g_windowDir.y * g_windowDir.y);\r\n const float s_minNormalizeLength = 1.0E-5; // avoid normalizing zero length vectors.\r\n float dist = weight / 2.0;\r\n\r\n if (thisLength > s_minNormalizeLength) {\r\n g_windowDir /= thisLength;\r\n\r\n float prevLength = sqrt(prevDir.x * prevDir.x + prevDir.y * prevDir.y);\r\n\r\n if (prevLength > s_minNormalizeLength) {\r\n prevDir /= prevLength;\r\n const float s_minParallelDot= -.9999, s_maxParallelDot = .9999;\r\n float prevNextDot = dot(prevDir, g_windowDir);\r\n\r\n if (prevNextDot < s_minParallelDot || prevNextDot > s_maxParallelDot) // No miter if parallel or antiparallel.\r\n param = kSquare;\r\n } else\r\n param = kSquare;\r\n } else {\r\n g_windowDir = -normalize(prevDir);\r\n param = kSquare;\r\n }\r\n\r\n vec2 perp = scale * vec2(-g_windowDir.y, g_windowDir.x);\r\n\r\n if (param == kSquare) {\r\n delta = perp;\r\n } else {\r\n vec2 bisector = normalize(prevDir - g_windowDir);\r\n float dotP = dot (bisector, perp);\r\n\r\n if (dotP != 0.0) { // Should never occur - but avoid divide by zero.\r\n const float maxMiter = 3.0;\r\n float miterDistance = 1.0/dotP;\r\n\r\n if (param == kMiter) { // Straight miter.\r\n delta = (abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else if (param == kMiterInsideOnly) { // Miter at inside, square at outside (to make room for joint).\r\n delta = (dotP > 0.0 || abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else {\r\n const float jointTriangleCount = 3.0;\r\n float ratio = (param - kJointBase) / jointTriangleCount; // 3 triangles per half-joint as defined in Graphics.cpp\r\n delta = normalize((1.0 - ratio) * bisector + (dotP < 0.0 ? -ratio : ratio) * perp); // Miter/Straight combination.\r\n }\r\n }\r\n }\r\n\r\n miterAdjust = dot(g_windowDir, delta) * dist; // Not actually used for hilite shader but meh.\r\n pos.x += dist * delta.x * 2.0 * pos.w / u_viewport.x;\r\n pos.y += dist * delta.y * 2.0 * pos.w / u_viewport.y;\r\n }\r\n\r\n return pos;\r\n`;\r\n\r\nconst lineCodeArgs = \"g_windowDir, g_windowPos, miterAdjust\";\r\n\r\n/** @internal */\r\nexport function createPolylineBuilder(instanced: IsInstanced): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.Polyline, IsInstanced.Yes === instanced), instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n addShaderFlags(builder);\r\n\r\n addCommon(builder);\r\n\r\n polylineAddLineCode(builder);\r\n\r\n addColor(builder);\r\n addEdgeContrast(builder.vert);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPolylineHiliter(instanced: IsInstanced): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.Polyline, IsInstanced.Yes === instanced), instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n addCommon(builder);\r\n addFrustum(builder);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n"]}
|
|
@@ -153,7 +153,7 @@ function addColorOverrideMix(frag) {
|
|
|
153
153
|
function createRealityMeshHiliterBuilder() {
|
|
154
154
|
const builder = new ProgramBuilder(AttributeMap.findAttributeMap(6 /* RealityMesh */, false));
|
|
155
155
|
const vert = builder.vert;
|
|
156
|
-
vert.set(
|
|
156
|
+
vert.set(9 /* ComputePosition */, computePosition);
|
|
157
157
|
addModelViewProjectionMatrix(vert);
|
|
158
158
|
builder.frag.set(15 /* AssignFragData */, assignFragColor);
|
|
159
159
|
return builder;
|
|
@@ -174,7 +174,7 @@ export function createRealityMeshHiliter() {
|
|
|
174
174
|
export default function createRealityMeshBuilder(flags) {
|
|
175
175
|
const builder = new ProgramBuilder(AttributeMap.findAttributeMap(6 /* RealityMesh */, false));
|
|
176
176
|
const vert = builder.vert;
|
|
177
|
-
vert.set(
|
|
177
|
+
vert.set(9 /* ComputePosition */, computePosition);
|
|
178
178
|
addModelViewProjectionMatrix(vert);
|
|
179
179
|
if (flags.isShadowable === 1 /* Yes */)
|
|
180
180
|
addSolarShadowMap(builder, true);
|
|
@@ -28,7 +28,7 @@ export function createScreenSpaceEffectProgramBuilder(params) {
|
|
|
28
28
|
if (params.textureCoordFromPosition)
|
|
29
29
|
builder.vert.addFunction(textureCoordFromPosition);
|
|
30
30
|
builder.vert.addFunction(params.source.vertex);
|
|
31
|
-
builder.vert.set(
|
|
31
|
+
builder.vert.set(9 /* ComputePosition */, computePosition);
|
|
32
32
|
if (params.source.sampleSourcePixel)
|
|
33
33
|
builder.frag.addFunction("vec4 sampleSourcePixel()", params.source.sampleSourcePixel);
|
|
34
34
|
builder.frag.addFunction(params.source.fragment);
|
|
@@ -19,7 +19,7 @@ export function createSkyBoxProgram(context) {
|
|
|
19
19
|
const prog = new ProgramBuilder(AttributeMap.findAttributeMap(undefined, false));
|
|
20
20
|
prog.frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
21
21
|
prog.frag.set(15 /* AssignFragData */, assignFragData);
|
|
22
|
-
prog.vert.set(
|
|
22
|
+
prog.vert.set(9 /* ComputePosition */, computePosition);
|
|
23
23
|
prog.vert.addUniform("u_rot", 6 /* Mat3 */, (prg) => {
|
|
24
24
|
prg.addGraphicUniform("u_rot", (uniform, params) => {
|
|
25
25
|
const rot = params.target.uniforms.frustum.viewMatrix.matrix;
|
|
@@ -202,7 +202,7 @@ function createCommon(instanced, animated, shadowable, isThematic, isHiliter) {
|
|
|
202
202
|
builder.addVarying("v_eyeSpace", 4 /* Vec3 */);
|
|
203
203
|
computePosition = computePositionPrelude + adjustEyeSpace + computePositionPostlude;
|
|
204
204
|
}
|
|
205
|
-
vert.set(
|
|
205
|
+
vert.set(9 /* ComputePosition */, computePosition);
|
|
206
206
|
return builder;
|
|
207
207
|
}
|
|
208
208
|
/** @internal */
|
|
@@ -17,7 +17,7 @@ function addTexture(prog) {
|
|
|
17
17
|
export function createViewportQuadBuilder(textured, attrMapOverride) {
|
|
18
18
|
const attrMap = undefined !== attrMapOverride ? attrMapOverride : AttributeMap.findAttributeMap(undefined, false);
|
|
19
19
|
const prog = new ProgramBuilder(attrMap);
|
|
20
|
-
prog.vert.set(
|
|
20
|
+
prog.vert.set(9 /* ComputePosition */, computePosition);
|
|
21
21
|
if (textured) {
|
|
22
22
|
addTexture(prog);
|
|
23
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrbitGtTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"OrbitGtTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAA0C,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAC6F,gBAAgB,EAC5D,oBAAoB,EAAE,iBAAiB,EAC9F,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAEL,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAMxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EACL,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAoB,UAAU,EAAE,WAAW,EAAE,QAAQ,EAC1G,cAAc,EACf,MAAM,YAAY,CAAC;AAqEpB,gBAAgB;AAChB,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,GAAG,oBAAoB,CAAC,SAAS,CAEpH;AAgBD,cAAM,eAAgB,SAAQ,IAAI;IAChC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IACnG,cAAc,CAAC,WAAW,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACtF,IAAW,OAAO,sDAA0E;IAC/E,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IACnH,UAAU,IAAI,IAAI;gBAEtB,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ;CAC/C;AAiFD,gBAAgB;AAChB,qBAAa,eAAgB,SAAQ,QAAQ;IAMI,OAAO,CAAC,YAAY;IAA2C,OAAO,CAAC,aAAa;IAAY,OAAO,CAAC,cAAc;IALrK,OAAO,CAAC,WAAW,CAAa;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,iBAAiB,EAAE,iBAAiB,CAAM;IACjD,OAAO,CAAC,aAAa,CAAyC;gBAE3C,UAAU,EAAE,cAAc,EAAU,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAU,aAAa,EAAE,QAAQ,EAAU,cAAc,EAAE,SAAS;IAS1J,gBAAgB,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAIxD,OAAO,IAAI,IAAI;IAW/B,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;IACnD,IAAW,IAAI,IAAI,OAAO,CAAiB;IAC3C,IAAoB,kBAAkB,IAAI,OAAO,CAAkB;IACnE,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAsB;IAE/D,OAAO,CAAC,QAAQ;IAQT,KAAK;IAKI,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAKhE,IAAI,CAAC,IAAI,EAAE,YAAY;CAqE/B;AAED,gBAAgB;AAEhB,yBAAiB,eAAe,CAAC;IAC/B,UAAiB,cAAe,SAAQ,oBAAoB,CAAC,kBAAkB;QAC7E,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB;IACD;;;;;;OAMG;IACH,SAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAQrG;IA+BD,SAAsB,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAsF3J;CACF"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module TileTreeSupplier
|
|
7
7
|
*/
|
|
8
|
-
import { BeTimePoint, compareStringsOrUndefined
|
|
8
|
+
import { BeTimePoint, compareStringsOrUndefined } from "@itwin/core-bentley";
|
|
9
9
|
import { BatchType, Cartographic, ColorDef, Feature, FeatureTable, Frustum, FrustumPlanes, GeoCoordStatus, PackedFeatureTable, QParams3d, Quantization, RealityDataFormat, RealityDataProvider, } from "@itwin/core-common";
|
|
10
10
|
import { Point3d, Range3d, Transform, Vector3d } from "@itwin/core-geometry";
|
|
11
11
|
import { CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtAList, OrbitGtBounds, OrbitGtCoordinate, OrbitGtDataManager, OrbitGtFrameData, OrbitGtIViewRequest, OrbitGtTileLoadSorter, PageCachedFile, PointDataRaw, UrlFS, } from "@itwin/core-orbitgt";
|
|
@@ -276,16 +276,52 @@ export class OrbitGtTileTree extends TileTree {
|
|
|
276
276
|
return `${host}${realityData.rootDocument}${query}`;
|
|
277
277
|
}
|
|
278
278
|
OrbitGtTileTree.getBlobStringUrl = getBlobStringUrl;
|
|
279
|
+
function isValidSASToken(downloadUrl) {
|
|
280
|
+
// Create fake URL for and parameter parsing and SAS token URI parsing
|
|
281
|
+
if (!downloadUrl.startsWith("http"))
|
|
282
|
+
downloadUrl = `http://x.com/x?${downloadUrl}`;
|
|
283
|
+
const sasUrl = new URL(downloadUrl);
|
|
284
|
+
const se = sasUrl.searchParams.get("se");
|
|
285
|
+
if (se) {
|
|
286
|
+
const expiryUTC = new Date(se);
|
|
287
|
+
const now = new Date();
|
|
288
|
+
const currentUTC = new Date(now === null || now === void 0 ? void 0 : now.toUTCString());
|
|
289
|
+
return expiryUTC >= currentUTC;
|
|
290
|
+
}
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
function isValidOrbitGtBlobProps(props) {
|
|
294
|
+
// Check main OrbitGtBlobProps fields are defined
|
|
295
|
+
if (!props.accountName || !props.containerName || !props.blobFileName || !props.sasToken)
|
|
296
|
+
return false;
|
|
297
|
+
// Check SAS token is valid
|
|
298
|
+
return isValidSASToken(props.sasToken);
|
|
299
|
+
}
|
|
279
300
|
async function createOrbitGtTileTree(rdSourceKey, iModel, modelId) {
|
|
280
301
|
const rdConnection = await RealityDataConnection.fromSourceKey(rdSourceKey, iModel.iTwinId);
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
302
|
+
const isContextShare = rdSourceKey.provider === RealityDataProvider.ContextShare;
|
|
303
|
+
let blobStringUrl;
|
|
304
|
+
if (isContextShare) {
|
|
305
|
+
const realityData = rdConnection ? rdConnection.realityData : undefined;
|
|
306
|
+
if (rdConnection === undefined || realityData === undefined)
|
|
307
|
+
return undefined;
|
|
308
|
+
const docRootName = realityData.rootDocument;
|
|
309
|
+
if (!docRootName)
|
|
310
|
+
return undefined;
|
|
311
|
+
const token = await IModelApp.getAccessToken();
|
|
312
|
+
blobStringUrl = await getBlobStringUrl(token, realityData);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
const orbitGtBlobProps = RealityDataSource.createOrbitGtBlobPropsFromKey(rdSourceKey);
|
|
316
|
+
if (orbitGtBlobProps === undefined)
|
|
317
|
+
return undefined;
|
|
318
|
+
if (!isValidOrbitGtBlobProps(orbitGtBlobProps))
|
|
319
|
+
return undefined;
|
|
320
|
+
const { accountName, containerName, blobFileName, sasToken } = orbitGtBlobProps;
|
|
321
|
+
blobStringUrl = blobFileName;
|
|
322
|
+
if (accountName.length > 0)
|
|
323
|
+
blobStringUrl = UrlFS.getAzureBlobSasUrl(accountName, containerName, blobFileName, sasToken);
|
|
324
|
+
}
|
|
289
325
|
if (Downloader.INSTANCE == null)
|
|
290
326
|
Downloader.INSTANCE = new DownloaderXhr();
|
|
291
327
|
if (CRSManager.ENGINE == null)
|
|
@@ -358,18 +394,12 @@ class OrbitGtTreeReference extends RealityModelTileTree.Reference {
|
|
|
358
394
|
if (props.rdSourceKey) {
|
|
359
395
|
this._rdSourceKey = props.rdSourceKey;
|
|
360
396
|
}
|
|
361
|
-
else if (props.orbitGtBlob && props.orbitGtBlob.rdsUrl) {
|
|
362
|
-
this._rdSourceKey = RealityDataSource.createRealityDataSourceKeyFromUrl(props.orbitGtBlob.rdsUrl, RealityDataProvider.ContextShare);
|
|
363
|
-
}
|
|
364
|
-
else if (props.orbitGtBlob && props.orbitGtBlob.containerName && Guid.isGuid(props.orbitGtBlob.containerName)) {
|
|
365
|
-
this._rdSourceKey = { provider: RealityDataProvider.ContextShare, format: RealityDataFormat.OPC, id: props.orbitGtBlob.containerName };
|
|
366
|
-
}
|
|
367
397
|
else if (props.orbitGtBlob) {
|
|
368
|
-
this._rdSourceKey = RealityDataSource.
|
|
398
|
+
this._rdSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);
|
|
369
399
|
}
|
|
370
400
|
else {
|
|
371
401
|
// TODO: Maybe we should throw an exception
|
|
372
|
-
this._rdSourceKey = RealityDataSource.createFromBlobUrl("", RealityDataProvider.
|
|
402
|
+
this._rdSourceKey = RealityDataSource.createFromBlobUrl("", RealityDataProvider.OrbitGtBlob, RealityDataFormat.OPC);
|
|
373
403
|
}
|
|
374
404
|
const ogtTreeId = { rdSourceKey: this._rdSourceKey, modelId: this.modelId };
|
|
375
405
|
this.treeOwner = orbitGtTreeSupplier.getOwner(ogtTreeId, props.iModel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrbitGtTileTree.js","sourceRoot":"","sources":["../../../src/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,IAAI,EAAc,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACL,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAoB,kBAAkB,EAAE,SAAS,EACjJ,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,GACrD,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAqB,aAAa,EAAE,iBAAiB,EACxI,kBAAkB,EAAE,gBAAgB,EAAgC,mBAAmB,EAAkC,qBAAqB,EAC5H,cAAc,EAAE,YAAY,EAAE,KAAK,GACtD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oCAAoC,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAM1E,OAAO,EACL,oBAAoB,EAAE,IAAI,EAA6B,gBAAgB,EAA2B,QAAQ,EACxE,eAAe,GAClD,MAAM,YAAY,CAAC;AAEpB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACtC,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAE,CAAC;AAO1C,MAAM,mBAAmB;IAChB,QAAQ,CAAC,MAAqB,EAAE,MAAwB;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAqB,EAAE,MAAwB;QACzE,OAAO,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3F,CAAC;IAEM,kBAAkB,CAAC,GAAkB,EAAE,GAAkB;QAC9D,IAAI,GAAG,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,GAAG,yBAAyB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAE5D,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAEtD,SAAS,oBAAoB,CAAC,YAA8B,EAAE,MAAkB;IAC9E,IAAI,SAAS,KAAK,MAAM;QACtB,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;IAEtC,MAAM,CAAC,MAAM,CAAC,YAAY,CACxB,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3F,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3F,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/F,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAgC,EAAE,MAAgB;IAC1E,IAAI,SAAS,KAAK,MAAM;QACtB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAE5B,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAwB,EAAE,MAAgB;IAClE,IAAI,SAAS,KAAK,MAAM;QACtB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAE5B,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,8BAA8B,CAAC,KAAqC;IAClF,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,qBAAqB;IAMzB,YAAmB,WAAiC,EAAE,MAAwB,EAAE,OAAmB,EAAS,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;QAC7H,MAAM,GAAG,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAPD,IAAW,QAAQ,KAAuB,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;CAQ7E;AAED,MAAM,eAAgB,SAAQ,IAAI;IACtB,aAAa,CAAC,QAAgD,EAAE,OAA+B,IAAU,CAAC;IAC7G,KAAK,CAAC,cAAc,CAAC,WAA0B,IAAmC,OAAO,SAAS,CAAC,CAAC,CAAC;IAC5G,IAAW,OAAO,KAAK,OAAO,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACrF,KAAK,CAAC,WAAW,CAAC,KAA+B,EAAE,OAAqB,EAAE,WAA2B,IAA0B,OAAO,EAAE,CAAC,CAAC,CAAC;IAClI,UAAU,KAAW,CAAC;IAEtC,YAAY,MAAkB,EAAE,IAAc,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACzE;AAED,MAAM,kBAAmB,SAAQ,mBAAmB;IAElD,YAAoB,aAA2B,EAAU,aAAuB;QAC9E,KAAK,EAAE,CAAC;QADU,kBAAa,GAAb,aAAa,CAAc;QAAU,kBAAa,GAAb,aAAa,CAAU;QAE9E,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9H,CAAC;IAEM,YAAY,CAAC,MAAqB;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;QACnF,OAAO,aAAa,CAAC,WAAW,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/H,CAAC;IACM,YAAY;QACjB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;IAC7C,CAAC;IAEM,WAAW,CAAC,KAAmB,EAAE,IAAsB;QAC5D,wCAAwC;QACxC,MAAM,UAAU,GAAsB,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxF,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrC,MAAM,WAAW,GAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/G,MAAM,YAAY,GAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7I,MAAM,SAAS,GAAW,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAClE,0DAA0D;QAC1D,MAAM,MAAM,GAAY,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;QAChH,MAAM,OAAO,GAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAW,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;QACnN,wFAAwF;QACxF,MAAM,KAAK,GAAY,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,iBAAiB,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,iBAAiB;IAErB,YAAY,eAA0B,EAAE,YAA0B,EAAE,YAAsB;QACxF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,IAAI,MAAgB,CAAC;QACrB,IAAI,SAAS,KAAK,YAAY,CAAC,QAAQ,EAAE;YACvC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;YACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtG,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAC7B;aAAM;YACL,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SACrD;QAED,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,eAAe,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1E,MAAM,qBAAqB,GAAG,eAAe,CAAC,0BAA0B,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;QACpH,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,CAAC;IAC1F,CAAC;IACM,oBAAoB,CAAC,UAA6B;QACvD,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClD,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACvB,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACvB,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACzB,CAAC;CACF;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,YAAmB,OAAsB,EAAE,QAAkB,EAAE,IAAiB;QAC9E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAM3C,YAAmB,UAA0B,EAAU,YAAgC,EAAE,UAAmB,EAAU,aAAuB,EAAU,cAAyB;QAC9K,KAAK,CAAC,UAAU,CAAC,CAAC;QADmC,iBAAY,GAAZ,YAAY,CAAoB;QAA+B,kBAAa,GAAb,aAAa,CAAU;QAAU,mBAAc,GAAd,cAAc,CAAW;QAHzK,sBAAiB,GAAsB,EAAE,CAAC;QACzC,kBAAa,GAAG,IAAI,GAAG,EAA8B,CAAC;QAK5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;QAC3E,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEe,KAAK,CAAC,gBAAgB;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEe,OAAO;QACrB,IAAI,IAAI,CAAC,UAAU;YACjB,OAAO;QAET,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC/C,OAAO,CAAC,OAAO,EAAE,CAAC;QAEpB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAES,YAAY,CAAC,KAAmB,IAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAClE,IAAW,IAAI,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3C,IAAoB,kBAAkB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACnE,IAAW,QAAQ,KAAyB,OAAO,SAAS,CAAC,CAAC,CAAC;IAEvD,QAAQ,CAAC,SAAsB;QACrC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa;YAC7C,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBAChC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAChC;IACL,CAAC;IAEM,KAAK;QACV,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAEe,iBAAiB,CAAC,KAA8B;QAC9D,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,aAAa;YAC1C,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAEM,IAAI,CAAC,IAAkB;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QACtD,MAAM,YAAY,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpI,MAAM,SAAS,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,YAAY,EAAgB,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,YAAY,EAAqB,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,YAAY,EAAoB,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEzC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5H,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACjJ,WAAW,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEzK,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAEjD,4DAA4D;QAC5D,SAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE3J,IAAI,YAAY;YACd,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAE3D,IAAI,QAAQ,GAAG,GAAG,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC;QACpC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAiB,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAiB,CAAC;YAC1E,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpD,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC1C;iBAAM;gBACL,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5C,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBACrI,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC1E,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;gBACtC,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAEpD,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC3G,IAAI,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3J,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,aAAc,EAAE,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACrG;YAED,IAAI,YAAY;gBACd,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SAC3D;QAED,IAAI,YAAY;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3C,IAAI,SAAS,EAAE;YACb,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,cAAc,QAAQ,cAAc,QAAQ,kBAAkB,eAAe,EAAE,CAAC,CAAC;SAC9H;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;SAC5I;IACH,CAAC;CACF;AAED,gBAAgB;AAChB,wCAAwC;AACxC,WAAiB,eAAe;IAK9B;;;;;;OAMG;IACI,KAAK,UAAU,gBAAgB,CAAC,WAAmB,EAAE,WAAwB;QAClF,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAEtD,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC;QAE7C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;QAEzB,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,YAAY,GAAG,KAAK,EAAE,CAAC;IACtD,CAAC;IARqB,gCAAgB,mBAQrC,CAAA;IAEM,KAAK,UAAU,qBAAqB,CAAC,WAAiC,EAAE,MAAwB,EAAE,OAAmB;QAC1H,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAE5F,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,YAAY,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;YACzD,OAAO,SAAS,CAAC;QAEnB,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,WAAW;YACd,OAAO,SAAS,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAC,WAAW,CAAC,CAAC;QAChE,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI;YAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC3E,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI;YAAE,UAAU,CAAC,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;QAC/E,oDAAoD;QACpD,MAAM,KAAK,GAAU,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,YAAY,GAAU,MAAM,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,GAAG,CAAC;QAC3B,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAA,iBAAiB,CAAC,CAAC;QACzI,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAA,gBAAgB,CAAC,CAAC;QACvG,IAAI,aAAa,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI,aAAa,IAAI,IAAI;YACvB,aAAa,GAAG,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,gBAAgB,GAAG,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,eAAe,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAC;QACtE,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QACjD,IAAI,oBAAoB,GAAG,cAAc,CAAC;QAC1C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,MAAM,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,CAAC;YACxB,MAAM,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;YACtE,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,UAAU,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtL,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;YAC3F,aAAa,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAE9C,IAAI,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACxC,gGAAgG;YAChG,qHAAqH;YACrH,yHAAyH;YACzH,sCAAsC;YACtC,gJAAgJ;YAChJ,uCAAuC;YACvC,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,8BAA8B,GAAG,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACvF,MAAM,kBAAkB,GAAG,GAAG,CAAC,CAAK,4KAA4K;YAChN,IAAI,8BAA8B,GAAG,kBAAkB,EAAE;gBACvD,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAChG,IAAI,kBAAkB,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;oBAClE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACrI,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,sCAAsC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxF,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,OAAO,EAAE;wBACzD,MAAM,cAAc,GAAG,MAAM,oCAAoC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;wBACxH,IAAI,cAAc;4BAChB,QAAQ,GAAG,cAAc,CAAC;qBAC7B;iBACF;aACF;YAED,oBAAoB,GAAG,QAAQ,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;SACpF;QACD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAE7F,uEAAuE;QACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC7C,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC9C,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAChG,CAAC;IAxEqB,qCAAqB,wBAwE1C,CAAA;AACH,CAAC,EA/FgB,eAAe,KAAf,eAAe,QA+F/B;AAED;;GAEG;AACH,MAAM,oBAAqB,SAAQ,oBAAoB,CAAC,SAAS;IAK/D,YAAmB,KAAqC;QACtD,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,qCAAqC;QACrC,IAAI,KAAK,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;SACvC;aAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;YACxD,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,iCAAiC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;SACrI;aAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;YAC/G,IAAI,CAAC,YAAY,GAAG,EAAC,QAAQ,EAAE,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;SACvI;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;SAC3H;aAAM;YACL,2CAA2C;YAC3C,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;SAC/F;QAED,MAAM,SAAS,GAAkB,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3F,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC;IApBD,IAAoB,YAAY,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAsBpC,KAAK,CAAC,UAAU,CAAC,GAAc;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAClD,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAExG,IAAI,IAAI,CAAC,KAAK;YACZ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1G,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;CACF","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 TileTreeSupplier\r\n */\r\n\r\nimport { BeTimePoint, compareStringsOrUndefined, Guid, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, Cartographic, ColorDef, Feature, FeatureTable, Frustum, FrustumPlanes, GeoCoordStatus, OrbitGtBlobProps, PackedFeatureTable, QParams3d,\r\n Quantization, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, ViewFlagOverrides,\r\n} from \"@itwin/core-common\";\r\nimport { Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ALong, CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtAList, OrbitGtBlockIndex, OrbitGtBounds, OrbitGtCoordinate,\r\n OrbitGtDataManager, OrbitGtFrameData, OrbitGtIProjectToViewForSort, OrbitGtIViewRequest, OrbitGtLevel, OrbitGtTileIndex, OrbitGtTileLoadSorter,\r\n OrbitGtTransform, PageCachedFile, PointDataRaw, UrlFS,\r\n} from \"@itwin/core-orbitgt\";\r\nimport { calculateEcefToDbTransformAtLocation } from \"../BackgroundMapGeometry\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { RealityData } from \"../RealityDataAccessProps\";\r\nimport { RealityDataConnection } from \"../RealityDataConnection\";\r\nimport { RealityDataSource } from \"../RealityDataSource\";\r\nimport { Mesh } from \"../render/primitives/mesh/MeshPrimitives\";\r\nimport { PointCloudArgs } from \"../render/primitives/PointCloudPrimitive\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../render/RenderMemory\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../ViewingSpace\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n RealityModelTileTree, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeOwner,\r\n TileTreeParams, TileTreeSupplier, TileUsageMarker,\r\n} from \"./internal\";\r\n\r\nconst scratchRange = Range3d.create();\r\nconst scratchWorldFrustum = new Frustum();\r\n\r\ninterface OrbitGtTreeId {\r\n rdSourceKey: RealityDataSourceKey;\r\n modelId: Id64String;\r\n}\r\n\r\nclass OrbitGtTreeSupplier implements TileTreeSupplier {\r\n public getOwner(treeId: OrbitGtTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, this);\r\n }\r\n\r\n public async createTileTree(treeId: OrbitGtTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n return OrbitGtTileTree.createOrbitGtTileTree(treeId.rdSourceKey, iModel, treeId.modelId);\r\n }\r\n\r\n public compareTileTreeIds(lhs: OrbitGtTreeId, rhs: OrbitGtTreeId): number {\r\n let cmp = compareStringsOrUndefined(lhs.rdSourceKey.id, rhs.rdSourceKey.id);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.rdSourceKey.format, rhs.rdSourceKey.format);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.rdSourceKey.iTwinId, rhs.rdSourceKey.iTwinId);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.modelId, rhs.modelId);\r\n\r\n return cmp;\r\n }\r\n}\r\n\r\nconst orbitGtTreeSupplier = new OrbitGtTreeSupplier();\r\n\r\nfunction transformFromOrbitGt(ogtTransform: OrbitGtTransform, result?: Transform): Transform {\r\n if (undefined === result)\r\n result = Transform.createIdentity();\r\n\r\n result.matrix.setRowValues(\r\n ogtTransform.getElement(0, 0), ogtTransform.getElement(0, 1), ogtTransform.getElement(0, 2),\r\n ogtTransform.getElement(1, 0), ogtTransform.getElement(1, 1), ogtTransform.getElement(1, 2),\r\n ogtTransform.getElement(2, 0), ogtTransform.getElement(2, 1), ogtTransform.getElement(2, 2));\r\n\r\n result.origin.x = ogtTransform.getElement(0, 3);\r\n result.origin.y = ogtTransform.getElement(1, 3);\r\n result.origin.z = ogtTransform.getElement(2, 3);\r\n return result;\r\n}\r\n\r\nfunction pointFromOrbitGt(ogtCoordinate: OrbitGtCoordinate, result?: Point3d): Point3d {\r\n if (undefined === result)\r\n result = Point3d.create();\r\n\r\n result.x = ogtCoordinate.x;\r\n result.y = ogtCoordinate.y;\r\n result.z = ogtCoordinate.z;\r\n\r\n return result;\r\n}\r\n\r\nfunction rangeFromOrbitGt(ogtBounds: OrbitGtBounds, result?: Range3d) {\r\n if (undefined === result)\r\n result = Range3d.create();\r\n\r\n pointFromOrbitGt(ogtBounds.min, result.low);\r\n pointFromOrbitGt(ogtBounds.max, result.high);\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function createOrbitGtTileTreeReference(props: OrbitGtTileTree.ReferenceProps): RealityModelTileTree.Reference {\r\n return new OrbitGtTreeReference(props);\r\n}\r\n\r\nclass OrbitGtTileTreeParams implements TileTreeParams {\r\n public id: string;\r\n public modelId: string;\r\n public iModel: IModelConnection;\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Context; }\r\n\r\n public constructor(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String, public location: Transform) {\r\n const key = rdSourceKey;\r\n this.id = `${key.provider}:${key.format}:${key.id}:${key.iTwinId}`;\r\n this.modelId = modelId;\r\n this.iModel = iModel;\r\n }\r\n}\r\n\r\nclass OrbitGtRootTile extends Tile {\r\n protected _loadChildren(_resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void { }\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\r\n public get channel() { return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-orbitgit\"); }\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\r\n public override freeMemory(): void { }\r\n\r\n constructor(params: TileParams, tree: TileTree) { super(params, tree); }\r\n}\r\n\r\nclass OrbitGtViewRequest extends OrbitGtIViewRequest {\r\n private _tileToIModelTransform: Transform;\r\n constructor(private _tileDrawArgs: TileDrawArgs, private _centerOffset: Vector3d) {\r\n super();\r\n this._tileToIModelTransform = _tileDrawArgs.location.multiplyTransformTransform(Transform.createTranslation(_centerOffset));\r\n }\r\n\r\n public isVisibleBox(bounds: OrbitGtBounds): boolean {\r\n const box = Frustum.fromRange(rangeFromOrbitGt(bounds, scratchRange));\r\n const worldBox = box.transformBy(this._tileToIModelTransform, scratchWorldFrustum);\r\n return FrustumPlanes.Containment.Outside !== this._tileDrawArgs.frustumPlanes.computeFrustumContainment(worldBox, undefined);\r\n }\r\n public getFrameTime(): number {\r\n return this._tileDrawArgs.now.milliseconds;\r\n }\r\n\r\n public shouldSplit(level: OrbitGtLevel, tile: OrbitGtTileIndex) {\r\n // get the world size of the tile voxels\r\n const tileCenter: OrbitGtCoordinate = level.getTileGrid().getCellCenter(tile.gridIndex);\r\n tileCenter.x += this._centerOffset.x;\r\n tileCenter.y += this._centerOffset.y;\r\n tileCenter.z += this._centerOffset.z;\r\n const worldCenter: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z);\r\n const worldCenter2: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z + level.getTileGrid().size.z);\r\n const voxelSize: number = worldCenter2.distance(worldCenter) / 64;\r\n // get the world size of a screen pixel at the tile center\r\n const viewPt: Point3d = this._tileDrawArgs.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(worldCenter);\r\n const viewPt2: Point3d = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\r\n const pixelSizeAtCenter: number = this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\r\n // stop splitting if the voxel size of the children becomes too small to improve quality\r\n const split: boolean = (0.5 * voxelSize > 2.0 * pixelSizeAtCenter);\r\n return split;\r\n }\r\n}\r\n\r\nclass TileSortProjector implements OrbitGtIProjectToViewForSort {\r\n private _sortTransform: Transform;\r\n constructor(iModelTransform: Transform, viewingSpace: ViewingSpace, centerOffset: Vector3d) {\r\n const rotation = viewingSpace.rotation;\r\n let origin: Vector3d;\r\n if (undefined === viewingSpace.eyePoint) {\r\n origin = Vector3d.createFrom(viewingSpace.viewOrigin);\r\n const viewDelta = viewingSpace.viewDelta;\r\n const eyeDelta = Vector3d.createFrom({ x: viewDelta.x / 2, y: viewDelta.y / 2, z: viewDelta.z * 10 });\r\n rotation.multiplyVector(eyeDelta, eyeDelta);\r\n origin.addInPlace(eyeDelta);\r\n } else {\r\n origin = Vector3d.createFrom(viewingSpace.eyePoint);\r\n }\r\n\r\n rotation.multiplyVector(origin);\r\n origin.scaleInPlace(-1);\r\n const toViewTransform = Transform.createOriginAndMatrix(origin, rotation);\r\n const tileToIModelTransform = iModelTransform.multiplyTransformTransform(Transform.createTranslation(centerOffset));\r\n this._sortTransform = toViewTransform.multiplyTransformTransform(tileToIModelTransform);\r\n }\r\n public projectToViewForSort(coordinate: OrbitGtCoordinate) {\r\n const point = pointFromOrbitGt(coordinate);\r\n this._sortTransform.multiplyPoint3d(point, point);\r\n coordinate.x = point.x;\r\n coordinate.y = point.y;\r\n coordinate.z = point.z;\r\n }\r\n}\r\n\r\nclass OrbitGtTileGraphic extends TileUsageMarker {\r\n public readonly graphic: RenderGraphic;\r\n\r\n public constructor(graphic: RenderGraphic, viewport: Viewport, time: BeTimePoint) {\r\n super();\r\n this.graphic = graphic;\r\n this.mark(viewport, time);\r\n }\r\n\r\n public dispose(): void {\r\n this.graphic.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class OrbitGtTileTree extends TileTree {\r\n private _tileParams: TileParams;\r\n public rootTile: OrbitGtRootTile;\r\n public viewFlagOverrides: ViewFlagOverrides = {};\r\n private _tileGraphics = new Map<string, OrbitGtTileGraphic>();\r\n\r\n public constructor(treeParams: TileTreeParams, private _dataManager: OrbitGtDataManager, cloudRange: Range3d, private _centerOffset: Vector3d, private _ecefTransform: Transform) {\r\n super(treeParams);\r\n\r\n const worldContentRange = this.iModelTransform.multiplyRange(cloudRange);\r\n this.iModel.expandDisplayedExtents(worldContentRange);\r\n this._tileParams = { contentId: \"0\", range: cloudRange, maximumSize: 256 };\r\n this.rootTile = new OrbitGtRootTile(this._tileParams, this);\r\n }\r\n\r\n public override async getEcefTransform(): Promise<Transform | undefined> {\r\n return this._ecefTransform;\r\n }\r\n\r\n public override dispose(): void {\r\n if (this.isDisposed)\r\n return;\r\n\r\n for (const graphic of this._tileGraphics.values())\r\n graphic.dispose();\r\n\r\n this._tileGraphics.clear();\r\n super.dispose();\r\n }\r\n\r\n protected _selectTiles(_args: TileDrawArgs): Tile[] { return []; }\r\n public get is3d(): boolean { return true; }\r\n public override get isContentUnbounded(): boolean { return false; }\r\n public get maxDepth(): number | undefined { return undefined; }\r\n\r\n private _doPrune(olderThan: BeTimePoint) {\r\n for (const [key, graphic] of this._tileGraphics)\r\n if (graphic.isExpired(olderThan)) {\r\n graphic.dispose();\r\n this._tileGraphics.delete(key);\r\n }\r\n }\r\n\r\n public prune() {\r\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\r\n this._doPrune(olderThan);\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const tileGraphic of this._tileGraphics)\r\n tileGraphic[1].graphic.collectStatistics(stats);\r\n }\r\n\r\n public draw(args: TileDrawArgs) {\r\n const debugControl = args.context.target.debugControl;\r\n const debugBuilder = (debugControl && debugControl.displayRealityTileRanges) ? args.context.createSceneGraphicBuilder() : undefined;\r\n const doLogging = (debugControl && debugControl.logRealityTiles);\r\n const viewRequest = new OrbitGtViewRequest(args, this._centerOffset);\r\n const levelsInView = new OrbitGtAList<OrbitGtLevel>();\r\n const blocksInView = new OrbitGtAList<OrbitGtBlockIndex>();\r\n const tilesInView = new OrbitGtAList<OrbitGtTileIndex>();\r\n const frameData = new OrbitGtFrameData();\r\n\r\n this._dataManager.getViewTree().renderView3D(viewRequest, levelsInView, blocksInView, tilesInView, frameData.tilesToRender);\r\n this._dataManager.filterLoadList(levelsInView, blocksInView, tilesInView, frameData.levelsToLoad, frameData.blocksToLoad, frameData.tilesToLoad);\r\n tilesInView.sort(new OrbitGtTileLoadSorter(this._dataManager.getViewTree(), new TileSortProjector(this.iModelTransform, args.context.viewingSpace, this._centerOffset)));\r\n\r\n let totalPointCount = 0;\r\n const tileCount = frameData.tilesToRender.size();\r\n\r\n // Inform TileAdmin about tiles we are handling ourselves...\r\n IModelApp.tileAdmin.addExternalTilesForViewport(args.context.viewport, { requested: frameData.tilesToLoad.size(), selected: tileCount, ready: tileCount });\r\n\r\n if (debugBuilder)\r\n debugBuilder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n\r\n let minLevel = 100, maxLevel = -100;\r\n for (let t: number = 0; t < tileCount; t++) {\r\n const tile: PointDataRaw = frameData.tilesToRender.get(t) as PointDataRaw;\r\n minLevel = Math.min(minLevel, tile.tileIndex.level);\r\n maxLevel = Math.max(maxLevel, tile.tileIndex.level);\r\n totalPointCount += tile.tileIndex.pointCount;\r\n const key = tile.tileIndex.key;\r\n const cachedGraphic = this._tileGraphics.get(key);\r\n if (undefined !== cachedGraphic) {\r\n cachedGraphic.mark(args.context.viewport, args.now);\r\n args.graphics.add(cachedGraphic.graphic);\r\n } else {\r\n const range = rangeFromOrbitGt(tile.bounds);\r\n range.low.addInPlace(this._centerOffset);\r\n range.high.addInPlace(this._centerOffset);\r\n const qParams = QParams3d.fromRange(range, undefined, (tile.points8 != null) ? Quantization.rangeScale8 : Quantization.rangeScale16);\r\n const featureTable = new FeatureTable(1, this.modelId, BatchType.Primary);\r\n const features = new Mesh.Features(featureTable);\r\n const system = IModelApp.renderSystem;\r\n const voxelSize = (range.high.x - range.low.x) / 64;\r\n\r\n features.add(new Feature(this.modelId), 1);\r\n const tilePoints = (tile.points8 != null) ? tile.points8.toNativeBuffer() : tile.points16.toNativeBuffer();\r\n let renderGraphic = system.createPointCloud(new PointCloudArgs(tilePoints, qParams, tile.colors.toNativeBuffer(), features, voxelSize, true), this.iModel);\r\n renderGraphic = system.createBatch(renderGraphic!, PackedFeatureTable.pack(featureTable), range);\r\n args.graphics.add(renderGraphic);\r\n this._tileGraphics.set(key, new OrbitGtTileGraphic(renderGraphic, args.context.viewport, args.now));\r\n }\r\n\r\n if (debugBuilder)\r\n debugBuilder.addRangeBox(rangeFromOrbitGt(tile.bounds));\r\n }\r\n\r\n if (debugBuilder)\r\n args.graphics.add(debugBuilder.finish());\r\n\r\n if (doLogging) {\r\n // eslint-disable-next-line no-console\r\n console.log(`Total OrbitGtTiles: ${tileCount} MinLevel: ${minLevel} MaxLevel: ${maxLevel} Total Points: ${totalPointCount}`);\r\n }\r\n\r\n args.drawGraphics();\r\n if (frameData.hasMissingData()) {\r\n this._dataManager.loadData(frameData).then(() => IModelApp.tileAdmin.onTileLoad.raiseEvent(this.rootTile)).catch((_err: any) => undefined);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line no-redeclare\r\nexport namespace OrbitGtTileTree {\r\n export interface ReferenceProps extends RealityModelTileTree.ReferenceBaseProps {\r\n orbitGtBlob?: OrbitGtBlobProps;\r\n modelId?: Id64String;\r\n }\r\n /**\r\n * Gets string url to fetch blob data from. Access is read-only.\r\n * @param accessToken The client request context.\r\n * @param name name or path of tile\r\n * @param nameRelativeToRootDocumentPath (optional default is false) Indicates if the given name is relative to the root document path.\r\n * @returns string url for blob data\r\n */\r\n export async function getBlobStringUrl(accessToken: string, realityData: RealityData): Promise<string> {\r\n const url = await realityData.getBlobUrl(accessToken);\r\n\r\n const host = `${url.origin + url.pathname}/`;\r\n\r\n const query = url.search;\r\n\r\n return `${host}${realityData.rootDocument}${query}`;\r\n }\r\n\r\n export async function createOrbitGtTileTree(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String): Promise<TileTree | undefined> {\r\n const rdConnection = await RealityDataConnection.fromSourceKey(rdSourceKey, iModel.iTwinId);\r\n\r\n const realityData = rdConnection ? rdConnection.realityData : undefined;\r\n if (rdConnection === undefined || realityData === undefined )\r\n return undefined;\r\n\r\n const docRootName = realityData.rootDocument;\r\n if (!docRootName)\r\n return undefined;\r\n const token = await IModelApp.getAccessToken();\r\n const blobStringUrl = await getBlobStringUrl(token,realityData);\r\n if (Downloader.INSTANCE == null) Downloader.INSTANCE = new DownloaderXhr();\r\n if (CRSManager.ENGINE == null) CRSManager.ENGINE = await OnlineEngine.create();\r\n // wrap a caching layer (16 MB) around the blob file\r\n const urlFS: UrlFS = new UrlFS();\r\n const blobFileSize: ALong = await urlFS.getFileLength(blobStringUrl);\r\n const cacheKilobytes = 128;\r\n const cachedBlobFile = new PageCachedFile(urlFS, blobStringUrl, blobFileSize, cacheKilobytes * 1024 /* pageSize*/, 128/* maxPageCount*/);\r\n const pointCloudReader = await OPCReader.openFile(cachedBlobFile, blobStringUrl, true/* lazyLoading*/);\r\n let pointCloudCRS = pointCloudReader.getFileCRS();\r\n if (pointCloudCRS == null)\r\n pointCloudCRS = \"\";\r\n const dataManager = new OrbitGtDataManager(pointCloudReader, pointCloudCRS, PointDataRaw.TYPE);\r\n const pointCloudBounds = dataManager.getPointCloudBounds();\r\n const pointCloudRange = rangeFromOrbitGt(pointCloudBounds);\r\n const pointCloudCenter = pointCloudRange.localXYZToWorld(.5, .5, .5)!;\r\n const addCloudCenter = Transform.createTranslation(pointCloudCenter);\r\n const ecefTransform = Transform.createIdentity();\r\n let pointCloudCenterToDb = addCloudCenter;\r\n if (pointCloudCRS.length > 0) {\r\n await CRSManager.ENGINE.prepareForArea(pointCloudCRS, pointCloudBounds);\r\n const wgs84CRS = \"4978\";\r\n await CRSManager.ENGINE.prepareForArea(wgs84CRS, new OrbitGtBounds());\r\n const pointCloudToEcef = transformFromOrbitGt(CRSManager.createTransform(pointCloudCRS, new OrbitGtCoordinate(pointCloudCenter.x, pointCloudCenter.y, pointCloudCenter.z), wgs84CRS));\r\n const pointCloudCenterToEcef = pointCloudToEcef.multiplyTransformTransform(addCloudCenter);\r\n ecefTransform.setFrom(pointCloudCenterToEcef);\r\n\r\n let ecefToDb = iModel.getMapEcefToDb(0);\r\n // In initial publishing version the iModel ecef Transform was used to locate the reality model.\r\n // This would work well only for tilesets published from that iModel but for iModels the ecef transform is calculated\r\n // at the center of the project extents and the reality model location may differ greatly, and the curvature of the earth\r\n // could introduce significant errors.\r\n // The publishing was modified to calculate the ecef transform at the reality model range center and at the same time the \"iModelPublishVersion\"\r\n // member was added to the root object.\r\n const ecefOrigin = pointCloudCenterToEcef.getOrigin();\r\n const dbOrigin = ecefToDb.multiplyPoint3d(ecefOrigin);\r\n const realityOriginToProjectDistance = iModel.projectExtents.distanceToPoint(dbOrigin);\r\n const maxProjectDistance = 1E5; // Only use the project GCS projection if within 100KM of the project. Don't attempt to use GCS if global reality model or in another locale - Results will be unreliable.\r\n if (realityOriginToProjectDistance < maxProjectDistance) {\r\n const cartographicOrigin = Cartographic.fromEcef(ecefOrigin);\r\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\r\n if (cartographicOrigin !== undefined && geoConverter !== undefined) {\r\n const geoOrigin = Point3d.create(cartographicOrigin.longitudeDegrees, cartographicOrigin.latitudeDegrees, cartographicOrigin.height);\r\n const response = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoOrigin]);\r\n if (response.iModelCoords[0].s === GeoCoordStatus.Success) {\r\n const ecefToDbOrigin = await calculateEcefToDbTransformAtLocation(Point3d.fromJSON(response.iModelCoords[0].p), iModel);\r\n if (ecefToDbOrigin)\r\n ecefToDb = ecefToDbOrigin;\r\n }\r\n }\r\n }\r\n\r\n pointCloudCenterToDb = ecefToDb.multiplyTransformTransform(pointCloudCenterToEcef);\r\n }\r\n const params = new OrbitGtTileTreeParams(rdSourceKey, iModel, modelId, pointCloudCenterToDb);\r\n\r\n // We use a RTC transform to avoid jitter from large cloud coordinates.\r\n const centerOffset = Vector3d.create(-pointCloudCenter.x, -pointCloudCenter.y, -pointCloudCenter.z);\r\n pointCloudRange.low.addInPlace(centerOffset);\r\n pointCloudRange.high.addInPlace(centerOffset);\r\n return new OrbitGtTileTree(params, dataManager, pointCloudRange, centerOffset, ecefTransform);\r\n }\r\n}\r\n\r\n/** Supplies a reality data [[TileTree]] from a URL. May be associated with a persistent [[GeometricModelState]], or attached at run-time via a [[ContextOrbitGtState]].\r\n * @internal\r\n */\r\nclass OrbitGtTreeReference extends RealityModelTileTree.Reference {\r\n public readonly treeOwner: TileTreeOwner;\r\n protected _rdSourceKey: RealityDataSourceKey;\r\n public override get castsShadows() { return false; }\r\n\r\n public constructor(props: OrbitGtTileTree.ReferenceProps) {\r\n super(props);\r\n // Create rdSourceKey if not provided\r\n if (props.rdSourceKey) {\r\n this._rdSourceKey = props.rdSourceKey;\r\n } else if (props.orbitGtBlob && props.orbitGtBlob.rdsUrl) {\r\n this._rdSourceKey = RealityDataSource.createRealityDataSourceKeyFromUrl(props.orbitGtBlob.rdsUrl, RealityDataProvider.ContextShare);\r\n } else if (props.orbitGtBlob && props.orbitGtBlob.containerName && Guid.isGuid(props.orbitGtBlob.containerName)) {\r\n this._rdSourceKey = {provider: RealityDataProvider.ContextShare, format: RealityDataFormat.OPC, id: props.orbitGtBlob.containerName };\r\n } else if (props.orbitGtBlob) {\r\n this._rdSourceKey = RealityDataSource.createFromBlobUrl(props.orbitGtBlob.blobFileName, RealityDataProvider.ContextShare);\r\n } else {\r\n // TODO: Maybe we should throw an exception\r\n this._rdSourceKey = RealityDataSource.createFromBlobUrl(\"\", RealityDataProvider.ContextShare);\r\n }\r\n\r\n const ogtTreeId: OrbitGtTreeId = { rdSourceKey: this._rdSourceKey, modelId: this.modelId };\r\n this.treeOwner = orbitGtTreeSupplier.getOwner(ogtTreeId, props.iModel);\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel)\r\n return undefined;\r\n\r\n const strings = [];\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.OrbitGTPointCloud\"));\r\n\r\n if (this._name)\r\n strings.push(`${IModelApp.localization.getLocalizedString(\"iModelJs:TooltipInfo.Name\")} ${this._name}`);\r\n\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"OrbitGtTileTree.js","sourceRoot":"","sources":["../../../src/tile/OrbitGtTileTree.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 TileTreeSupplier\r\n */\r\n\r\nimport { BeTimePoint, compareStringsOrUndefined, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, Cartographic, ColorDef, Feature, FeatureTable, Frustum, FrustumPlanes, GeoCoordStatus, OrbitGtBlobProps, PackedFeatureTable, QParams3d,\r\n Quantization, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, ViewFlagOverrides,\r\n} from \"@itwin/core-common\";\r\nimport { Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ALong, CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtAList, OrbitGtBlockIndex, OrbitGtBounds, OrbitGtCoordinate,\r\n OrbitGtDataManager, OrbitGtFrameData, OrbitGtIProjectToViewForSort, OrbitGtIViewRequest, OrbitGtLevel, OrbitGtTileIndex, OrbitGtTileLoadSorter,\r\n OrbitGtTransform, PageCachedFile, PointDataRaw, UrlFS,\r\n} from \"@itwin/core-orbitgt\";\r\nimport { calculateEcefToDbTransformAtLocation } from \"../BackgroundMapGeometry\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { RealityData } from \"../RealityDataAccessProps\";\r\nimport { RealityDataConnection } from \"../RealityDataConnection\";\r\nimport { RealityDataSource } from \"../RealityDataSource\";\r\nimport { Mesh } from \"../render/primitives/mesh/MeshPrimitives\";\r\nimport { PointCloudArgs } from \"../render/primitives/PointCloudPrimitive\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../render/RenderMemory\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../ViewingSpace\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n RealityModelTileTree, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeOwner,\r\n TileTreeParams, TileTreeSupplier, TileUsageMarker,\r\n} from \"./internal\";\r\n\r\nconst scratchRange = Range3d.create();\r\nconst scratchWorldFrustum = new Frustum();\r\n\r\ninterface OrbitGtTreeId {\r\n rdSourceKey: RealityDataSourceKey;\r\n modelId: Id64String;\r\n}\r\n\r\nclass OrbitGtTreeSupplier implements TileTreeSupplier {\r\n public getOwner(treeId: OrbitGtTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, this);\r\n }\r\n\r\n public async createTileTree(treeId: OrbitGtTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n return OrbitGtTileTree.createOrbitGtTileTree(treeId.rdSourceKey, iModel, treeId.modelId);\r\n }\r\n\r\n public compareTileTreeIds(lhs: OrbitGtTreeId, rhs: OrbitGtTreeId): number {\r\n let cmp = compareStringsOrUndefined(lhs.rdSourceKey.id, rhs.rdSourceKey.id);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.rdSourceKey.format, rhs.rdSourceKey.format);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.rdSourceKey.iTwinId, rhs.rdSourceKey.iTwinId);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.modelId, rhs.modelId);\r\n\r\n return cmp;\r\n }\r\n}\r\n\r\nconst orbitGtTreeSupplier = new OrbitGtTreeSupplier();\r\n\r\nfunction transformFromOrbitGt(ogtTransform: OrbitGtTransform, result?: Transform): Transform {\r\n if (undefined === result)\r\n result = Transform.createIdentity();\r\n\r\n result.matrix.setRowValues(\r\n ogtTransform.getElement(0, 0), ogtTransform.getElement(0, 1), ogtTransform.getElement(0, 2),\r\n ogtTransform.getElement(1, 0), ogtTransform.getElement(1, 1), ogtTransform.getElement(1, 2),\r\n ogtTransform.getElement(2, 0), ogtTransform.getElement(2, 1), ogtTransform.getElement(2, 2));\r\n\r\n result.origin.x = ogtTransform.getElement(0, 3);\r\n result.origin.y = ogtTransform.getElement(1, 3);\r\n result.origin.z = ogtTransform.getElement(2, 3);\r\n return result;\r\n}\r\n\r\nfunction pointFromOrbitGt(ogtCoordinate: OrbitGtCoordinate, result?: Point3d): Point3d {\r\n if (undefined === result)\r\n result = Point3d.create();\r\n\r\n result.x = ogtCoordinate.x;\r\n result.y = ogtCoordinate.y;\r\n result.z = ogtCoordinate.z;\r\n\r\n return result;\r\n}\r\n\r\nfunction rangeFromOrbitGt(ogtBounds: OrbitGtBounds, result?: Range3d) {\r\n if (undefined === result)\r\n result = Range3d.create();\r\n\r\n pointFromOrbitGt(ogtBounds.min, result.low);\r\n pointFromOrbitGt(ogtBounds.max, result.high);\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function createOrbitGtTileTreeReference(props: OrbitGtTileTree.ReferenceProps): RealityModelTileTree.Reference {\r\n return new OrbitGtTreeReference(props);\r\n}\r\n\r\nclass OrbitGtTileTreeParams implements TileTreeParams {\r\n public id: string;\r\n public modelId: string;\r\n public iModel: IModelConnection;\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Context; }\r\n\r\n public constructor(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String, public location: Transform) {\r\n const key = rdSourceKey;\r\n this.id = `${key.provider}:${key.format}:${key.id}:${key.iTwinId}`;\r\n this.modelId = modelId;\r\n this.iModel = iModel;\r\n }\r\n}\r\n\r\nclass OrbitGtRootTile extends Tile {\r\n protected _loadChildren(_resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void { }\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\r\n public get channel() { return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-orbitgit\"); }\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\r\n public override freeMemory(): void { }\r\n\r\n constructor(params: TileParams, tree: TileTree) { super(params, tree); }\r\n}\r\n\r\nclass OrbitGtViewRequest extends OrbitGtIViewRequest {\r\n private _tileToIModelTransform: Transform;\r\n constructor(private _tileDrawArgs: TileDrawArgs, private _centerOffset: Vector3d) {\r\n super();\r\n this._tileToIModelTransform = _tileDrawArgs.location.multiplyTransformTransform(Transform.createTranslation(_centerOffset));\r\n }\r\n\r\n public isVisibleBox(bounds: OrbitGtBounds): boolean {\r\n const box = Frustum.fromRange(rangeFromOrbitGt(bounds, scratchRange));\r\n const worldBox = box.transformBy(this._tileToIModelTransform, scratchWorldFrustum);\r\n return FrustumPlanes.Containment.Outside !== this._tileDrawArgs.frustumPlanes.computeFrustumContainment(worldBox, undefined);\r\n }\r\n public getFrameTime(): number {\r\n return this._tileDrawArgs.now.milliseconds;\r\n }\r\n\r\n public shouldSplit(level: OrbitGtLevel, tile: OrbitGtTileIndex) {\r\n // get the world size of the tile voxels\r\n const tileCenter: OrbitGtCoordinate = level.getTileGrid().getCellCenter(tile.gridIndex);\r\n tileCenter.x += this._centerOffset.x;\r\n tileCenter.y += this._centerOffset.y;\r\n tileCenter.z += this._centerOffset.z;\r\n const worldCenter: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z);\r\n const worldCenter2: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z + level.getTileGrid().size.z);\r\n const voxelSize: number = worldCenter2.distance(worldCenter) / 64;\r\n // get the world size of a screen pixel at the tile center\r\n const viewPt: Point3d = this._tileDrawArgs.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(worldCenter);\r\n const viewPt2: Point3d = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\r\n const pixelSizeAtCenter: number = this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\r\n // stop splitting if the voxel size of the children becomes too small to improve quality\r\n const split: boolean = (0.5 * voxelSize > 2.0 * pixelSizeAtCenter);\r\n return split;\r\n }\r\n}\r\n\r\nclass TileSortProjector implements OrbitGtIProjectToViewForSort {\r\n private _sortTransform: Transform;\r\n constructor(iModelTransform: Transform, viewingSpace: ViewingSpace, centerOffset: Vector3d) {\r\n const rotation = viewingSpace.rotation;\r\n let origin: Vector3d;\r\n if (undefined === viewingSpace.eyePoint) {\r\n origin = Vector3d.createFrom(viewingSpace.viewOrigin);\r\n const viewDelta = viewingSpace.viewDelta;\r\n const eyeDelta = Vector3d.createFrom({ x: viewDelta.x / 2, y: viewDelta.y / 2, z: viewDelta.z * 10 });\r\n rotation.multiplyVector(eyeDelta, eyeDelta);\r\n origin.addInPlace(eyeDelta);\r\n } else {\r\n origin = Vector3d.createFrom(viewingSpace.eyePoint);\r\n }\r\n\r\n rotation.multiplyVector(origin);\r\n origin.scaleInPlace(-1);\r\n const toViewTransform = Transform.createOriginAndMatrix(origin, rotation);\r\n const tileToIModelTransform = iModelTransform.multiplyTransformTransform(Transform.createTranslation(centerOffset));\r\n this._sortTransform = toViewTransform.multiplyTransformTransform(tileToIModelTransform);\r\n }\r\n public projectToViewForSort(coordinate: OrbitGtCoordinate) {\r\n const point = pointFromOrbitGt(coordinate);\r\n this._sortTransform.multiplyPoint3d(point, point);\r\n coordinate.x = point.x;\r\n coordinate.y = point.y;\r\n coordinate.z = point.z;\r\n }\r\n}\r\n\r\nclass OrbitGtTileGraphic extends TileUsageMarker {\r\n public readonly graphic: RenderGraphic;\r\n\r\n public constructor(graphic: RenderGraphic, viewport: Viewport, time: BeTimePoint) {\r\n super();\r\n this.graphic = graphic;\r\n this.mark(viewport, time);\r\n }\r\n\r\n public dispose(): void {\r\n this.graphic.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class OrbitGtTileTree extends TileTree {\r\n private _tileParams: TileParams;\r\n public rootTile: OrbitGtRootTile;\r\n public viewFlagOverrides: ViewFlagOverrides = {};\r\n private _tileGraphics = new Map<string, OrbitGtTileGraphic>();\r\n\r\n public constructor(treeParams: TileTreeParams, private _dataManager: OrbitGtDataManager, cloudRange: Range3d, private _centerOffset: Vector3d, private _ecefTransform: Transform) {\r\n super(treeParams);\r\n\r\n const worldContentRange = this.iModelTransform.multiplyRange(cloudRange);\r\n this.iModel.expandDisplayedExtents(worldContentRange);\r\n this._tileParams = { contentId: \"0\", range: cloudRange, maximumSize: 256 };\r\n this.rootTile = new OrbitGtRootTile(this._tileParams, this);\r\n }\r\n\r\n public override async getEcefTransform(): Promise<Transform | undefined> {\r\n return this._ecefTransform;\r\n }\r\n\r\n public override dispose(): void {\r\n if (this.isDisposed)\r\n return;\r\n\r\n for (const graphic of this._tileGraphics.values())\r\n graphic.dispose();\r\n\r\n this._tileGraphics.clear();\r\n super.dispose();\r\n }\r\n\r\n protected _selectTiles(_args: TileDrawArgs): Tile[] { return []; }\r\n public get is3d(): boolean { return true; }\r\n public override get isContentUnbounded(): boolean { return false; }\r\n public get maxDepth(): number | undefined { return undefined; }\r\n\r\n private _doPrune(olderThan: BeTimePoint) {\r\n for (const [key, graphic] of this._tileGraphics)\r\n if (graphic.isExpired(olderThan)) {\r\n graphic.dispose();\r\n this._tileGraphics.delete(key);\r\n }\r\n }\r\n\r\n public prune() {\r\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\r\n this._doPrune(olderThan);\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const tileGraphic of this._tileGraphics)\r\n tileGraphic[1].graphic.collectStatistics(stats);\r\n }\r\n\r\n public draw(args: TileDrawArgs) {\r\n const debugControl = args.context.target.debugControl;\r\n const debugBuilder = (debugControl && debugControl.displayRealityTileRanges) ? args.context.createSceneGraphicBuilder() : undefined;\r\n const doLogging = (debugControl && debugControl.logRealityTiles);\r\n const viewRequest = new OrbitGtViewRequest(args, this._centerOffset);\r\n const levelsInView = new OrbitGtAList<OrbitGtLevel>();\r\n const blocksInView = new OrbitGtAList<OrbitGtBlockIndex>();\r\n const tilesInView = new OrbitGtAList<OrbitGtTileIndex>();\r\n const frameData = new OrbitGtFrameData();\r\n\r\n this._dataManager.getViewTree().renderView3D(viewRequest, levelsInView, blocksInView, tilesInView, frameData.tilesToRender);\r\n this._dataManager.filterLoadList(levelsInView, blocksInView, tilesInView, frameData.levelsToLoad, frameData.blocksToLoad, frameData.tilesToLoad);\r\n tilesInView.sort(new OrbitGtTileLoadSorter(this._dataManager.getViewTree(), new TileSortProjector(this.iModelTransform, args.context.viewingSpace, this._centerOffset)));\r\n\r\n let totalPointCount = 0;\r\n const tileCount = frameData.tilesToRender.size();\r\n\r\n // Inform TileAdmin about tiles we are handling ourselves...\r\n IModelApp.tileAdmin.addExternalTilesForViewport(args.context.viewport, { requested: frameData.tilesToLoad.size(), selected: tileCount, ready: tileCount });\r\n\r\n if (debugBuilder)\r\n debugBuilder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n\r\n let minLevel = 100, maxLevel = -100;\r\n for (let t: number = 0; t < tileCount; t++) {\r\n const tile: PointDataRaw = frameData.tilesToRender.get(t) as PointDataRaw;\r\n minLevel = Math.min(minLevel, tile.tileIndex.level);\r\n maxLevel = Math.max(maxLevel, tile.tileIndex.level);\r\n totalPointCount += tile.tileIndex.pointCount;\r\n const key = tile.tileIndex.key;\r\n const cachedGraphic = this._tileGraphics.get(key);\r\n if (undefined !== cachedGraphic) {\r\n cachedGraphic.mark(args.context.viewport, args.now);\r\n args.graphics.add(cachedGraphic.graphic);\r\n } else {\r\n const range = rangeFromOrbitGt(tile.bounds);\r\n range.low.addInPlace(this._centerOffset);\r\n range.high.addInPlace(this._centerOffset);\r\n const qParams = QParams3d.fromRange(range, undefined, (tile.points8 != null) ? Quantization.rangeScale8 : Quantization.rangeScale16);\r\n const featureTable = new FeatureTable(1, this.modelId, BatchType.Primary);\r\n const features = new Mesh.Features(featureTable);\r\n const system = IModelApp.renderSystem;\r\n const voxelSize = (range.high.x - range.low.x) / 64;\r\n\r\n features.add(new Feature(this.modelId), 1);\r\n const tilePoints = (tile.points8 != null) ? tile.points8.toNativeBuffer() : tile.points16.toNativeBuffer();\r\n let renderGraphic = system.createPointCloud(new PointCloudArgs(tilePoints, qParams, tile.colors.toNativeBuffer(), features, voxelSize, true), this.iModel);\r\n renderGraphic = system.createBatch(renderGraphic!, PackedFeatureTable.pack(featureTable), range);\r\n args.graphics.add(renderGraphic);\r\n this._tileGraphics.set(key, new OrbitGtTileGraphic(renderGraphic, args.context.viewport, args.now));\r\n }\r\n\r\n if (debugBuilder)\r\n debugBuilder.addRangeBox(rangeFromOrbitGt(tile.bounds));\r\n }\r\n\r\n if (debugBuilder)\r\n args.graphics.add(debugBuilder.finish());\r\n\r\n if (doLogging) {\r\n // eslint-disable-next-line no-console\r\n console.log(`Total OrbitGtTiles: ${tileCount} MinLevel: ${minLevel} MaxLevel: ${maxLevel} Total Points: ${totalPointCount}`);\r\n }\r\n\r\n args.drawGraphics();\r\n if (frameData.hasMissingData()) {\r\n this._dataManager.loadData(frameData).then(() => IModelApp.tileAdmin.onTileLoad.raiseEvent(this.rootTile)).catch((_err: any) => undefined);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line no-redeclare\r\nexport namespace OrbitGtTileTree {\r\n export interface ReferenceProps extends RealityModelTileTree.ReferenceBaseProps {\r\n orbitGtBlob?: OrbitGtBlobProps;\r\n modelId?: Id64String;\r\n }\r\n /**\r\n * Gets string url to fetch blob data from. Access is read-only.\r\n * @param accessToken The client request context.\r\n * @param name name or path of tile\r\n * @param nameRelativeToRootDocumentPath (optional default is false) Indicates if the given name is relative to the root document path.\r\n * @returns string url for blob data\r\n */\r\n export async function getBlobStringUrl(accessToken: string, realityData: RealityData): Promise<string> {\r\n const url = await realityData.getBlobUrl(accessToken);\r\n\r\n const host = `${url.origin + url.pathname}/`;\r\n\r\n const query = url.search;\r\n\r\n return `${host}${realityData.rootDocument}${query}`;\r\n }\r\n\r\n function isValidSASToken(downloadUrl: string): boolean {\r\n\r\n // Create fake URL for and parameter parsing and SAS token URI parsing\r\n if(!downloadUrl.startsWith(\"http\"))\r\n downloadUrl = `http://x.com/x?${downloadUrl}`;\r\n\r\n const sasUrl = new URL(downloadUrl);\r\n\r\n const se = sasUrl.searchParams.get(\"se\");\r\n if (se) {\r\n const expiryUTC = new Date(se);\r\n const now = new Date();\r\n const currentUTC = new Date(now?.toUTCString());\r\n\r\n return expiryUTC >= currentUTC;\r\n }\r\n\r\n return false;\r\n }\r\n function isValidOrbitGtBlobProps(props: OrbitGtBlobProps): boolean {\r\n\r\n // Check main OrbitGtBlobProps fields are defined\r\n if(!props.accountName || !props.containerName || !props.blobFileName || !props.sasToken)\r\n return false;\r\n\r\n // Check SAS token is valid\r\n return isValidSASToken(props.sasToken);\r\n }\r\n\r\n export async function createOrbitGtTileTree(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String): Promise<TileTree | undefined> {\r\n const rdConnection = await RealityDataConnection.fromSourceKey(rdSourceKey, iModel.iTwinId);\r\n const isContextShare = rdSourceKey.provider === RealityDataProvider.ContextShare;\r\n\r\n let blobStringUrl: string;\r\n if (isContextShare) {\r\n const realityData = rdConnection ? rdConnection.realityData : undefined;\r\n if (rdConnection === undefined || realityData === undefined)\r\n return undefined;\r\n const docRootName = realityData.rootDocument;\r\n if (!docRootName)\r\n return undefined;\r\n const token = await IModelApp.getAccessToken();\r\n blobStringUrl = await getBlobStringUrl(token, realityData );\r\n } else {\r\n const orbitGtBlobProps = RealityDataSource.createOrbitGtBlobPropsFromKey(rdSourceKey);\r\n if (orbitGtBlobProps === undefined)\r\n return undefined;\r\n if(!isValidOrbitGtBlobProps(orbitGtBlobProps))\r\n return undefined;\r\n const { accountName, containerName, blobFileName, sasToken } = orbitGtBlobProps;\r\n blobStringUrl = blobFileName;\r\n if (accountName.length > 0)\r\n blobStringUrl = UrlFS.getAzureBlobSasUrl(accountName, containerName, blobFileName, sasToken);\r\n }\r\n\r\n if (Downloader.INSTANCE == null) Downloader.INSTANCE = new DownloaderXhr();\r\n if (CRSManager.ENGINE == null) CRSManager.ENGINE = await OnlineEngine.create();\r\n // wrap a caching layer (16 MB) around the blob file\r\n const urlFS: UrlFS = new UrlFS();\r\n const blobFileSize: ALong = await urlFS.getFileLength(blobStringUrl);\r\n const cacheKilobytes = 128;\r\n const cachedBlobFile = new PageCachedFile(urlFS, blobStringUrl, blobFileSize, cacheKilobytes * 1024 /* pageSize*/, 128/* maxPageCount*/);\r\n const pointCloudReader = await OPCReader.openFile(cachedBlobFile, blobStringUrl, true/* lazyLoading*/);\r\n let pointCloudCRS = pointCloudReader.getFileCRS();\r\n if (pointCloudCRS == null)\r\n pointCloudCRS = \"\";\r\n const dataManager = new OrbitGtDataManager(pointCloudReader, pointCloudCRS, PointDataRaw.TYPE);\r\n const pointCloudBounds = dataManager.getPointCloudBounds();\r\n const pointCloudRange = rangeFromOrbitGt(pointCloudBounds);\r\n const pointCloudCenter = pointCloudRange.localXYZToWorld(.5, .5, .5)!;\r\n const addCloudCenter = Transform.createTranslation(pointCloudCenter);\r\n const ecefTransform = Transform.createIdentity();\r\n let pointCloudCenterToDb = addCloudCenter;\r\n if (pointCloudCRS.length > 0) {\r\n await CRSManager.ENGINE.prepareForArea(pointCloudCRS, pointCloudBounds);\r\n const wgs84CRS = \"4978\";\r\n await CRSManager.ENGINE.prepareForArea(wgs84CRS, new OrbitGtBounds());\r\n const pointCloudToEcef = transformFromOrbitGt(CRSManager.createTransform(pointCloudCRS, new OrbitGtCoordinate(pointCloudCenter.x, pointCloudCenter.y, pointCloudCenter.z), wgs84CRS));\r\n const pointCloudCenterToEcef = pointCloudToEcef.multiplyTransformTransform(addCloudCenter);\r\n ecefTransform.setFrom(pointCloudCenterToEcef);\r\n\r\n let ecefToDb = iModel.getMapEcefToDb(0);\r\n // In initial publishing version the iModel ecef Transform was used to locate the reality model.\r\n // This would work well only for tilesets published from that iModel but for iModels the ecef transform is calculated\r\n // at the center of the project extents and the reality model location may differ greatly, and the curvature of the earth\r\n // could introduce significant errors.\r\n // The publishing was modified to calculate the ecef transform at the reality model range center and at the same time the \"iModelPublishVersion\"\r\n // member was added to the root object.\r\n const ecefOrigin = pointCloudCenterToEcef.getOrigin();\r\n const dbOrigin = ecefToDb.multiplyPoint3d(ecefOrigin);\r\n const realityOriginToProjectDistance = iModel.projectExtents.distanceToPoint(dbOrigin);\r\n const maxProjectDistance = 1E5; // Only use the project GCS projection if within 100KM of the project. Don't attempt to use GCS if global reality model or in another locale - Results will be unreliable.\r\n if (realityOriginToProjectDistance < maxProjectDistance) {\r\n const cartographicOrigin = Cartographic.fromEcef(ecefOrigin);\r\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\r\n if (cartographicOrigin !== undefined && geoConverter !== undefined) {\r\n const geoOrigin = Point3d.create(cartographicOrigin.longitudeDegrees, cartographicOrigin.latitudeDegrees, cartographicOrigin.height);\r\n const response = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoOrigin]);\r\n if (response.iModelCoords[0].s === GeoCoordStatus.Success) {\r\n const ecefToDbOrigin = await calculateEcefToDbTransformAtLocation(Point3d.fromJSON(response.iModelCoords[0].p), iModel);\r\n if (ecefToDbOrigin)\r\n ecefToDb = ecefToDbOrigin;\r\n }\r\n }\r\n }\r\n\r\n pointCloudCenterToDb = ecefToDb.multiplyTransformTransform(pointCloudCenterToEcef);\r\n }\r\n const params = new OrbitGtTileTreeParams(rdSourceKey, iModel, modelId, pointCloudCenterToDb);\r\n\r\n // We use a RTC transform to avoid jitter from large cloud coordinates.\r\n const centerOffset = Vector3d.create(-pointCloudCenter.x, -pointCloudCenter.y, -pointCloudCenter.z);\r\n pointCloudRange.low.addInPlace(centerOffset);\r\n pointCloudRange.high.addInPlace(centerOffset);\r\n return new OrbitGtTileTree(params, dataManager, pointCloudRange, centerOffset, ecefTransform);\r\n }\r\n}\r\n\r\n/** Supplies a reality data [[TileTree]] from a URL. May be associated with a persistent [[GeometricModelState]], or attached at run-time via a [[ContextOrbitGtState]].\r\n * @internal\r\n */\r\nclass OrbitGtTreeReference extends RealityModelTileTree.Reference {\r\n public readonly treeOwner: TileTreeOwner;\r\n protected _rdSourceKey: RealityDataSourceKey;\r\n public override get castsShadows() { return false; }\r\n\r\n public constructor(props: OrbitGtTileTree.ReferenceProps) {\r\n super(props);\r\n // Create rdSourceKey if not provided\r\n if (props.rdSourceKey) {\r\n this._rdSourceKey = props.rdSourceKey;\r\n } else if (props.orbitGtBlob) {\r\n this._rdSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);\r\n } else {\r\n // TODO: Maybe we should throw an exception\r\n this._rdSourceKey = RealityDataSource.createFromBlobUrl(\"\", RealityDataProvider.OrbitGtBlob, RealityDataFormat.OPC);\r\n }\r\n\r\n const ogtTreeId: OrbitGtTreeId = { rdSourceKey: this._rdSourceKey, modelId: this.modelId };\r\n this.treeOwner = orbitGtTreeSupplier.getOwner(ogtTreeId, props.iModel);\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel)\r\n return undefined;\r\n\r\n const strings = [];\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.OrbitGTPointCloud\"));\r\n\r\n if (this._name)\r\n strings.push(`${IModelApp.localization.getLocalizedString(\"iModelJs:TooltipInfo.Name\")} ${this._name}`);\r\n\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n}\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/core-frontend",
|
|
3
|
-
"version": "3.0.0-dev.
|
|
3
|
+
"version": "3.0.0-dev.89",
|
|
4
4
|
"description": "iTwin.js frontend components",
|
|
5
5
|
"main": "lib/cjs/core-frontend.js",
|
|
6
6
|
"module": "lib/esm/core-frontend.js",
|
|
@@ -23,35 +23,35 @@
|
|
|
23
23
|
"url": "http://www.bentley.com"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@itwin/core-bentley": "^3.0.0-dev.
|
|
27
|
-
"@itwin/core-geometry": "^3.0.0-dev.
|
|
28
|
-
"@itwin/core-common": "^3.0.0-dev.
|
|
29
|
-
"@itwin/core-quantity": "^3.0.0-dev.
|
|
30
|
-
"@bentley/itwin-client": "^3.0.0-dev.
|
|
31
|
-
"@itwin/core-orbitgt": "^3.0.0-dev.
|
|
32
|
-
"@bentley/product-settings-client": "^3.0.0-dev.
|
|
33
|
-
"@bentley/telemetry-client": "^3.0.0-dev.
|
|
34
|
-
"@itwin/appui-abstract": "^3.0.0-dev.
|
|
35
|
-
"@itwin/webgl-compatibility": "^3.0.0-dev.
|
|
26
|
+
"@itwin/core-bentley": "^3.0.0-dev.89",
|
|
27
|
+
"@itwin/core-geometry": "^3.0.0-dev.89",
|
|
28
|
+
"@itwin/core-common": "^3.0.0-dev.89",
|
|
29
|
+
"@itwin/core-quantity": "^3.0.0-dev.89",
|
|
30
|
+
"@bentley/itwin-client": "^3.0.0-dev.89",
|
|
31
|
+
"@itwin/core-orbitgt": "^3.0.0-dev.89",
|
|
32
|
+
"@bentley/product-settings-client": "^3.0.0-dev.89",
|
|
33
|
+
"@bentley/telemetry-client": "^3.0.0-dev.89",
|
|
34
|
+
"@itwin/appui-abstract": "^3.0.0-dev.89",
|
|
35
|
+
"@itwin/webgl-compatibility": "^3.0.0-dev.89"
|
|
36
36
|
},
|
|
37
37
|
"//devDependencies": [
|
|
38
38
|
"NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install",
|
|
39
39
|
"NOTE: All tools used by scripts in this package must be listed as devDependencies"
|
|
40
40
|
],
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@itwin/core-bentley": "3.0.0-dev.
|
|
43
|
-
"@itwin/build-tools": "3.0.0-dev.
|
|
44
|
-
"@itwin/certa": "3.0.0-dev.
|
|
45
|
-
"@itwin/eslint-plugin": "3.0.0-dev.
|
|
46
|
-
"@itwin/core-geometry": "3.0.0-dev.
|
|
47
|
-
"@itwin/core-common": "3.0.0-dev.
|
|
48
|
-
"@itwin/core-quantity": "3.0.0-dev.
|
|
49
|
-
"@bentley/itwin-client": "3.0.0-dev.
|
|
50
|
-
"@itwin/core-orbitgt": "3.0.0-dev.
|
|
51
|
-
"@bentley/product-settings-client": "3.0.0-dev.
|
|
52
|
-
"@bentley/telemetry-client": "3.0.0-dev.
|
|
53
|
-
"@itwin/appui-abstract": "3.0.0-dev.
|
|
54
|
-
"@itwin/webgl-compatibility": "3.0.0-dev.
|
|
42
|
+
"@itwin/core-bentley": "3.0.0-dev.89",
|
|
43
|
+
"@itwin/build-tools": "3.0.0-dev.89",
|
|
44
|
+
"@itwin/certa": "3.0.0-dev.89",
|
|
45
|
+
"@itwin/eslint-plugin": "3.0.0-dev.89",
|
|
46
|
+
"@itwin/core-geometry": "3.0.0-dev.89",
|
|
47
|
+
"@itwin/core-common": "3.0.0-dev.89",
|
|
48
|
+
"@itwin/core-quantity": "3.0.0-dev.89",
|
|
49
|
+
"@bentley/itwin-client": "3.0.0-dev.89",
|
|
50
|
+
"@itwin/core-orbitgt": "3.0.0-dev.89",
|
|
51
|
+
"@bentley/product-settings-client": "3.0.0-dev.89",
|
|
52
|
+
"@bentley/telemetry-client": "3.0.0-dev.89",
|
|
53
|
+
"@itwin/appui-abstract": "3.0.0-dev.89",
|
|
54
|
+
"@itwin/webgl-compatibility": "3.0.0-dev.89",
|
|
55
55
|
"@types/chai": "^4.1.4",
|
|
56
56
|
"@types/chai-as-promised": "^7",
|
|
57
57
|
"@types/mocha": "^8.2.2",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"
|
|
77
77
|
],
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"@itwin/core-i18n": "3.0.0-dev.
|
|
79
|
+
"@itwin/core-i18n": "3.0.0-dev.89",
|
|
80
80
|
"fuse.js": "^3.3.0",
|
|
81
81
|
"semver": "^5.5.0",
|
|
82
82
|
"wms-capabilities": "0.4.0",
|