@itwin/core-frontend 4.10.0-dev.3 → 4.10.0-dev.6
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/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +5 -1
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.d.ts +7 -1
- package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
- package/lib/cjs/ElementLocateManager.js +34 -10
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +1 -0
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -0
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +25 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +20 -12
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.d.ts +3 -8
- package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
- package/lib/cjs/common/internal/Symbols.d.ts +7 -0
- package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/common/internal/Symbols.js +8 -1
- package/lib/cjs/common/internal/Symbols.js.map +1 -1
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +95 -0
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
- package/lib/cjs/common/internal/render/LineCode.d.ts +9 -0
- package/lib/cjs/common/internal/render/LineCode.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/LineCode.js +31 -0
- package/lib/cjs/common/internal/render/LineCode.js.map +1 -0
- package/lib/cjs/common/internal/render/OvrFlags.d.ts +25 -0
- package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/OvrFlags.js +10 -0
- package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -0
- package/lib/cjs/common/render/InstancedGraphicParams.d.ts +25 -1
- package/lib/cjs/common/render/InstancedGraphicParams.d.ts.map +1 -1
- package/lib/cjs/common/render/InstancedGraphicParams.js +59 -0
- package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
- package/lib/cjs/common/render/RenderInstancesParams.d.ts +76 -0
- package/lib/cjs/common/render/RenderInstancesParams.d.ts.map +1 -0
- package/lib/cjs/common/render/RenderInstancesParams.js +33 -0
- package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -0
- package/lib/cjs/common.d.ts +1 -0
- package/lib/cjs/common.d.ts.map +1 -1
- package/lib/cjs/common.js +1 -0
- package/lib/cjs/common.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +1 -0
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +1 -0
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.d.ts +4 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.d.ts.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js +82 -35
- package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/cjs/internal/render/RenderGeometry.d.ts +20 -0
- package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -0
- package/lib/cjs/internal/render/RenderGeometry.js +10 -0
- package/lib/cjs/internal/render/RenderGeometry.js.map +1 -0
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +69 -0
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -0
- package/lib/cjs/render/GraphicBuilder.d.ts +17 -3
- package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +7 -1
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/GraphicTemplate.d.ts +76 -0
- package/lib/cjs/render/GraphicTemplate.d.ts.map +1 -0
- package/lib/cjs/render/GraphicTemplate.js +41 -0
- package/lib/cjs/render/GraphicTemplate.js.map +1 -0
- package/lib/cjs/render/MockRender.d.ts +12 -2
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/MockRender.js +19 -5
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +58 -10
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +42 -4
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +1 -1
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/webgl/BatchUniforms.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.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -0
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +37 -20
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts +40 -10
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +99 -31
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/LineCode.d.ts.map +1 -1
- package/lib/cjs/render/webgl/LineCode.js +2 -14
- package/lib/cjs/render/webgl/LineCode.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts +9 -4
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +18 -16
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts +5 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js +7 -2
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts +5 -1
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js +8 -3
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +5 -1
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js +7 -2
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.d.ts +1 -3
- package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js +1 -6
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +5 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +6 -0
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts +0 -18
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +11 -5
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +81 -13
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +6 -2
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +23 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts +2 -1
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +6 -0
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +27 -7
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +84 -68
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +4 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.js +32 -22
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +5 -1
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/ElementLocateManager.d.ts +7 -1
- package/lib/esm/ElementLocateManager.d.ts.map +1 -1
- package/lib/esm/ElementLocateManager.js +34 -10
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +1 -0
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -0
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/Viewport.d.ts +25 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +20 -12
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.d.ts +3 -8
- package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
- package/lib/esm/common/internal/Symbols.d.ts +7 -0
- package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/common/internal/Symbols.js +7 -0
- package/lib/esm/common/internal/Symbols.js.map +1 -1
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +91 -0
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
- package/lib/esm/common/internal/render/LineCode.d.ts +9 -0
- package/lib/esm/common/internal/render/LineCode.d.ts.map +1 -0
- package/lib/esm/common/internal/render/LineCode.js +27 -0
- package/lib/esm/common/internal/render/LineCode.js.map +1 -0
- package/lib/esm/common/internal/render/OvrFlags.d.ts +25 -0
- package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -0
- package/lib/esm/common/internal/render/OvrFlags.js +9 -0
- package/lib/esm/common/internal/render/OvrFlags.js.map +1 -0
- package/lib/esm/common/render/InstancedGraphicParams.d.ts +25 -1
- package/lib/esm/common/render/InstancedGraphicParams.d.ts.map +1 -1
- package/lib/esm/common/render/InstancedGraphicParams.js +58 -1
- package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
- package/lib/esm/common/render/RenderInstancesParams.d.ts +76 -0
- package/lib/esm/common/render/RenderInstancesParams.d.ts.map +1 -0
- package/lib/esm/common/render/RenderInstancesParams.js +30 -0
- package/lib/esm/common/render/RenderInstancesParams.js.map +1 -0
- package/lib/esm/common.d.ts +1 -0
- package/lib/esm/common.d.ts.map +1 -1
- package/lib/esm/common.js +1 -0
- package/lib/esm/common.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +1 -0
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +1 -0
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.d.ts +4 -1
- package/lib/esm/internal/render/PrimitiveBuilder.d.ts.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js +82 -35
- package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/esm/internal/render/RenderGeometry.d.ts +20 -0
- package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -0
- package/lib/esm/internal/render/RenderGeometry.js +9 -0
- package/lib/esm/internal/render/RenderGeometry.js.map +1 -0
- package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
- package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js +64 -0
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -0
- package/lib/esm/render/GraphicBuilder.d.ts +17 -3
- package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +7 -1
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/GraphicTemplate.d.ts +76 -0
- package/lib/esm/render/GraphicTemplate.d.ts.map +1 -0
- package/lib/esm/render/GraphicTemplate.js +37 -0
- package/lib/esm/render/GraphicTemplate.js.map +1 -0
- package/lib/esm/render/MockRender.d.ts +12 -2
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/MockRender.js +19 -5
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +58 -10
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +44 -6
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +1 -1
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/webgl/BatchUniforms.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.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -0
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +37 -20
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.d.ts +40 -10
- package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +97 -30
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/LineCode.d.ts.map +1 -1
- package/lib/esm/render/webgl/LineCode.js +2 -14
- package/lib/esm/render/webgl/LineCode.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts +9 -4
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +19 -17
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/PointCloud.d.ts +5 -1
- package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js +7 -2
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/PointString.d.ts +5 -1
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js +8 -3
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +5 -1
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js +7 -2
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.d.ts +1 -3
- package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/esm/render/webgl/Primitive.js +2 -7
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +5 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +6 -0
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts +0 -18
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +11 -5
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +82 -14
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +6 -2
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +23 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts +2 -1
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +6 -0
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +27 -7
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +82 -67
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts +4 -1
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.js +31 -22
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +18 -18
|
@@ -7,6 +7,7 @@ import type { RenderSystem } from "../render/RenderSystem";
|
|
|
7
7
|
import type { IModelConnection } from "../IModelConnection";
|
|
8
8
|
import { GraphicDescription } from "../common/render/GraphicDescriptionBuilder";
|
|
9
9
|
import { GraphicDescriptionContext } from "../common/render/GraphicDescriptionContext";
|
|
10
|
+
import { GraphicTemplate } from "../render/GraphicTemplate";
|
|
10
11
|
/** Options provided to [[decodeImdlContent]].
|
|
11
12
|
* @internal
|
|
12
13
|
*/
|
|
@@ -19,5 +20,7 @@ export interface ImdlDecodeOptions {
|
|
|
19
20
|
/** @internal */
|
|
20
21
|
export declare function decodeImdlGraphics(options: ImdlDecodeOptions): Promise<RenderGraphic | undefined>;
|
|
21
22
|
/** @internal */
|
|
22
|
-
export declare function
|
|
23
|
+
export declare function createGraphicTemplateFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): GraphicTemplate;
|
|
24
|
+
/** @internal */
|
|
25
|
+
export declare function createGraphicFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): RenderGraphic | undefined;
|
|
23
26
|
//# sourceMappingURL=ImdlGraphicsCreator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImdlGraphicsCreator.d.ts","sourceRoot":"","sources":["../../../src/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ImdlGraphicsCreator.d.ts","sourceRoot":"","sources":["../../../src/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAGvF,OAAO,EAAyB,eAAe,EAA+C,MAAM,2BAA2B,CAAC;AAEhI;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;CAC5B;AAsWD,gBAAgB;AAChB,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAsBvG;AAsDD,gBAAgB;AAChB,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,YAAY,GAAG,eAAe,CA+CzJ;AAED,gBAAgB;AAChB,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAG3J"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module Tiles
|
|
7
7
|
*/
|
|
8
|
-
import { Id64, JsonUtils } from "@itwin/core-bentley";
|
|
8
|
+
import { assert, Id64, JsonUtils } from "@itwin/core-bentley";
|
|
9
9
|
import { ClipVector, Point2d, Point3d, Range3d, Transform } from "@itwin/core-geometry";
|
|
10
10
|
import { ColorDef, Gradient, ImageSource, RenderMaterial, RenderTexture, TextureMapping, } from "@itwin/core-common";
|
|
11
11
|
import { AuxChannelTable } from "../common/internal/render/AuxChannelTable";
|
|
@@ -13,8 +13,10 @@ import { createSurfaceMaterial } from "../common/internal/render/SurfaceParams";
|
|
|
13
13
|
import { convertFeatureTable, edgeParamsFromImdl, toMaterialParams, toVertexTable } from "../common/imdl/ParseImdlDocument";
|
|
14
14
|
import { VertexIndices } from "../common/internal/render/VertexIndices";
|
|
15
15
|
import { GraphicBranch } from "../render/GraphicBranch";
|
|
16
|
+
import { InstancedGraphicParams } from "../common/render/InstancedGraphicParams";
|
|
16
17
|
import { isGraphicDescription } from "../common/internal/render/GraphicDescriptionBuilderImpl";
|
|
17
18
|
import { _textures } from "../common/internal/Symbols";
|
|
19
|
+
import { createGraphicTemplate } from "../render/GraphicTemplate";
|
|
18
20
|
async function loadNamedTexture(name, namedTex, options) {
|
|
19
21
|
// Reasons a texture could be embedded in the tile content instead of requested separately from the backend:
|
|
20
22
|
// - external textures are disabled
|
|
@@ -166,13 +168,7 @@ function getModifiers(primitive) {
|
|
|
166
168
|
const mod = primitive.modifier;
|
|
167
169
|
switch (mod?.type) {
|
|
168
170
|
case "instances":
|
|
169
|
-
return {
|
|
170
|
-
instances: {
|
|
171
|
-
...mod,
|
|
172
|
-
transformCenter: Point3d.fromJSON(mod.transformCenter),
|
|
173
|
-
range: mod.range ? Range3d.fromJSON(mod.range) : undefined,
|
|
174
|
-
},
|
|
175
|
-
};
|
|
171
|
+
return { instances: InstancedGraphicParams.fromProps(mod) };
|
|
176
172
|
case "viewIndependentOrigin":
|
|
177
173
|
return {
|
|
178
174
|
viOrigin: Point3d.fromJSON(mod.origin),
|
|
@@ -382,36 +378,49 @@ function remapGraphicDescription(descr, context) {
|
|
|
382
378
|
}
|
|
383
379
|
}
|
|
384
380
|
/** @internal */
|
|
385
|
-
export
|
|
381
|
+
export function createGraphicTemplateFromDescription(descr, context, system) {
|
|
386
382
|
if (!isGraphicDescription(descr)) {
|
|
387
383
|
throw new Error("Invalid GraphicDescription");
|
|
388
384
|
}
|
|
389
385
|
remapGraphicDescription(descr, context);
|
|
390
|
-
const graphics = [];
|
|
391
386
|
const graphicsOptions = {
|
|
392
387
|
system,
|
|
393
388
|
textures: context[_textures],
|
|
394
389
|
patterns: new Map(),
|
|
395
390
|
};
|
|
391
|
+
const geometry = [];
|
|
396
392
|
for (const primitive of descr.primitives) {
|
|
397
|
-
const
|
|
398
|
-
|
|
399
|
-
|
|
393
|
+
const mods = getModifiers(primitive);
|
|
394
|
+
// GraphicDescriptionBuilder providers no way to include instances in a GraphicDescription.
|
|
395
|
+
assert(undefined === mods?.instances);
|
|
396
|
+
const geom = createPrimitiveGeometry(primitive, graphicsOptions, mods.viOrigin);
|
|
397
|
+
if (geom) {
|
|
398
|
+
geometry.push(geom);
|
|
400
399
|
}
|
|
401
400
|
}
|
|
402
|
-
|
|
403
|
-
return undefined;
|
|
404
|
-
}
|
|
405
|
-
let graphic = graphics.length === 1 ? graphics[0] : system.createGraphicList(graphics);
|
|
401
|
+
let batch;
|
|
406
402
|
if (descr.batch) {
|
|
407
403
|
const featureTable = convertFeatureTable(descr.batch.featureTable, descr.batch.modelId);
|
|
408
|
-
|
|
404
|
+
batch = {
|
|
405
|
+
options: { ...descr.batch },
|
|
406
|
+
range: Range3d.fromJSON(descr.batch.range),
|
|
407
|
+
featureTable,
|
|
408
|
+
};
|
|
409
409
|
}
|
|
410
|
+
let branch;
|
|
410
411
|
if (descr.translation) {
|
|
411
|
-
|
|
412
|
-
branch.add(graphic);
|
|
413
|
-
graphic = system.createBranch(branch, Transform.createTranslation(Point3d.fromJSON(descr.translation)));
|
|
412
|
+
branch = { transform: Transform.createTranslation(Point3d.fromJSON(descr.translation)) };
|
|
414
413
|
}
|
|
415
|
-
return
|
|
414
|
+
return createGraphicTemplate({
|
|
415
|
+
nodes: [{ geometry }],
|
|
416
|
+
batch,
|
|
417
|
+
branch,
|
|
418
|
+
noDispose: true,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
/** @internal */
|
|
422
|
+
export function createGraphicFromDescription(descr, context, system) {
|
|
423
|
+
const template = createGraphicTemplateFromDescription(descr, context, system);
|
|
424
|
+
return system.createGraphicFromTemplate({ template });
|
|
416
425
|
}
|
|
417
426
|
//# sourceMappingURL=ImdlGraphicsCreator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImdlGraphicsCreator.js","sourceRoot":"","sources":["../../../src/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { Id64, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { ClipVector, Point2d, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDef, Gradient, ImageSource, RenderMaterial, RenderTexture, TextureMapping,\r\n} from \"@itwin/core-common\";\r\nimport { AuxChannelTable } from \"../common/internal/render/AuxChannelTable\";\r\nimport { createSurfaceMaterial } from \"../common/internal/render/SurfaceParams\";\r\nimport { ImdlModel as Imdl } from \"../common/imdl/ImdlModel\";\r\nimport { ImdlColorDef, ImdlNamedTexture, ImdlTextureMapping } from \"../common/imdl/ImdlSchema\";\r\nimport { convertFeatureTable, edgeParamsFromImdl, toMaterialParams, toVertexTable } from \"../common/imdl/ParseImdlDocument\";\r\nimport { VertexIndices } from \"../common/internal/render/VertexIndices\";\r\nimport type { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport type { RenderGeometry, RenderSystem } from \"../render/RenderSystem\";\r\nimport type { InstancedGraphicParams } from \"../common/render/InstancedGraphicParams\";\r\nimport type { IModelConnection } from \"../IModelConnection\";\r\nimport { GraphicDescription } from \"../common/render/GraphicDescriptionBuilder\";\r\nimport { GraphicDescriptionImpl, isGraphicDescription } from \"../common/internal/render/GraphicDescriptionBuilderImpl\";\r\nimport { GraphicDescriptionContext } from \"../common/render/GraphicDescriptionContext\";\r\nimport { _textures } from \"../common/internal/Symbols\";\r\n\r\n/** Options provided to [[decodeImdlContent]].\r\n * @internal\r\n */\r\nexport interface ImdlDecodeOptions {\r\n document: Imdl.Document;\r\n system: RenderSystem;\r\n iModel: IModelConnection;\r\n isCanceled?: () => boolean;\r\n}\r\n\r\nasync function loadNamedTexture(name: string, namedTex: ImdlNamedTexture, options: ImdlDecodeOptions): Promise<RenderTexture | undefined> {\r\n // Reasons a texture could be embedded in the tile content instead of requested separately from the backend:\r\n // - external textures are disabled\r\n // - the texture name is not a valid Id64 string\r\n // - the texture is below a certain backend-hardcoded size threshold\r\n // The bufferViewJson being defined signifies any of the above conditions. In that case, the image content\r\n // has been embedded in the tile contents. Otherwise, we will attempt to request the image content separately\r\n // from the backend.\r\n\r\n try {\r\n let textureType = RenderTexture.Type.Normal;\r\n const isGlyph = JsonUtils.asBool(namedTex.isGlyph);\r\n const isTileSection = !isGlyph && JsonUtils.asBool(namedTex.isTileSection);\r\n if (isGlyph)\r\n textureType = RenderTexture.Type.Glyph;\r\n else if (isTileSection)\r\n textureType = RenderTexture.Type.TileSection;\r\n\r\n // We produce unique tile sections for very large (> 8 megapixel) textures, and unique glyph atlases for raster text.\r\n // Neither should be cached.\r\n const cacheable = !isGlyph && !isTileSection;\r\n const ownership = cacheable ? { iModel: options.iModel, key: name } : undefined;\r\n\r\n const bufferViewId = JsonUtils.asString(namedTex.bufferView);\r\n const bufferViewJson = 0 !== bufferViewId.length ? options.document.json.bufferViews[bufferViewId] : undefined;\r\n\r\n if (undefined !== bufferViewJson) { // presence of bufferViewJson signifies we should read the texture from the tile content\r\n const byteOffset = JsonUtils.asInt(bufferViewJson.byteOffset);\r\n const byteLength = JsonUtils.asInt(bufferViewJson.byteLength);\r\n if (0 === byteLength)\r\n return undefined;\r\n\r\n const texBytes = options.document.binaryData.subarray(byteOffset, byteOffset + byteLength);\r\n const format = namedTex.format;\r\n const source = new ImageSource(texBytes, format);\r\n return await options.system.createTextureFromSource({ source, ownership, type: textureType, transparency: namedTex.transparency });\r\n }\r\n\r\n // bufferViewJson was undefined, so attempt to request the texture directly from the backend\r\n // eslint-disable-next-line deprecation/deprecation\r\n const params = new RenderTexture.Params(cacheable ? name : undefined, textureType);\r\n return options.system.createTextureFromElement(name, options.iModel, params, namedTex.format);\r\n } catch (_) {\r\n return undefined;\r\n }\r\n}\r\n\r\nasync function loadNamedTextures(options: ImdlDecodeOptions): Promise<Map<string, RenderTexture>> {\r\n const result = new Map<string, RenderTexture>();\r\n const namedTextures = options.document.json.namedTextures;\r\n if (!namedTextures)\r\n return result;\r\n\r\n const promises = new Array<Promise<void>>();\r\n for (const [name, namedTexture] of Object.entries(namedTextures)) {\r\n const texture = options.system.findTexture(name, options.iModel);\r\n if (texture) {\r\n result.set(name, texture);\r\n continue;\r\n } else if (namedTexture) {\r\n promises.push(loadNamedTexture(name, namedTexture, options).then((tx) => {\r\n if (tx)\r\n result.set(name, tx);\r\n }));\r\n }\r\n }\r\n\r\n if (promises.length > 0)\r\n await Promise.all(promises);\r\n\r\n return result;\r\n}\r\n\r\ninterface GraphicsOptions {\r\n document?: Imdl.Document;\r\n iModel?: IModelConnection;\r\n system: RenderSystem;\r\n isCanceled?: () => boolean;\r\n textures: Map<string, RenderTexture>;\r\n patterns: Map<string, RenderGeometry[]>;\r\n}\r\n\r\nfunction constantLodParamPropsFromJson(propsJson: { repetitions?: number, offset?: number[], minDistClamp?: number, maxDistClamp?: number } | undefined): TextureMapping.ConstantLodParamProps | undefined {\r\n if (undefined === propsJson)\r\n return undefined;\r\n\r\n const constantLodPops: TextureMapping.ConstantLodParamProps = {\r\n repetitions: JsonUtils.asDouble(propsJson.repetitions, 1.0),\r\n offset: { x: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[0]) : 0.0, y: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[1]) : 0.0 },\r\n minDistClamp: JsonUtils.asDouble(propsJson.minDistClamp, 1.0),\r\n maxDistClamp: JsonUtils.asDouble(propsJson.maxDistClamp, 4096.0 * 1024.0 * 1024.0),\r\n };\r\n return constantLodPops;\r\n}\r\n\r\nfunction textureMappingFromJson(json: ImdlTextureMapping | undefined, options: GraphicsOptions): TextureMapping | undefined {\r\n if (!json)\r\n return undefined;\r\n\r\n const texture = options.textures.get(JsonUtils.asString(json.name));\r\n if (!texture)\r\n return undefined;\r\n\r\n const paramsJson = json.params;\r\n const tf = paramsJson.transform;\r\n\r\n const paramProps: TextureMapping.ParamProps = {\r\n textureMat2x3: new TextureMapping.Trans2x3(tf[0][0], tf[0][1], tf[0][2], tf[1][0], tf[1][1], tf[1][2]),\r\n textureWeight: JsonUtils.asDouble(paramsJson.weight, 1.0),\r\n mapMode: JsonUtils.asInt(paramsJson.mode),\r\n worldMapping: JsonUtils.asBool(paramsJson.worldMapping),\r\n useConstantLod: JsonUtils.asBool(paramsJson.useConstantLod),\r\n constantLodProps: constantLodParamPropsFromJson(paramsJson.constantLodParams),\r\n };\r\n\r\n const textureMapping = new TextureMapping(texture, new TextureMapping.Params(paramProps));\r\n\r\n const normalMapJson = json.normalMapParams;\r\n if (normalMapJson) {\r\n let normalMap;\r\n const normalTexName = JsonUtils.asString(normalMapJson.textureName);\r\n if (normalTexName.length === 0 || undefined !== (normalMap = options.textures.get(normalTexName))) {\r\n textureMapping.normalMapParams = {\r\n normalMap,\r\n greenUp: JsonUtils.asBool(normalMapJson.greenUp),\r\n scale: JsonUtils.asDouble(normalMapJson.scale, 1),\r\n useConstantLod: JsonUtils.asBool(normalMapJson.useConstantLod),\r\n };\r\n }\r\n }\r\n\r\n return textureMapping;\r\n}\r\n\r\nfunction getMaterial(mat: string | Imdl.SurfaceMaterialParams, options: GraphicsOptions): RenderMaterial | undefined {\r\n if (typeof mat !== \"string\") {\r\n const args = toMaterialParams(mat);\r\n return options.system.createRenderMaterial(args);\r\n }\r\n\r\n if (!options.iModel) {\r\n return undefined;\r\n }\r\n\r\n const material = options.system.findMaterial(mat, options.iModel);\r\n if (material || !options.document?.json.renderMaterials)\r\n return material;\r\n\r\n const json = options.document.json.renderMaterials[mat];\r\n if (!json)\r\n return undefined;\r\n\r\n function colorDefFromJson(col: ImdlColorDef | undefined): ColorDef | undefined {\r\n return col ? ColorDef.from(col[0] * 255 + 0.5, col[1] * 255 + 0.5, col[2] * 255 + 0.5) : undefined;\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n const params = new RenderMaterial.Params(mat);\r\n params.diffuseColor = colorDefFromJson(json.diffuseColor);\r\n if (json.diffuse !== undefined)\r\n params.diffuse = JsonUtils.asDouble(json.diffuse);\r\n\r\n params.specularColor = colorDefFromJson(json.specularColor);\r\n if (json.specular !== undefined)\r\n params.specular = JsonUtils.asDouble(json.specular);\r\n\r\n params.reflectColor = colorDefFromJson(json.reflectColor);\r\n if (json.reflect !== undefined)\r\n params.reflect = JsonUtils.asDouble(json.reflect);\r\n\r\n if (json.specularExponent !== undefined)\r\n params.specularExponent = json.specularExponent;\r\n\r\n if (undefined !== json.transparency)\r\n params.alpha = 1.0 - json.transparency;\r\n\r\n params.refract = JsonUtils.asDouble(json.refract);\r\n params.shadows = JsonUtils.asBool(json.shadows);\r\n params.ambient = JsonUtils.asDouble(json.ambient);\r\n\r\n if (undefined !== json.textureMapping)\r\n params.textureMapping = textureMappingFromJson(json.textureMapping.texture, options);\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n return options.system.createMaterial(params, options.iModel);\r\n}\r\n\r\nfunction getModifiers(primitive: Imdl.Primitive): { viOrigin?: Point3d, instances?: InstancedGraphicParams } {\r\n const mod = primitive.modifier;\r\n switch (mod?.type) {\r\n case \"instances\":\r\n return {\r\n instances: {\r\n ...mod,\r\n transformCenter: Point3d.fromJSON(mod.transformCenter),\r\n range: mod.range ? Range3d.fromJSON(mod.range) : undefined,\r\n },\r\n };\r\n case \"viewIndependentOrigin\":\r\n return {\r\n viOrigin: Point3d.fromJSON(mod.origin),\r\n };\r\n default:\r\n return { };\r\n }\r\n}\r\n\r\nfunction createPrimitiveGeometry(primitive: Imdl.Primitive, options: GraphicsOptions, viOrigin: Point3d | undefined): RenderGeometry | undefined {\r\n switch (primitive.type) {\r\n case \"point\":\r\n return options.system.createPointStringGeometry({\r\n ...primitive.params,\r\n vertices: toVertexTable(primitive.params.vertices),\r\n indices: new VertexIndices(primitive.params.indices),\r\n }, viOrigin);\r\n case \"polyline\":\r\n return options.system.createPolylineGeometry({\r\n ...primitive.params,\r\n vertices: toVertexTable(primitive.params.vertices),\r\n polyline: {\r\n ...primitive.params.polyline,\r\n indices: new VertexIndices(primitive.params.polyline.indices),\r\n prevIndices: new VertexIndices(primitive.params.polyline.prevIndices),\r\n },\r\n }, viOrigin);\r\n case \"mesh\": {\r\n const surf = primitive.params.surface;\r\n let material;\r\n if (surf.material) {\r\n if (!surf.material.isAtlas)\r\n material = createSurfaceMaterial(getMaterial(surf.material.material, options));\r\n else\r\n material = surf.material;\r\n }\r\n\r\n let textureMapping;\r\n if (surf.textureMapping) {\r\n let texture;\r\n if (typeof surf.textureMapping.texture === \"string\") {\r\n texture = options.textures.get(surf.textureMapping.texture);\r\n } else {\r\n const gradient = Gradient.Symb.fromJSON(surf.textureMapping.texture);\r\n texture = options.system.getGradientTexture(gradient, options.iModel);\r\n }\r\n\r\n if (texture)\r\n textureMapping = { texture, alwaysDisplayed: surf.textureMapping.alwaysDisplayed };\r\n }\r\n\r\n return options.system.createMeshGeometry({\r\n ...primitive.params,\r\n edges: primitive.params.edges ? edgeParamsFromImdl(primitive.params.edges) : undefined,\r\n vertices: toVertexTable(primitive.params.vertices),\r\n auxChannels: primitive.params.auxChannels ? AuxChannelTable.fromJSON(primitive.params.auxChannels) : undefined,\r\n surface: {\r\n ...primitive.params.surface,\r\n material,\r\n textureMapping,\r\n indices: new VertexIndices(primitive.params.surface.indices),\r\n },\r\n }, viOrigin);\r\n }\r\n }\r\n}\r\n\r\nfunction createPrimitiveGraphic(primitive: Imdl.Primitive, options: GraphicsOptions): RenderGraphic | undefined {\r\n const mods = getModifiers(primitive);\r\n const geometry = createPrimitiveGeometry(primitive, options, mods.viOrigin);\r\n return geometry ? options.system.createRenderGraphic(geometry, mods.instances) : undefined;\r\n}\r\n\r\nfunction createPatternGeometries(primitives: Imdl.Primitive[], options: GraphicsOptions): RenderGeometry[] {\r\n const geometries = [];\r\n for (const primitive of primitives) {\r\n const geometry = createPrimitiveGeometry(primitive, options, undefined);\r\n if (geometry)\r\n geometries.push(geometry);\r\n }\r\n\r\n return geometries;\r\n}\r\n\r\nfunction createPatternGraphic(params: Imdl.AreaPatternParams, options: GraphicsOptions): RenderGraphic | undefined {\r\n const geometries = options.patterns.get(params.symbolName);\r\n if (!geometries || geometries.length === 0)\r\n return undefined;\r\n\r\n const clip = ClipVector.fromJSON(params.clip);\r\n const clipVolume = clip?.isValid ? options.system.createClipVolume(clip) : undefined;\r\n if (!clipVolume)\r\n return undefined;\r\n\r\n const viewIndependentOrigin = params.viewIndependentOrigin ? Point3d.fromJSON(params.viewIndependentOrigin) : undefined;\r\n const pattern = options.system.createAreaPattern({\r\n xyOffsets: params.xyOffsets,\r\n featureId: params.featureId,\r\n orgTransform: Transform.fromJSON(params.orgTransform),\r\n origin: Point2d.fromJSON(params.origin),\r\n scale: params.scale,\r\n spacing: Point2d.fromJSON(params.spacing),\r\n patternToModel: Transform.fromJSON(params.modelTransform),\r\n range: Range3d.fromJSON(params.range),\r\n symbolTranslation: Point3d.fromJSON(params.symbolTranslation),\r\n viewIndependentOrigin,\r\n });\r\n\r\n if (!pattern)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const geometry of geometries) {\r\n const graphic = options.system.createRenderGraphic(geometry, pattern);\r\n if (graphic)\r\n branch.add(graphic);\r\n }\r\n\r\n return branch.isEmpty ? undefined : options.system.createGraphicBranch(branch, Transform.createIdentity(), { clipVolume });\r\n}\r\n\r\nfunction createNodeGraphics(node: Imdl.Node, options: GraphicsOptions): RenderGraphic[] {\r\n if (undefined === node.groupId)\r\n return createPrimitivesNodeGraphics(node, options);\r\n\r\n const graphics: RenderGraphic[] = [];\r\n for (const child of node.nodes) {\r\n graphics.push(...createPrimitivesNodeGraphics(child, options));\r\n }\r\n\r\n if (graphics.length === 0)\r\n return graphics;\r\n\r\n const branch = new GraphicBranch(true);\r\n branch.groupNodeId = node.groupId;\r\n branch.entries.push(...graphics);\r\n return [options.system.createBranch(branch, Transform.createIdentity())];\r\n}\r\n\r\nfunction createPrimitivesNodeGraphics(node: Imdl.PrimitivesNode, options: GraphicsOptions): RenderGraphic[] {\r\n let graphics = [];\r\n for (const primitive of node.primitives) {\r\n const graphic = primitive.type === \"pattern\" ? createPatternGraphic(primitive.params, options) : createPrimitiveGraphic(primitive, options);\r\n if (graphic)\r\n graphics.push(graphic);\r\n }\r\n\r\n if (!graphics.length)\r\n return graphics;\r\n\r\n if (undefined !== node.layerId) {\r\n const layerGraphic = 1 === graphics.length ? graphics[0] : options.system.createGraphicList(graphics);\r\n graphics = [options.system.createGraphicLayer(layerGraphic, node.layerId)];\r\n } else if (undefined !== node.animationNodeId) {\r\n const branch = new GraphicBranch(true);\r\n branch.animationId = node.animationId;\r\n branch.animationNodeId = node.animationNodeId;\r\n branch.entries.push(...graphics);\r\n graphics = [options.system.createBranch(branch, Transform.createIdentity())];\r\n }\r\n\r\n return graphics;\r\n}\r\n\r\n/** @internal */\r\nexport async function decodeImdlGraphics(options: ImdlDecodeOptions): Promise<RenderGraphic | undefined> {\r\n const textures = await loadNamedTextures(options);\r\n if (options.isCanceled && options.isCanceled())\r\n return undefined;\r\n\r\n const patterns = new Map<string, RenderGeometry[]>();\r\n const graphicsOptions = { ...options, textures, patterns };\r\n\r\n for (const [name, primitives] of options.document.patterns)\r\n patterns.set(name, createPatternGeometries(primitives, graphicsOptions));\r\n\r\n const system = options.system;\r\n const graphics: RenderGraphic[] = [];\r\n for (const node of options.document.nodes) {\r\n graphics.push(...createNodeGraphics(node, graphicsOptions));\r\n }\r\n\r\n switch (graphics.length) {\r\n case 0: return undefined;\r\n case 1: return graphics[0];\r\n default: return system.createGraphicList(graphics);\r\n }\r\n}\r\n\r\nfunction remapGraphicDescription(descr: GraphicDescriptionImpl, context: GraphicDescriptionContext): void {\r\n if (descr.remapContext === context) {\r\n // Already remapped.\r\n return;\r\n } else if (descr.remapContext) {\r\n throw new Error(\"You cannot create a graphic from a GraphicDescription using two different contexts\");\r\n }\r\n\r\n descr.remapContext = context;\r\n\r\n const batch = descr.batch;\r\n if (!batch) {\r\n return;\r\n }\r\n\r\n if (Id64.isTransient(batch.modelId)) {\r\n const modelLocalId = context.remapTransientLocalId(Id64.getLocalId(batch.modelId));\r\n batch.modelId = Id64.fromLocalAndBriefcaseIds(modelLocalId, 0xffffff);\r\n }\r\n\r\n const data = batch.featureTable.data;\r\n const remapId = (offset: number) => {\r\n const hi = data[offset + 1];\r\n if (hi >= 0xffffff00) {\r\n const hi8 = hi & 0xff;\r\n const lo = data[offset];\r\n\r\n // Avoid bitwise operators because they truncate at 32 bits (we need 40) and are stupid about the sign bit.\r\n const sourceLocalId = lo + (hi8 * 0xffffffff);\r\n const localId = context.remapTransientLocalId(sourceLocalId);\r\n data[offset] = localId & 0xffffffff;\r\n data[offset + 1] = 0xffffff00 + hi8;\r\n }\r\n };\r\n\r\n const subCatsOffset = 3 * batch.featureTable.numFeatures;\r\n for (let i = 0; i < subCatsOffset; i += 3) {\r\n remapId(i);\r\n }\r\n\r\n const subCatsEnd = undefined !== batch.featureTable.numSubCategories ? subCatsOffset + 2 * batch.featureTable.numSubCategories : data.length;\r\n for (let i = subCatsOffset; i < subCatsEnd; i++) {\r\n remapId(i);\r\n }\r\n\r\n if (undefined !== batch.featureTable.numSubCategories) {\r\n for (let i = subCatsEnd; i < data.length; i++) {\r\n remapId(i + 1);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport async function createGraphicFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): Promise<RenderGraphic | undefined> {\r\n if (!isGraphicDescription(descr)) {\r\n throw new Error(\"Invalid GraphicDescription\");\r\n }\r\n\r\n remapGraphicDescription(descr, context);\r\n\r\n const graphics: RenderGraphic[] = [];\r\n const graphicsOptions: GraphicsOptions = {\r\n system,\r\n textures: context[_textures],\r\n patterns: new Map(),\r\n };\r\n\r\n for (const primitive of descr.primitives) {\r\n const gf = createPrimitiveGraphic(primitive, graphicsOptions);\r\n if (gf) {\r\n graphics.push(gf);\r\n }\r\n }\r\n\r\n if (graphics.length === 0) {\r\n return undefined;\r\n }\r\n\r\n let graphic = graphics.length === 1 ? graphics[0] : system.createGraphicList(graphics);\r\n\r\n if (descr.batch) {\r\n const featureTable = convertFeatureTable(descr.batch.featureTable, descr.batch.modelId);\r\n graphic = system.createBatch(graphic, featureTable, Range3d.fromJSON(descr.batch.range), descr.batch);\r\n }\r\n\r\n if (descr.translation) {\r\n const branch = new GraphicBranch(true);\r\n branch.add(graphic);\r\n graphic = system.createBranch(branch, Transform.createTranslation(Point3d.fromJSON(descr.translation)));\r\n }\r\n\r\n return graphic;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ImdlGraphicsCreator.js","sourceRoot":"","sources":["../../../src/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, Id64, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { ClipVector, Point2d, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDef, Gradient, ImageSource, RenderMaterial, RenderTexture, TextureMapping,\r\n} from \"@itwin/core-common\";\r\nimport { AuxChannelTable } from \"../common/internal/render/AuxChannelTable\";\r\nimport { createSurfaceMaterial } from \"../common/internal/render/SurfaceParams\";\r\nimport { ImdlModel as Imdl } from \"../common/imdl/ImdlModel\";\r\nimport { ImdlColorDef, ImdlNamedTexture, ImdlTextureMapping } from \"../common/imdl/ImdlSchema\";\r\nimport { convertFeatureTable, edgeParamsFromImdl, toMaterialParams, toVertexTable } from \"../common/imdl/ParseImdlDocument\";\r\nimport { VertexIndices } from \"../common/internal/render/VertexIndices\";\r\nimport type { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport type { RenderSystem } from \"../render/RenderSystem\";\r\nimport { InstancedGraphicParams } from \"../common/render/InstancedGraphicParams\";\r\nimport type { IModelConnection } from \"../IModelConnection\";\r\nimport { GraphicDescription } from \"../common/render/GraphicDescriptionBuilder\";\r\nimport { GraphicDescriptionImpl, isGraphicDescription } from \"../common/internal/render/GraphicDescriptionBuilderImpl\";\r\nimport { GraphicDescriptionContext } from \"../common/render/GraphicDescriptionContext\";\r\nimport { _implementationProhibited, _textures } from \"../common/internal/Symbols\";\r\nimport { RenderGeometry } from \"../internal/render/RenderGeometry\";\r\nimport { createGraphicTemplate, GraphicTemplate, GraphicTemplateBatch, GraphicTemplateBranch } from \"../render/GraphicTemplate\";\r\n\r\n/** Options provided to [[decodeImdlContent]].\r\n * @internal\r\n */\r\nexport interface ImdlDecodeOptions {\r\n document: Imdl.Document;\r\n system: RenderSystem;\r\n iModel: IModelConnection;\r\n isCanceled?: () => boolean;\r\n}\r\n\r\nasync function loadNamedTexture(name: string, namedTex: ImdlNamedTexture, options: ImdlDecodeOptions): Promise<RenderTexture | undefined> {\r\n // Reasons a texture could be embedded in the tile content instead of requested separately from the backend:\r\n // - external textures are disabled\r\n // - the texture name is not a valid Id64 string\r\n // - the texture is below a certain backend-hardcoded size threshold\r\n // The bufferViewJson being defined signifies any of the above conditions. In that case, the image content\r\n // has been embedded in the tile contents. Otherwise, we will attempt to request the image content separately\r\n // from the backend.\r\n\r\n try {\r\n let textureType = RenderTexture.Type.Normal;\r\n const isGlyph = JsonUtils.asBool(namedTex.isGlyph);\r\n const isTileSection = !isGlyph && JsonUtils.asBool(namedTex.isTileSection);\r\n if (isGlyph)\r\n textureType = RenderTexture.Type.Glyph;\r\n else if (isTileSection)\r\n textureType = RenderTexture.Type.TileSection;\r\n\r\n // We produce unique tile sections for very large (> 8 megapixel) textures, and unique glyph atlases for raster text.\r\n // Neither should be cached.\r\n const cacheable = !isGlyph && !isTileSection;\r\n const ownership = cacheable ? { iModel: options.iModel, key: name } : undefined;\r\n\r\n const bufferViewId = JsonUtils.asString(namedTex.bufferView);\r\n const bufferViewJson = 0 !== bufferViewId.length ? options.document.json.bufferViews[bufferViewId] : undefined;\r\n\r\n if (undefined !== bufferViewJson) { // presence of bufferViewJson signifies we should read the texture from the tile content\r\n const byteOffset = JsonUtils.asInt(bufferViewJson.byteOffset);\r\n const byteLength = JsonUtils.asInt(bufferViewJson.byteLength);\r\n if (0 === byteLength)\r\n return undefined;\r\n\r\n const texBytes = options.document.binaryData.subarray(byteOffset, byteOffset + byteLength);\r\n const format = namedTex.format;\r\n const source = new ImageSource(texBytes, format);\r\n return await options.system.createTextureFromSource({ source, ownership, type: textureType, transparency: namedTex.transparency });\r\n }\r\n\r\n // bufferViewJson was undefined, so attempt to request the texture directly from the backend\r\n // eslint-disable-next-line deprecation/deprecation\r\n const params = new RenderTexture.Params(cacheable ? name : undefined, textureType);\r\n return options.system.createTextureFromElement(name, options.iModel, params, namedTex.format);\r\n } catch (_) {\r\n return undefined;\r\n }\r\n}\r\n\r\nasync function loadNamedTextures(options: ImdlDecodeOptions): Promise<Map<string, RenderTexture>> {\r\n const result = new Map<string, RenderTexture>();\r\n const namedTextures = options.document.json.namedTextures;\r\n if (!namedTextures)\r\n return result;\r\n\r\n const promises = new Array<Promise<void>>();\r\n for (const [name, namedTexture] of Object.entries(namedTextures)) {\r\n const texture = options.system.findTexture(name, options.iModel);\r\n if (texture) {\r\n result.set(name, texture);\r\n continue;\r\n } else if (namedTexture) {\r\n promises.push(loadNamedTexture(name, namedTexture, options).then((tx) => {\r\n if (tx)\r\n result.set(name, tx);\r\n }));\r\n }\r\n }\r\n\r\n if (promises.length > 0)\r\n await Promise.all(promises);\r\n\r\n return result;\r\n}\r\n\r\ninterface GraphicsOptions {\r\n document?: Imdl.Document;\r\n iModel?: IModelConnection;\r\n system: RenderSystem;\r\n isCanceled?: () => boolean;\r\n textures: Map<string, RenderTexture>;\r\n patterns: Map<string, RenderGeometry[]>;\r\n}\r\n\r\nfunction constantLodParamPropsFromJson(propsJson: { repetitions?: number, offset?: number[], minDistClamp?: number, maxDistClamp?: number } | undefined): TextureMapping.ConstantLodParamProps | undefined {\r\n if (undefined === propsJson)\r\n return undefined;\r\n\r\n const constantLodPops: TextureMapping.ConstantLodParamProps = {\r\n repetitions: JsonUtils.asDouble(propsJson.repetitions, 1.0),\r\n offset: { x: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[0]) : 0.0, y: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[1]) : 0.0 },\r\n minDistClamp: JsonUtils.asDouble(propsJson.minDistClamp, 1.0),\r\n maxDistClamp: JsonUtils.asDouble(propsJson.maxDistClamp, 4096.0 * 1024.0 * 1024.0),\r\n };\r\n return constantLodPops;\r\n}\r\n\r\nfunction textureMappingFromJson(json: ImdlTextureMapping | undefined, options: GraphicsOptions): TextureMapping | undefined {\r\n if (!json)\r\n return undefined;\r\n\r\n const texture = options.textures.get(JsonUtils.asString(json.name));\r\n if (!texture)\r\n return undefined;\r\n\r\n const paramsJson = json.params;\r\n const tf = paramsJson.transform;\r\n\r\n const paramProps: TextureMapping.ParamProps = {\r\n textureMat2x3: new TextureMapping.Trans2x3(tf[0][0], tf[0][1], tf[0][2], tf[1][0], tf[1][1], tf[1][2]),\r\n textureWeight: JsonUtils.asDouble(paramsJson.weight, 1.0),\r\n mapMode: JsonUtils.asInt(paramsJson.mode),\r\n worldMapping: JsonUtils.asBool(paramsJson.worldMapping),\r\n useConstantLod: JsonUtils.asBool(paramsJson.useConstantLod),\r\n constantLodProps: constantLodParamPropsFromJson(paramsJson.constantLodParams),\r\n };\r\n\r\n const textureMapping = new TextureMapping(texture, new TextureMapping.Params(paramProps));\r\n\r\n const normalMapJson = json.normalMapParams;\r\n if (normalMapJson) {\r\n let normalMap;\r\n const normalTexName = JsonUtils.asString(normalMapJson.textureName);\r\n if (normalTexName.length === 0 || undefined !== (normalMap = options.textures.get(normalTexName))) {\r\n textureMapping.normalMapParams = {\r\n normalMap,\r\n greenUp: JsonUtils.asBool(normalMapJson.greenUp),\r\n scale: JsonUtils.asDouble(normalMapJson.scale, 1),\r\n useConstantLod: JsonUtils.asBool(normalMapJson.useConstantLod),\r\n };\r\n }\r\n }\r\n\r\n return textureMapping;\r\n}\r\n\r\nfunction getMaterial(mat: string | Imdl.SurfaceMaterialParams, options: GraphicsOptions): RenderMaterial | undefined {\r\n if (typeof mat !== \"string\") {\r\n const args = toMaterialParams(mat);\r\n return options.system.createRenderMaterial(args);\r\n }\r\n\r\n if (!options.iModel) {\r\n return undefined;\r\n }\r\n\r\n const material = options.system.findMaterial(mat, options.iModel);\r\n if (material || !options.document?.json.renderMaterials)\r\n return material;\r\n\r\n const json = options.document.json.renderMaterials[mat];\r\n if (!json)\r\n return undefined;\r\n\r\n function colorDefFromJson(col: ImdlColorDef | undefined): ColorDef | undefined {\r\n return col ? ColorDef.from(col[0] * 255 + 0.5, col[1] * 255 + 0.5, col[2] * 255 + 0.5) : undefined;\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n const params = new RenderMaterial.Params(mat);\r\n params.diffuseColor = colorDefFromJson(json.diffuseColor);\r\n if (json.diffuse !== undefined)\r\n params.diffuse = JsonUtils.asDouble(json.diffuse);\r\n\r\n params.specularColor = colorDefFromJson(json.specularColor);\r\n if (json.specular !== undefined)\r\n params.specular = JsonUtils.asDouble(json.specular);\r\n\r\n params.reflectColor = colorDefFromJson(json.reflectColor);\r\n if (json.reflect !== undefined)\r\n params.reflect = JsonUtils.asDouble(json.reflect);\r\n\r\n if (json.specularExponent !== undefined)\r\n params.specularExponent = json.specularExponent;\r\n\r\n if (undefined !== json.transparency)\r\n params.alpha = 1.0 - json.transparency;\r\n\r\n params.refract = JsonUtils.asDouble(json.refract);\r\n params.shadows = JsonUtils.asBool(json.shadows);\r\n params.ambient = JsonUtils.asDouble(json.ambient);\r\n\r\n if (undefined !== json.textureMapping)\r\n params.textureMapping = textureMappingFromJson(json.textureMapping.texture, options);\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n return options.system.createMaterial(params, options.iModel);\r\n}\r\n\r\nfunction getModifiers(primitive: Imdl.Primitive): { viOrigin?: Point3d, instances?: InstancedGraphicParams } {\r\n const mod = primitive.modifier;\r\n switch (mod?.type) {\r\n case \"instances\":\r\n return { instances: InstancedGraphicParams.fromProps(mod) };\r\n case \"viewIndependentOrigin\":\r\n return {\r\n viOrigin: Point3d.fromJSON(mod.origin),\r\n };\r\n default:\r\n return { };\r\n }\r\n}\r\n\r\nfunction createPrimitiveGeometry(primitive: Imdl.Primitive, options: GraphicsOptions, viOrigin: Point3d | undefined): RenderGeometry | undefined {\r\n switch (primitive.type) {\r\n case \"point\":\r\n return options.system.createPointStringGeometry({\r\n ...primitive.params,\r\n vertices: toVertexTable(primitive.params.vertices),\r\n indices: new VertexIndices(primitive.params.indices),\r\n }, viOrigin);\r\n case \"polyline\":\r\n return options.system.createPolylineGeometry({\r\n ...primitive.params,\r\n vertices: toVertexTable(primitive.params.vertices),\r\n polyline: {\r\n ...primitive.params.polyline,\r\n indices: new VertexIndices(primitive.params.polyline.indices),\r\n prevIndices: new VertexIndices(primitive.params.polyline.prevIndices),\r\n },\r\n }, viOrigin);\r\n case \"mesh\": {\r\n const surf = primitive.params.surface;\r\n let material;\r\n if (surf.material) {\r\n if (!surf.material.isAtlas)\r\n material = createSurfaceMaterial(getMaterial(surf.material.material, options));\r\n else\r\n material = surf.material;\r\n }\r\n\r\n let textureMapping;\r\n if (surf.textureMapping) {\r\n let texture;\r\n if (typeof surf.textureMapping.texture === \"string\") {\r\n texture = options.textures.get(surf.textureMapping.texture);\r\n } else {\r\n const gradient = Gradient.Symb.fromJSON(surf.textureMapping.texture);\r\n texture = options.system.getGradientTexture(gradient, options.iModel);\r\n }\r\n\r\n if (texture)\r\n textureMapping = { texture, alwaysDisplayed: surf.textureMapping.alwaysDisplayed };\r\n }\r\n\r\n return options.system.createMeshGeometry({\r\n ...primitive.params,\r\n edges: primitive.params.edges ? edgeParamsFromImdl(primitive.params.edges) : undefined,\r\n vertices: toVertexTable(primitive.params.vertices),\r\n auxChannels: primitive.params.auxChannels ? AuxChannelTable.fromJSON(primitive.params.auxChannels) : undefined,\r\n surface: {\r\n ...primitive.params.surface,\r\n material,\r\n textureMapping,\r\n indices: new VertexIndices(primitive.params.surface.indices),\r\n },\r\n }, viOrigin);\r\n }\r\n }\r\n}\r\n\r\nfunction createPrimitiveGraphic(primitive: Imdl.Primitive, options: GraphicsOptions): RenderGraphic | undefined {\r\n const mods = getModifiers(primitive);\r\n const geometry = createPrimitiveGeometry(primitive, options, mods.viOrigin);\r\n return geometry ? options.system.createRenderGraphic(geometry, mods.instances) : undefined;\r\n}\r\n\r\nfunction createPatternGeometries(primitives: Imdl.Primitive[], options: GraphicsOptions): RenderGeometry[] {\r\n const geometries = [];\r\n for (const primitive of primitives) {\r\n const geometry = createPrimitiveGeometry(primitive, options, undefined);\r\n if (geometry)\r\n geometries.push(geometry);\r\n }\r\n\r\n return geometries;\r\n}\r\n\r\nfunction createPatternGraphic(params: Imdl.AreaPatternParams, options: GraphicsOptions): RenderGraphic | undefined {\r\n const geometries = options.patterns.get(params.symbolName);\r\n if (!geometries || geometries.length === 0)\r\n return undefined;\r\n\r\n const clip = ClipVector.fromJSON(params.clip);\r\n const clipVolume = clip?.isValid ? options.system.createClipVolume(clip) : undefined;\r\n if (!clipVolume)\r\n return undefined;\r\n\r\n const viewIndependentOrigin = params.viewIndependentOrigin ? Point3d.fromJSON(params.viewIndependentOrigin) : undefined;\r\n const pattern = options.system.createAreaPattern({\r\n xyOffsets: params.xyOffsets,\r\n featureId: params.featureId,\r\n orgTransform: Transform.fromJSON(params.orgTransform),\r\n origin: Point2d.fromJSON(params.origin),\r\n scale: params.scale,\r\n spacing: Point2d.fromJSON(params.spacing),\r\n patternToModel: Transform.fromJSON(params.modelTransform),\r\n range: Range3d.fromJSON(params.range),\r\n symbolTranslation: Point3d.fromJSON(params.symbolTranslation),\r\n viewIndependentOrigin,\r\n });\r\n\r\n if (!pattern)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const geometry of geometries) {\r\n const graphic = options.system.createRenderGraphic(geometry, pattern);\r\n if (graphic)\r\n branch.add(graphic);\r\n }\r\n\r\n return branch.isEmpty ? undefined : options.system.createGraphicBranch(branch, Transform.createIdentity(), { clipVolume });\r\n}\r\n\r\nfunction createNodeGraphics(node: Imdl.Node, options: GraphicsOptions): RenderGraphic[] {\r\n if (undefined === node.groupId)\r\n return createPrimitivesNodeGraphics(node, options);\r\n\r\n const graphics: RenderGraphic[] = [];\r\n for (const child of node.nodes) {\r\n graphics.push(...createPrimitivesNodeGraphics(child, options));\r\n }\r\n\r\n if (graphics.length === 0)\r\n return graphics;\r\n\r\n const branch = new GraphicBranch(true);\r\n branch.groupNodeId = node.groupId;\r\n branch.entries.push(...graphics);\r\n return [options.system.createBranch(branch, Transform.createIdentity())];\r\n}\r\n\r\nfunction createPrimitivesNodeGraphics(node: Imdl.PrimitivesNode, options: GraphicsOptions): RenderGraphic[] {\r\n let graphics = [];\r\n for (const primitive of node.primitives) {\r\n const graphic = primitive.type === \"pattern\" ? createPatternGraphic(primitive.params, options) : createPrimitiveGraphic(primitive, options);\r\n if (graphic)\r\n graphics.push(graphic);\r\n }\r\n\r\n if (!graphics.length)\r\n return graphics;\r\n\r\n if (undefined !== node.layerId) {\r\n const layerGraphic = 1 === graphics.length ? graphics[0] : options.system.createGraphicList(graphics);\r\n graphics = [options.system.createGraphicLayer(layerGraphic, node.layerId)];\r\n } else if (undefined !== node.animationNodeId) {\r\n const branch = new GraphicBranch(true);\r\n branch.animationId = node.animationId;\r\n branch.animationNodeId = node.animationNodeId;\r\n branch.entries.push(...graphics);\r\n graphics = [options.system.createBranch(branch, Transform.createIdentity())];\r\n }\r\n\r\n return graphics;\r\n}\r\n\r\n/** @internal */\r\nexport async function decodeImdlGraphics(options: ImdlDecodeOptions): Promise<RenderGraphic | undefined> {\r\n const textures = await loadNamedTextures(options);\r\n if (options.isCanceled && options.isCanceled())\r\n return undefined;\r\n\r\n const patterns = new Map<string, RenderGeometry[]>();\r\n const graphicsOptions = { ...options, textures, patterns };\r\n\r\n for (const [name, primitives] of options.document.patterns)\r\n patterns.set(name, createPatternGeometries(primitives, graphicsOptions));\r\n\r\n const system = options.system;\r\n const graphics: RenderGraphic[] = [];\r\n for (const node of options.document.nodes) {\r\n graphics.push(...createNodeGraphics(node, graphicsOptions));\r\n }\r\n\r\n switch (graphics.length) {\r\n case 0: return undefined;\r\n case 1: return graphics[0];\r\n default: return system.createGraphicList(graphics);\r\n }\r\n}\r\n\r\nfunction remapGraphicDescription(descr: GraphicDescriptionImpl, context: GraphicDescriptionContext): void {\r\n if (descr.remapContext === context) {\r\n // Already remapped.\r\n return;\r\n } else if (descr.remapContext) {\r\n throw new Error(\"You cannot create a graphic from a GraphicDescription using two different contexts\");\r\n }\r\n\r\n descr.remapContext = context;\r\n\r\n const batch = descr.batch;\r\n if (!batch) {\r\n return;\r\n }\r\n\r\n if (Id64.isTransient(batch.modelId)) {\r\n const modelLocalId = context.remapTransientLocalId(Id64.getLocalId(batch.modelId));\r\n batch.modelId = Id64.fromLocalAndBriefcaseIds(modelLocalId, 0xffffff);\r\n }\r\n\r\n const data = batch.featureTable.data;\r\n const remapId = (offset: number) => {\r\n const hi = data[offset + 1];\r\n if (hi >= 0xffffff00) {\r\n const hi8 = hi & 0xff;\r\n const lo = data[offset];\r\n\r\n // Avoid bitwise operators because they truncate at 32 bits (we need 40) and are stupid about the sign bit.\r\n const sourceLocalId = lo + (hi8 * 0xffffffff);\r\n const localId = context.remapTransientLocalId(sourceLocalId);\r\n data[offset] = localId & 0xffffffff;\r\n data[offset + 1] = 0xffffff00 + hi8;\r\n }\r\n };\r\n\r\n const subCatsOffset = 3 * batch.featureTable.numFeatures;\r\n for (let i = 0; i < subCatsOffset; i += 3) {\r\n remapId(i);\r\n }\r\n\r\n const subCatsEnd = undefined !== batch.featureTable.numSubCategories ? subCatsOffset + 2 * batch.featureTable.numSubCategories : data.length;\r\n for (let i = subCatsOffset; i < subCatsEnd; i++) {\r\n remapId(i);\r\n }\r\n\r\n if (undefined !== batch.featureTable.numSubCategories) {\r\n for (let i = subCatsEnd; i < data.length; i++) {\r\n remapId(i + 1);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createGraphicTemplateFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): GraphicTemplate {\r\n if (!isGraphicDescription(descr)) {\r\n throw new Error(\"Invalid GraphicDescription\");\r\n }\r\n\r\n remapGraphicDescription(descr, context);\r\n\r\n const graphicsOptions: GraphicsOptions = {\r\n system,\r\n textures: context[_textures],\r\n patterns: new Map(),\r\n };\r\n\r\n const geometry: RenderGeometry[] = [];\r\n for (const primitive of descr.primitives) {\r\n const mods = getModifiers(primitive);\r\n\r\n // GraphicDescriptionBuilder providers no way to include instances in a GraphicDescription.\r\n assert(undefined === mods?.instances);\r\n\r\n const geom = createPrimitiveGeometry(primitive, graphicsOptions, mods.viOrigin);\r\n if (geom) {\r\n geometry.push(geom);\r\n }\r\n }\r\n\r\n let batch: GraphicTemplateBatch | undefined;\r\n if (descr.batch) {\r\n const featureTable = convertFeatureTable(descr.batch.featureTable, descr.batch.modelId);\r\n batch = {\r\n options: { ...descr.batch },\r\n range: Range3d.fromJSON(descr.batch.range),\r\n featureTable,\r\n };\r\n }\r\n\r\n let branch: GraphicTemplateBranch | undefined;\r\n if (descr.translation) {\r\n branch = { transform: Transform.createTranslation(Point3d.fromJSON(descr.translation)) };\r\n }\r\n\r\n return createGraphicTemplate({\r\n nodes: [{ geometry }],\r\n batch,\r\n branch,\r\n noDispose: true,\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function createGraphicFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): RenderGraphic | undefined {\r\n const template = createGraphicTemplateFromDescription(descr, context, system);\r\n return system.createGraphicFromTemplate({ template });\r\n}\r\n"]}
|