@roomle/web-sdk 4.2.0-alpha.7 → 4.3.0-alpha.1
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/ConfiguratorKernel.wasm +0 -0
- package/lib/{GaussianBlurNode-DEczNsyD.mjs → GaussianBlurNode-Bjszve7N.mjs} +15 -15
- package/lib/{GaussianBlurNode-DEczNsyD.mjs.map → GaussianBlurNode-Bjszve7N.mjs.map} +1 -1
- package/lib/RoomleCore.wasm +0 -0
- package/lib/RoomleToolsCore.wasm +0 -0
- package/lib/{api-B6sLiuiL.mjs → api-C0UElaCW.mjs} +2 -2
- package/lib/{api-B6sLiuiL.mjs.map → api-C0UElaCW.mjs.map} +1 -1
- package/lib/asset-loader.worker-eqHzNAwa.mjs.map +1 -1
- package/lib/{banana-for-scale-C-grIlTK.mjs → banana-for-scale-DGYmxeBG.mjs} +3 -3
- package/lib/{banana-for-scale-C-grIlTK.mjs.map → banana-for-scale-DGYmxeBG.mjs.map} +1 -1
- package/lib/budgeteer.sw-BUMElkO1.mjs.map +1 -1
- package/lib/{common-utils-6T8eGlhX.mjs → common-utils-CyQUubmw.mjs} +29 -15
- package/lib/{common-utils-6T8eGlhX.mjs.map → common-utils-CyQUubmw.mjs.map} +1 -1
- package/lib/{component-dimensioning-DJuokZnv.mjs → component-dimensioning--4sX2AgY.mjs} +4 -4
- package/lib/{component-dimensioning-DJuokZnv.mjs.map → component-dimensioning--4sX2AgY.mjs.map} +1 -1
- package/lib/{component-raycast-helper-SZg14d7A.mjs → component-raycast-helper-CskJedpv.mjs} +3 -3
- package/lib/{component-raycast-helper-SZg14d7A.mjs.map → component-raycast-helper-CskJedpv.mjs.map} +1 -1
- package/lib/configurator-CjFo24FH.mjs +2 -0
- package/lib/{configurator-Cbof6AET.mjs → configurator-vxRFxJ-B.mjs} +4 -4
- package/lib/{configurator-Cbof6AET.mjs.map → configurator-vxRFxJ-B.mjs.map} +1 -1
- package/lib/{decorate-CX1ZGuFY.mjs → decorate-CjaqqbUP.mjs} +12 -9
- package/lib/decorate-CjaqqbUP.mjs.map +1 -0
- package/lib/dimensioning-helper-0s61LK9R.mjs +2 -0
- package/lib/{dimensioning-helper-BwvR76_I.mjs → dimensioning-helper-Cgao7A18.mjs} +2 -2
- package/lib/{dimensioning-helper-BwvR76_I.mjs.map → dimensioning-helper-Cgao7A18.mjs.map} +1 -1
- package/lib/{glb-viewer-DmVh1uJg.mjs → glb-viewer-B-r0E1aa.mjs} +6 -6
- package/lib/{glb-viewer-DmVh1uJg.mjs.map → glb-viewer-B-r0E1aa.mjs.map} +1 -1
- package/lib/glb-viewer-BnJkmakv.mjs +2 -0
- package/lib/{highlight-coordinator-Qonmfsu1.mjs → highlight-coordinator-CR5rcFh_.mjs} +2 -2
- package/lib/{highlight-coordinator-Qonmfsu1.mjs.map → highlight-coordinator-CR5rcFh_.mjs.map} +1 -1
- package/lib/{homag-intelligence-CzD_RMQo.mjs → homag-intelligence-DHTCBB64.mjs} +8 -5
- package/lib/{homag-intelligence-CzD_RMQo.mjs.map → homag-intelligence-DHTCBB64.mjs.map} +1 -1
- package/lib/{imos-ix-poc-export-helper-Q6-OXziY.mjs → imos-ix-poc-export-helper-DRQK_p2h.mjs} +2 -2
- package/lib/{imos-ix-poc-export-helper-Q6-OXziY.mjs.map → imos-ix-poc-export-helper-DRQK_p2h.mjs.map} +1 -1
- package/lib/{material-viewer-BkSh-aG7.mjs → material-viewer-ZlNDhA8D.mjs} +6 -6
- package/lib/{material-viewer-BkSh-aG7.mjs.map → material-viewer-ZlNDhA8D.mjs.map} +1 -1
- package/lib/{packages-BGVMQMZK.mjs → packages-C9J0u-cc.mjs} +5 -5
- package/lib/{packages-BGVMQMZK.mjs.map → packages-C9J0u-cc.mjs.map} +1 -1
- package/lib/planner-C-5Mg-Lv.mjs +2 -0
- package/lib/{planner-DFa8uJOF.mjs → planner-ClY-VUWt.mjs} +3 -3
- package/lib/{planner-DFa8uJOF.mjs.map → planner-ClY-VUWt.mjs.map} +1 -1
- package/lib/{plugin-system-CqXT37-v.mjs → plugin-system-vlnG8j2T.mjs} +3 -3
- package/lib/{plugin-system-CqXT37-v.mjs.map → plugin-system-vlnG8j2T.mjs.map} +1 -1
- package/lib/{roomle-headless-setup-7xnQlZl3.mjs → roomle-headless-setup-DbO_rLjK.mjs} +54 -40
- package/lib/roomle-headless-setup-DbO_rLjK.mjs.map +1 -0
- package/lib/roomle-headless.d.ts +125 -115
- package/lib/roomle-headless.js +289 -358
- package/lib/roomle-headless.js.map +1 -1
- package/lib/roomle-renderer-FUqNfNIf.mjs.map +1 -1
- package/lib/{roomle-sdk-B73VmWod.mjs → roomle-sdk-BpCPIwDm.mjs} +2447 -2306
- package/lib/roomle-sdk-BpCPIwDm.mjs.map +1 -0
- package/lib/roomle-sdk.d.ts +79 -4
- package/lib/roomle-sdk.js +7 -7
- package/lib/{roomle-webgpu-renderer-Dzuy_Y39.mjs → roomle-webgpu-renderer-Lt55gNj5.mjs} +370 -303
- package/lib/roomle-webgpu-renderer-Lt55gNj5.mjs.map +1 -0
- package/lib/{scene-renderer-DR7EFd-8.mjs → scene-renderer-CLkhNnnv.mjs} +5 -5
- package/lib/{scene-renderer-DR7EFd-8.mjs.map → scene-renderer-CLkhNnnv.mjs.map} +1 -1
- package/lib/{script-loader-BlsGBrYo.mjs → script-loader-9GrUxzSB.mjs} +3 -3
- package/lib/{script-loader-BlsGBrYo.mjs.map → script-loader-9GrUxzSB.mjs.map} +1 -1
- package/lib/{shading-settings-Bnt9v9xJ.mjs → shading-settings-CRNmMpcn.mjs} +2 -2
- package/lib/{shading-settings-Bnt9v9xJ.mjs.map → shading-settings-CRNmMpcn.mjs.map} +1 -1
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/package.json +1 -1
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm +0 -0
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm +0 -0
- package/lib/{stats-helper-vEwFkDIt.mjs → stats-helper-D9l8soWd.mjs} +3 -3
- package/lib/{stats-helper-vEwFkDIt.mjs.map → stats-helper-D9l8soWd.mjs.map} +1 -1
- package/lib/three.tsl-BnL9nfJa.mjs +2 -0
- package/lib/{three.tsl-BElp7_oF.mjs → three.tsl-Dew9p5yF.mjs} +46 -48
- package/lib/{three.tsl-BElp7_oF.mjs.map → three.tsl-Dew9p5yF.mjs.map} +1 -1
- package/lib/{threejs-utils-C9zED_Tu.mjs → threejs-utils-CKV1QNU9.mjs} +4 -3
- package/lib/threejs-utils-CKV1QNU9.mjs.map +1 -0
- package/lib/{tools-core-DKYMilYC.mjs → tools-core-CKaB3WsP.mjs} +3 -3
- package/lib/{tools-core-DKYMilYC.mjs.map → tools-core-CKaB3WsP.mjs.map} +1 -1
- package/lib/{webgpu-BMwlJflc.mjs → webgpu-B0rxiqW-.mjs} +313 -313
- package/lib/{webgpu-BMwlJflc.mjs.map → webgpu-B0rxiqW-.mjs.map} +1 -1
- package/package.json +2 -2
- package/lib/configurator-BFd5022u.mjs +0 -2
- package/lib/decorate-CX1ZGuFY.mjs.map +0 -1
- package/lib/dimensioning-helper-yMfkA1IY.mjs +0 -2
- package/lib/glb-viewer-DlH5_aTU.mjs +0 -2
- package/lib/planner-CSKuhBke.mjs +0 -2
- package/lib/roomle-headless-setup-7xnQlZl3.mjs.map +0 -1
- package/lib/roomle-sdk-B73VmWod.mjs.map +0 -1
- package/lib/roomle-webgpu-renderer-Dzuy_Y39.mjs.map +0 -1
- package/lib/three.tsl-BtDRDR0q.mjs +0 -2
- package/lib/threejs-utils-C9zED_Tu.mjs.map +0 -1
package/lib/roomle-headless.d.ts
CHANGED
|
@@ -2016,6 +2016,7 @@ export declare class ConfiguratorViewModel implements ConfiguratorKernelCallback
|
|
|
2016
2016
|
private _subPartObject;
|
|
2017
2017
|
private _subPartGuard;
|
|
2018
2018
|
protected _components: Map<number, RoomleComponent>;
|
|
2019
|
+
private _componentsWithOutdatedGeometry;
|
|
2019
2020
|
private _previews;
|
|
2020
2021
|
protected _componentNumberOfPossibleChildren: Map<number, number>;
|
|
2021
2022
|
protected _componentFactory: RoomleComponentFactory;
|
|
@@ -2064,6 +2065,7 @@ export declare class ConfiguratorViewModel implements ConfiguratorKernelCallback
|
|
|
2064
2065
|
Editor3dGeometryReady(id: number): void;
|
|
2065
2066
|
Editor3dGeometryNotReady(id: number): void;
|
|
2066
2067
|
Editor3dPlanObjectConstructionDone(planObjectId: number): void;
|
|
2068
|
+
private _finishPendingPlanObjectConstruction;
|
|
2067
2069
|
Editor3dPreviewConstructionDone(componentId: number, _objectId: number): void;
|
|
2068
2070
|
Editor3dSetPreviewAssociations(dockPairs: KernelDockPairPreview[], previewId: number): void;
|
|
2069
2071
|
componentDeleted(componentId: number): void;
|
|
@@ -2097,6 +2099,7 @@ export declare class ConfiguratorViewModel implements ConfiguratorKernelCallback
|
|
|
2097
2099
|
protected _generateMesh(runtimeComponentId: number | undefined, geometryId: string | null | undefined, materialId: string | null, vertices: Float32Array, indices: Int32Array, uvCoords: Float32Array, normals: Float32Array, _type?: KernelEnum, _newGeometryInstance?: boolean, materialAttributes?: Record<string, string>): Mesh;
|
|
2098
2100
|
protected _setMaterial(mesh: Mesh, material: any, _type?: KernelEnum): void;
|
|
2099
2101
|
constructComponents(planObjectId: number): void;
|
|
2102
|
+
private _takeOutdatedGeometryOf;
|
|
2100
2103
|
requestSubPartConstruction(partId: number): Promise<Mesh>;
|
|
2101
2104
|
protected getMeshGenerator(): MeshGenerator;
|
|
2102
2105
|
setRequestRenderCallback(requestRenderCallback: () => void): void;
|
|
@@ -2280,6 +2283,7 @@ export declare const CORE_PLAN_COMPONENT_TYPE: {
|
|
|
2280
2283
|
export declare const CORE_PLAN_ROOM_GEOMETRY_MODE: {
|
|
2281
2284
|
readonly FLOOR: 0;
|
|
2282
2285
|
readonly ROOM: 1;
|
|
2286
|
+
readonly PLAN: 2;
|
|
2283
2287
|
};
|
|
2284
2288
|
|
|
2285
2289
|
export declare const CORE_SNAP_STATE: {
|
|
@@ -2957,9 +2961,13 @@ export declare interface ExternalObjectAPI {
|
|
|
2957
2961
|
*/
|
|
2958
2962
|
loadExternalObjectGroups(groupJson: ExternalGroupData, options: LoadExternalObjectOptions): Promise<LoadExternalObjectGroupResult[]>;
|
|
2959
2963
|
/**
|
|
2960
|
-
* "loadExternalObjectGroupLayout" creates and loads
|
|
2961
|
-
* @param articleLayoutJson The article layout JSON as object.
|
|
2962
|
-
*
|
|
2964
|
+
* "loadExternalObjectGroupLayout" creates and loads groups of modules from an article layout.
|
|
2965
|
+
* @param articleLayoutJson The article layout JSON as object. The layout type "nobila" evaluates
|
|
2966
|
+
* the "shapes" property, the layout type "posGroups" evaluates the "posGroups" property.
|
|
2967
|
+
* For the layout type "posGroups" a group whose id matches a group already loaded in the plan
|
|
2968
|
+
* completely replaces that group; root modules keep their ids when they already exist in the
|
|
2969
|
+
* replaced group, all other ids are regenerated.
|
|
2970
|
+
* @param layoutType The article layout type. "nobila" and "posGroups" are supported.
|
|
2963
2971
|
* @param options Options for loading the external object group.
|
|
2964
2972
|
*/
|
|
2965
2973
|
loadExternalObjectGroupLayout(articleLayoutJson: ExternalObjectGroupLayout, layoutType: string, options?: LoadExternalObjectOptions): Promise<LoadExternalObjectGroupResult[]>;
|
|
@@ -3056,6 +3064,13 @@ export declare interface ExternalObjectAPI {
|
|
|
3056
3064
|
* "getExternalRoomInformation" returns the room information for currently loaded in the plan.
|
|
3057
3065
|
*/
|
|
3058
3066
|
getExternalRoomInformation(mode?: PlanRoomGeometryMode): Promise<ExternalRoomInformation>;
|
|
3067
|
+
/**
|
|
3068
|
+
* "getExternalObjectPlanContext" returns a consistent snapshot of the external object state:
|
|
3069
|
+
* the master data per library, the room information of all rooms, the articles that can be
|
|
3070
|
+
* used, and all groups currently loaded in the plan.
|
|
3071
|
+
* @param include The sections to include. All sections are returned when omitted or empty.
|
|
3072
|
+
*/
|
|
3073
|
+
getExternalObjectPlanContext(include?: HiPlanContextSection[]): Promise<HiPlanContext>;
|
|
3059
3074
|
/**
|
|
3060
3075
|
* It generates a snapshot of the external object in the plan without saving any data.
|
|
3061
3076
|
* By default, the snapshot includes order data, room information, the plan XML, GLBs of the complete scene,
|
|
@@ -3130,6 +3145,7 @@ export declare interface ExternalObjectGroup {
|
|
|
3130
3145
|
export declare interface ExternalObjectGroupLayout {
|
|
3131
3146
|
[key: string]: unknown;
|
|
3132
3147
|
shapes?: ExternalObjectGroupLayoutShape[];
|
|
3148
|
+
posGroups?: PosGroup[];
|
|
3133
3149
|
}
|
|
3134
3150
|
|
|
3135
3151
|
export declare interface ExternalObjectGroupLayoutArticle {
|
|
@@ -3651,8 +3667,9 @@ export declare interface GlueLogic {
|
|
|
3651
3667
|
getSaveDataGroups(): Promise<PosGroup[] | null>;
|
|
3652
3668
|
getSubArticleId(id: string): string | undefined;
|
|
3653
3669
|
newPosDataFromId(id: string): Promise<PosGroup | undefined>;
|
|
3654
|
-
|
|
3670
|
+
createOrReplacePosDataFromArticleLayout(articleLayoutJson: ExternalObjectGroupLayout, layoutType: string, posArticles?: PosArticle[]): Promise<PosGroup | PosGroup[] | undefined>;
|
|
3655
3671
|
newPosDataFromGroup(posDataJson: PosGroup): Promise<PosGroup>;
|
|
3672
|
+
getPlanContext(include?: HiPlanContextSection[]): Promise<HiPlanContext>;
|
|
3656
3673
|
getGroupDataForOrder(options: GetGroupDataForOrderOptions): Promise<HiOrderData | null>;
|
|
3657
3674
|
getMaterialUrl(materialId: string, groupOrModuleId?: string): string | null;
|
|
3658
3675
|
}
|
|
@@ -3812,25 +3829,12 @@ export declare interface HeadlessInitData extends Partial<InitDataDefinition>, P
|
|
|
3812
3829
|
}
|
|
3813
3830
|
|
|
3814
3831
|
export declare class HeadlessRoomleSdk {
|
|
3815
|
-
private
|
|
3816
|
-
private
|
|
3817
|
-
private
|
|
3818
|
-
private
|
|
3819
|
-
private _glbViewer;
|
|
3820
|
-
private _glbViewerMain;
|
|
3821
|
-
private _initialized;
|
|
3822
|
-
private _configuratorReady;
|
|
3823
|
-
private _plannerReady;
|
|
3824
|
-
private _glbViewerReady;
|
|
3825
|
-
private _loadedConfigurationId;
|
|
3826
|
-
private _loadedPlanId;
|
|
3827
|
-
private _loadedStaticItemId;
|
|
3828
|
-
private _width;
|
|
3829
|
-
private _height;
|
|
3830
|
-
private _featureFlags?;
|
|
3831
|
-
private _webGpuConfig?;
|
|
3832
|
-
private _webGpu;
|
|
3832
|
+
private readonly _initData;
|
|
3833
|
+
private readonly _webGpuConfig;
|
|
3834
|
+
private readonly _container;
|
|
3835
|
+
private _plannerMainPromise;
|
|
3833
3836
|
private _loaderQueue;
|
|
3837
|
+
private _loadedScene;
|
|
3834
3838
|
private _skyboxOriginal;
|
|
3835
3839
|
/**
|
|
3836
3840
|
* Create and initialize a headless SDK instance.
|
|
@@ -3838,82 +3842,66 @@ export declare class HeadlessRoomleSdk {
|
|
|
3838
3842
|
* @returns Initialized SDK instance.
|
|
3839
3843
|
*/
|
|
3840
3844
|
static create(initData: HeadlessInitData): Promise<HeadlessRoomleSdk>;
|
|
3841
|
-
private
|
|
3842
|
-
private _deepMergeHeadlessInitDefaults;
|
|
3843
|
-
private _registerHeadlessServices;
|
|
3844
|
-
private _makeStubElement;
|
|
3845
|
+
private constructor();
|
|
3845
3846
|
/**
|
|
3846
|
-
*
|
|
3847
|
-
*
|
|
3847
|
+
* Mount the configurator inside the planner, booting the planner if needed.
|
|
3848
|
+
* It shares the planner's kernel and scene manager (the planner's own
|
|
3849
|
+
* configure-in-room path) and never loads a scene of its own.
|
|
3848
3850
|
*/
|
|
3849
|
-
|
|
3851
|
+
getHeadlessConfigurator(): Promise<RoomleConfigurator>;
|
|
3850
3852
|
/**
|
|
3851
|
-
* Boot and initialize the planner
|
|
3852
|
-
*
|
|
3853
|
+
* Boot and initialize the headless planner. Optional: every load boots it
|
|
3854
|
+
* on demand.
|
|
3853
3855
|
*/
|
|
3854
|
-
|
|
3856
|
+
createHeadlessPlanner(): Promise<void>;
|
|
3855
3857
|
/**
|
|
3856
|
-
*
|
|
3857
|
-
*
|
|
3858
|
+
* The first call boots a planner, every other one awaits the same boot promise
|
|
3859
|
+
* so we can only ever have 1 instance.
|
|
3858
3860
|
*/
|
|
3859
|
-
|
|
3861
|
+
private _getPlannerMain;
|
|
3862
|
+
private _bootPlanner;
|
|
3863
|
+
private _getPlanner;
|
|
3864
|
+
private _getConfigurator;
|
|
3860
3865
|
/**
|
|
3861
|
-
* Load a saved configuration by **id
|
|
3862
|
-
*
|
|
3863
|
-
*
|
|
3864
|
-
* @
|
|
3865
|
-
*
|
|
3866
|
+
* Load a saved configuration by **id**. Like every load it goes through the
|
|
3867
|
+
* planner: `createPlanFromObject` picks the RAPI endpoint from the id shape
|
|
3868
|
+
* (`/items/` for `catalog:item`, `/configurations/` for `catalog:item:HASH`),
|
|
3869
|
+
* so this method, {@link loadConfigurableItemById} and {@link loadStaticItem}
|
|
3870
|
+
* behave the same and only name the caller's intent. For an inline
|
|
3871
|
+
* configuration string use {@link loadConfigurationString} instead.
|
|
3872
|
+
* @param configurationId `catalog:item:HASH`.
|
|
3866
3873
|
*/
|
|
3867
|
-
loadConfiguration(configurationId: RapiId
|
|
3874
|
+
loadConfiguration(configurationId: RapiId): Promise<void>;
|
|
3868
3875
|
/**
|
|
3869
3876
|
* Load a configuration string directly without querying the RAPI (`{"componentId":"catalog:item",…}`)
|
|
3870
3877
|
* To load a configuration by ID, use {@link loadConfiguration}
|
|
3871
3878
|
*/
|
|
3872
|
-
loadConfigurationString(configuration: string
|
|
3879
|
+
loadConfigurationString(configuration: string): Promise<void>;
|
|
3873
3880
|
/**
|
|
3874
|
-
* Load a configurable item
|
|
3881
|
+
* Load a configurable item by id. Same path as {@link loadConfiguration};
|
|
3882
|
+
* the name states the intent.
|
|
3875
3883
|
* @param itemId Single-segment id like `catalog:item`.
|
|
3876
|
-
* @param initData Optional per-module init overrides for prewarm.
|
|
3877
3884
|
*/
|
|
3878
|
-
loadConfigurableItemById(itemId: RapiId
|
|
3879
|
-
private _loadIntoConfigurator;
|
|
3885
|
+
loadConfigurableItemById(itemId: RapiId): Promise<void>;
|
|
3880
3886
|
/**
|
|
3881
|
-
* Load a static (non-configurable) item
|
|
3887
|
+
* Load a static (non-configurable) item. Same path as
|
|
3888
|
+
* {@link loadConfiguration}; the kernel decides static vs. configurable.
|
|
3882
3889
|
* @param staticItemId Catalog item id whose RAPI record has no `configuration`.
|
|
3883
|
-
* @param initData Optional per-module init overrides for prewarm.
|
|
3884
|
-
*/
|
|
3885
|
-
loadStaticItem(staticItemId: string, initData?: Partial<InitDataDefinition>): Promise<void>;
|
|
3886
|
-
/**
|
|
3887
|
-
* GLB-loaded scenes commonly contain hundreds of thousands of triangles
|
|
3888
|
-
* (high-poly furniture/cars). With the default 1024² shadow map those
|
|
3889
|
-
* triangles cast a self-shadow pattern back onto themselves that the
|
|
3890
|
-
* shadow comparison can't resolve cleanly — it appears as a dense
|
|
3891
|
-
* triangle/herringbone overlay covering every PBR-shaded surface
|
|
3892
|
-
* (visible on flat-coloured car bodies, wood slats, etc.). The
|
|
3893
|
-
* artifact is specific to headless's GL backend; in the browser the
|
|
3894
|
-
* same scene renders fine.
|
|
3895
|
-
*
|
|
3896
|
-
* Walking the freshly-loaded scene and clearing `castShadow` on every
|
|
3897
|
-
* mesh removes the cause of the acne while keeping `receiveShadow`,
|
|
3898
|
-
* so static items still pick up shadows from external casters and
|
|
3899
|
-
* full PBR direct-light shading is preserved.
|
|
3900
3890
|
*/
|
|
3901
|
-
|
|
3902
|
-
loadObject(id: string
|
|
3891
|
+
loadStaticItem(staticItemId: string): Promise<void>;
|
|
3892
|
+
loadObject(id: string): Promise<void>;
|
|
3903
3893
|
/**
|
|
3904
3894
|
* Load a plan into the planner.
|
|
3905
3895
|
* @param planId Plan id (no colons).
|
|
3906
|
-
* @param initData Optional per-module init overrides for prewarm.
|
|
3907
3896
|
*/
|
|
3908
|
-
loadPlan(planId: string
|
|
3897
|
+
loadPlan(planId: string): Promise<void>;
|
|
3909
3898
|
/**
|
|
3910
3899
|
* Load plan XML string directly in the planner.
|
|
3911
3900
|
* @param xml Plan XML (`<plan version="2">…</plan>`).
|
|
3912
|
-
* @param initData Optional per-module init overrides for prewarm.
|
|
3913
3901
|
*/
|
|
3914
|
-
loadPlanXml(xml: string
|
|
3902
|
+
loadPlanXml(xml: string): Promise<void>;
|
|
3915
3903
|
private _loadIntoPlanner;
|
|
3916
|
-
private
|
|
3904
|
+
private _load;
|
|
3917
3905
|
/**
|
|
3918
3906
|
* Serialises concurrent load operations using a promise-chain queue.
|
|
3919
3907
|
* Each call chains its task onto the previous queue tail so they run
|
|
@@ -3922,28 +3910,6 @@ export declare class HeadlessRoomleSdk {
|
|
|
3922
3910
|
* always advanced in a settled state).
|
|
3923
3911
|
*/
|
|
3924
3912
|
private _withLoader;
|
|
3925
|
-
/**
|
|
3926
|
-
* Wait for the active scene to fire its onReadyForRender callback —
|
|
3927
|
-
* fired by each scene manager once `_itemsLoaded` (planner) /
|
|
3928
|
-
* `loadConfiguration` (configurator) / `loadStaticItem` (GLB viewer)
|
|
3929
|
-
* has finished constructing the scene and queued its materials. The
|
|
3930
|
-
* callback is armed via {@link _armOnReadyForRender} *before* the load
|
|
3931
|
-
* begins so synchronous firings (the GLB viewer does this) are still
|
|
3932
|
-
* caught.
|
|
3933
|
-
*/
|
|
3934
|
-
private _settleScene;
|
|
3935
|
-
/**
|
|
3936
|
-
* Pre-arms an onReadyForRender listener on the *global* callback (shared
|
|
3937
|
-
* across configurator/planner/GLB viewer) so that it captures even
|
|
3938
|
-
* synchronous firings during the upcoming load. Restores the previous
|
|
3939
|
-
* callback after firing. Using the global callback rather than each
|
|
3940
|
-
* module's api.callbacks is necessary because the GLB viewer only fires
|
|
3941
|
-
* the global one ([glb-viewer-scene-manager.ts:355](packages/web-sdk/packages/glb-viewer-core/src/webgl/glb-viewer-scene-manager.ts:355)).
|
|
3942
|
-
*/
|
|
3943
|
-
private _armOnReadyForRender;
|
|
3944
|
-
private _onReadyForRenderArmed;
|
|
3945
|
-
private _getPlannerListenerInfo;
|
|
3946
|
-
private _getConfiguratorListenerInfo;
|
|
3947
3913
|
/**
|
|
3948
3914
|
* Export the active scene as GLB.
|
|
3949
3915
|
* @param outputPath Optional file path to write the buffer to.
|
|
@@ -3956,16 +3922,7 @@ export declare class HeadlessRoomleSdk {
|
|
|
3956
3922
|
* @returns The USDZ bytes as an ArrayBuffer.
|
|
3957
3923
|
*/
|
|
3958
3924
|
exportUSDZ(outputPath?: string): Promise<ExportResult>;
|
|
3959
|
-
|
|
3960
|
-
* Returns the active top-level API (planner or configurator) based on what
|
|
3961
|
-
* was last loaded. `loadPlan()` and `loadConfiguration()` are mutually
|
|
3962
|
-
* exclusive — each one nulls the other's id — so this resolves cleanly.
|
|
3963
|
-
*/
|
|
3964
|
-
private _getActiveApi;
|
|
3965
|
-
/**
|
|
3966
|
-
* Returns the scene manager of whichever module is active. All exporters
|
|
3967
|
-
* route through here so plan-mode and config-mode share a single code path.
|
|
3968
|
-
*/
|
|
3925
|
+
private _requireLoadedScene;
|
|
3969
3926
|
private _getActiveSceneManager;
|
|
3970
3927
|
setEnvironmentMap(url: string, options?: EnvironmentMapOptions): Promise<void>;
|
|
3971
3928
|
resetEnvironmentMap(options?: EnvironmentMapOptions): Promise<void>;
|
|
@@ -3973,6 +3930,8 @@ export declare class HeadlessRoomleSdk {
|
|
|
3973
3930
|
private _getEnvironmentSceneManager;
|
|
3974
3931
|
setSkybox(url: string): Promise<void>;
|
|
3975
3932
|
resetSkybox(): void;
|
|
3933
|
+
private _useEnvironmentGeometry;
|
|
3934
|
+
private _withLoadedScene;
|
|
3976
3935
|
private _export;
|
|
3977
3936
|
/**
|
|
3978
3937
|
* Render a perspective screenshot preserving the scene background.
|
|
@@ -3997,7 +3956,9 @@ export declare class HeadlessRoomleSdk {
|
|
|
3997
3956
|
height: number;
|
|
3998
3957
|
}>;
|
|
3999
3958
|
/**
|
|
4000
|
-
* Render a top-down image of the scene. Not
|
|
3959
|
+
* Render a top-down image of the scene. Not covered by tests for static
|
|
3960
|
+
* items (RML-17789): the GLB viewer used to refuse them, the planner path
|
|
3961
|
+
* does not, and nobody has verified the output yet.
|
|
4001
3962
|
* @param outputPath Optional file path to write the PNG to.
|
|
4002
3963
|
* @param options ssaa, size, showDimensions.
|
|
4003
3964
|
* @returns Data URL plus final image dimensions.
|
|
@@ -4007,18 +3968,9 @@ export declare class HeadlessRoomleSdk {
|
|
|
4007
3968
|
width: number;
|
|
4008
3969
|
height: number;
|
|
4009
3970
|
}>;
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
private _resolveImageDataUrl;
|
|
4013
|
-
private _writeDataUrlToFile;
|
|
4014
|
-
private _rawPixelsToPngDataUrl;
|
|
4015
|
-
/** Downscale a data URL image to target dimensions using high-quality filtering. */
|
|
4016
|
-
private _ssaaDownscale;
|
|
4017
|
-
getConfiguratorApi(): RoomleConfigurator<readonly []>;
|
|
4018
|
-
getPlannerApi(): RoomlePlanner<readonly []>;
|
|
4019
|
-
/** Destroy any prewarmed configurator, planner, and GLB viewer modules. */
|
|
3971
|
+
getConfiguratorApi(): Promise<RoomleConfigurator>;
|
|
3972
|
+
getPlannerApi(): Promise<RoomlePlanner>;
|
|
4020
3973
|
destroy(): Promise<void>;
|
|
4021
|
-
private _ensureInitialized;
|
|
4022
3974
|
}
|
|
4023
3975
|
|
|
4024
3976
|
export declare interface HelpLineType {
|
|
@@ -4101,6 +4053,15 @@ export declare interface HiObjectSelectionApi {
|
|
|
4101
4053
|
selectionChanged(selectionMode: SELECTION_MODE, objectType: CallbackObjectType, payload: SelectionPayload, _payloadPromise: Promise<SelectionPayload>, _planElementViewModel: PlanElementViewModel): void;
|
|
4102
4054
|
}
|
|
4103
4055
|
|
|
4056
|
+
export declare interface HiPlanContext {
|
|
4057
|
+
masterData?: Record<string, MasterData>;
|
|
4058
|
+
rooms?: ExternalRoomInformation;
|
|
4059
|
+
articles?: PosArticle[];
|
|
4060
|
+
groups?: PosGroup[];
|
|
4061
|
+
}
|
|
4062
|
+
|
|
4063
|
+
export declare type HiPlanContextSection = 'masterData' | 'rooms' | 'articles' | 'groups';
|
|
4064
|
+
|
|
4104
4065
|
export declare class HiTagCatalogCallbacks implements Context {
|
|
4105
4066
|
_creator_: string;
|
|
4106
4067
|
private _glueLogic;
|
|
@@ -5142,6 +5103,7 @@ export declare interface LoadExternalObjectGroupResult {
|
|
|
5142
5103
|
|
|
5143
5104
|
export declare interface LoadExternalObjectOptions {
|
|
5144
5105
|
reason?: HiLoadObjectReason;
|
|
5106
|
+
applyGroupPosition?: boolean;
|
|
5145
5107
|
findFreeSpaceInPlan?: boolean;
|
|
5146
5108
|
moduleIdMap?: Array<{
|
|
5147
5109
|
originalModuleId: string;
|
|
@@ -5820,6 +5782,7 @@ export declare const PLAN_ELEMENT_CHANGE_TYPES: {
|
|
|
5820
5782
|
export declare const PLAN_ROOM_GEOMETRY_MODE: {
|
|
5821
5783
|
readonly FLOOR: "floor";
|
|
5822
5784
|
readonly ROOM: "room";
|
|
5785
|
+
readonly PLAN: "plan";
|
|
5823
5786
|
};
|
|
5824
5787
|
|
|
5825
5788
|
export declare abstract class PlanElement extends AbstractModelWrapper {
|
|
@@ -6380,6 +6343,7 @@ export declare class PlannerSceneEventHandler extends SceneEventHandler<SceneEve
|
|
|
6380
6343
|
private _move;
|
|
6381
6344
|
hasSelection(): boolean;
|
|
6382
6345
|
selectPlanElement(planElement: PlanElementViewModel): Promise<void>;
|
|
6346
|
+
selectPlanElementAfterObjectModeChange(planElement: PlanElementViewModel): void;
|
|
6383
6347
|
protected _interaction(_forceRender?: boolean): void;
|
|
6384
6348
|
addComponentDragInHandler(planViewModel: PlanElementViewModel): void;
|
|
6385
6349
|
enableSnapping(): void;
|
|
@@ -6514,6 +6478,7 @@ export declare class PlannerSceneManager extends ConfiguratorSceneManager implem
|
|
|
6514
6478
|
private _setCameraPosition;
|
|
6515
6479
|
private _resetCameraPosition;
|
|
6516
6480
|
selectPlanObject(runtimeId: number): Promise<void>;
|
|
6481
|
+
selectPlanObjectAfterObjectModeChange(runtimeId: number): void;
|
|
6517
6482
|
backToPlanner(): void;
|
|
6518
6483
|
private _getYRotationOfObject;
|
|
6519
6484
|
loadStaticPlanObjects(): void;
|
|
@@ -8292,6 +8257,7 @@ export declare interface RoomleComponent extends RoomleEventedObject3D {
|
|
|
8292
8257
|
animationValueMap?: AnimationValueMap;
|
|
8293
8258
|
get childComponents(): RoomleComponent[];
|
|
8294
8259
|
get parentComponent(): RoomleComponent | null;
|
|
8260
|
+
get rootComponent(): RoomleComponent;
|
|
8295
8261
|
replaceMeshes(meshes: Mesh[]): void;
|
|
8296
8262
|
addMesh(mesh: Mesh, transform?: Float32Array): void;
|
|
8297
8263
|
removeMesh(mesh: Mesh): void;
|
|
@@ -9321,6 +9287,14 @@ export declare class RoomlePlanner<P extends readonly PluginName[] = readonly []
|
|
|
9321
9287
|
* return the object runtime id
|
|
9322
9288
|
*/
|
|
9323
9289
|
createPlanFromObject(id: RapiId, position?: Position3, rotation?: number): Promise<number>;
|
|
9290
|
+
/**
|
|
9291
|
+
* Creates a plan holding a single object built from a configuration string
|
|
9292
|
+
* @param configuration configuration string (`{"componentId":"catalog:item",…}`).
|
|
9293
|
+
* @param position XYZ
|
|
9294
|
+
* @param rotation deg
|
|
9295
|
+
*/
|
|
9296
|
+
createPlanFromConfigurationString(configuration: string, position?: Position3, rotation?: number): Promise<number>;
|
|
9297
|
+
private _createPlanFromElement;
|
|
9324
9298
|
loadPlanXml(xml: string, options?: InitDataDefinition & GlobalInitDataDefinition): Promise<void>;
|
|
9325
9299
|
/**
|
|
9326
9300
|
* Creates 2D elevation plans of the current plan, one per elevation view.
|
|
@@ -9678,6 +9652,7 @@ export declare class RoomlePlanner<P extends readonly PluginName[] = readonly []
|
|
|
9678
9652
|
private _loadExternalObjectGroupInConfigurator;
|
|
9679
9653
|
private _loadExternalObjectGroupInPlanner;
|
|
9680
9654
|
private _updateExternalObjectRootModuleSelection;
|
|
9655
|
+
private _mergeAndSelectExternalObjectGroup;
|
|
9681
9656
|
private _loadOrUpdateExternalObjectGroup;
|
|
9682
9657
|
private _interactionBeforeLoadingExternalObjectGroups;
|
|
9683
9658
|
private _interactionAfterLoadingExternalObjectGroups;
|
|
@@ -9699,6 +9674,7 @@ export declare class RoomlePlanner<P extends readonly PluginName[] = readonly []
|
|
|
9699
9674
|
openOrCloseGeometryOfExternalObject(groupIdOrRootModuleId: string, _subModuleId: string | null, open: boolean, animate: boolean): void;
|
|
9700
9675
|
_selectExternalObjectGroup(groupId: string, switchToPlanner: boolean): Promise<void>;
|
|
9701
9676
|
getExternalObjectGroups(): Promise<object[]>;
|
|
9677
|
+
getExternalObjectPlanContext(include?: HiPlanContextSection[]): Promise<HiPlanContext>;
|
|
9702
9678
|
getExternalRoomInformation(mode?: PlanRoomGeometryMode): Promise<ExternalRoomInformation>;
|
|
9703
9679
|
/**
|
|
9704
9680
|
* Highlights a product in the planner.
|
|
@@ -10304,6 +10280,7 @@ export declare abstract class SceneManager implements Context, LifeCycleCallback
|
|
|
10304
10280
|
private _clock;
|
|
10305
10281
|
private _delta;
|
|
10306
10282
|
protected _renderLoopFunction: (() => void) | null;
|
|
10283
|
+
private _renderLoopFunctionApplied;
|
|
10307
10284
|
protected _renderListener: (() => void) | null;
|
|
10308
10285
|
protected _stopRendering: boolean;
|
|
10309
10286
|
protected _roomleRenderer: GenericRoomleRenderer | null;
|
|
@@ -10320,6 +10297,12 @@ export declare abstract class SceneManager implements Context, LifeCycleCallback
|
|
|
10320
10297
|
protected abstract createCameraControl(mode: Enumify_2<typeof CAMERA_TYPE>, offset: CanvasOffset): void;
|
|
10321
10298
|
protected abstract _getInputManager(): InputManager;
|
|
10322
10299
|
get cameraBehaviour(): CameraBehaviour;
|
|
10300
|
+
protected _scheduleRenderLoopFunction(renderLoopFunction: () => void): void;
|
|
10301
|
+
/**
|
|
10302
|
+
* Resolves the next time the render loop applies a scheduled function, so arm
|
|
10303
|
+
* it **before** triggering the work whose mutation you are waiting for.
|
|
10304
|
+
*/
|
|
10305
|
+
whenRenderLoopFunctionApplied(): Promise<void>;
|
|
10323
10306
|
abstract sceneChanged(): void;
|
|
10324
10307
|
abstract getBounds(): Box3 | null;
|
|
10325
10308
|
abstract getGeometryBounds(): Box3 | null;
|
|
@@ -11235,6 +11218,7 @@ export declare class WebGpuConfig implements WebGpuConfigDefinition {
|
|
|
11235
11218
|
topLight: WebGpuTopLightConfig;
|
|
11236
11219
|
groundReflection: WebGpuGroundReflectionConfig;
|
|
11237
11220
|
fog: WebGpuFogConfig;
|
|
11221
|
+
ssgi: WebGpuSSGIConfig;
|
|
11238
11222
|
toneMapping: WebGpuToneMapping;
|
|
11239
11223
|
toneMappingExposure: number;
|
|
11240
11224
|
}
|
|
@@ -11273,6 +11257,10 @@ export declare interface WebGpuConfigDefinition {
|
|
|
11273
11257
|
* @description Visual configuration for the WebGPU fog.
|
|
11274
11258
|
*/
|
|
11275
11259
|
fog?: WebGpuFogConfigDefinition;
|
|
11260
|
+
/**
|
|
11261
|
+
* @description Visual configuration for the WebGPU screen space global illumination (SSGI) effect.
|
|
11262
|
+
*/
|
|
11263
|
+
ssgi?: WebGpuSSGIConfigDefinition;
|
|
11276
11264
|
/**
|
|
11277
11265
|
* @description Tone mapping operator applied by the WebGPU renderer.
|
|
11278
11266
|
* @default 'none'
|
|
@@ -11353,6 +11341,28 @@ export declare interface WebGpuGroundReflectionConfigDefinition {
|
|
|
11353
11341
|
endFadeout?: number;
|
|
11354
11342
|
}
|
|
11355
11343
|
|
|
11344
|
+
export declare class WebGpuSSGIConfig implements WebGpuSSGIConfigDefinition {
|
|
11345
|
+
giDenoiseRadius: number;
|
|
11346
|
+
aoDenoiseRadius: number;
|
|
11347
|
+
}
|
|
11348
|
+
|
|
11349
|
+
export declare interface WebGpuSSGIConfigDefinition {
|
|
11350
|
+
/**
|
|
11351
|
+
* @description Radius of the denoising filter applied to the indirect lighting.
|
|
11352
|
+
* Higher values produce a stronger denoising effect, which can help reduce noise
|
|
11353
|
+
* in the indirect lighting but may also blur fine details.
|
|
11354
|
+
* @default 20
|
|
11355
|
+
*/
|
|
11356
|
+
giDenoiseRadius?: number;
|
|
11357
|
+
/**
|
|
11358
|
+
* @description Radius of the denoising filter applied to the ambient occlusion (AO) pass.
|
|
11359
|
+
* Higher values produce a stronger denoising effect, which can help reduce noise
|
|
11360
|
+
* in the AO but may also blur fine details.
|
|
11361
|
+
* @default 10
|
|
11362
|
+
*/
|
|
11363
|
+
aoDenoiseRadius?: number;
|
|
11364
|
+
}
|
|
11365
|
+
|
|
11356
11366
|
export declare type WebGpuToneMapping = Enumify_2<typeof WEBGPU_TONE_MAPPINGS>;
|
|
11357
11367
|
|
|
11358
11368
|
export declare class WebGpuTopLightConfig implements WebGpuTopLightConfigDefinition {
|