@combeenation/3d-viewer 5.1.0-rc3 → 5.1.0-rc4
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/dist/lib-cjs/api/classes/element.js +4 -18
- package/dist/lib-cjs/api/classes/element.js.map +1 -1
- package/dist/lib-cjs/api/classes/variant.js +37 -26
- package/dist/lib-cjs/api/classes/variant.js.map +1 -1
- package/dist/lib-cjs/api/util/babylonHelper.d.ts +2 -2
- package/dist/lib-cjs/api/util/babylonHelper.js +17 -6
- package/dist/lib-cjs/api/util/babylonHelper.js.map +1 -1
- package/dist/lib-cjs/api/util/sceneLoaderHelper.d.ts +8 -1
- package/dist/lib-cjs/api/util/sceneLoaderHelper.js +39 -2
- package/dist/lib-cjs/api/util/sceneLoaderHelper.js.map +1 -1
- package/dist/lib-cjs/buildinfo.json +1 -1
- package/dist/lib-es6/api/classes/animationInterface.d.ts +8 -0
- package/dist/lib-es6/api/classes/animationInterface.js +2 -0
- package/dist/lib-es6/api/classes/animationInterface.js.map +1 -0
- package/dist/lib-es6/api/classes/dottedPath.d.ts +79 -0
- package/dist/lib-es6/api/classes/dottedPath.js +185 -0
- package/dist/lib-es6/api/classes/dottedPath.js.map +1 -0
- package/dist/lib-es6/api/classes/element.d.ts +149 -0
- package/dist/lib-es6/api/classes/element.js +821 -0
- package/dist/lib-es6/api/classes/element.js.map +1 -0
- package/dist/lib-es6/api/classes/event.d.ts +326 -0
- package/dist/lib-es6/api/classes/event.js +369 -0
- package/dist/lib-es6/api/classes/event.js.map +1 -0
- package/dist/lib-es6/api/classes/eventBroadcaster.d.ts +26 -0
- package/dist/lib-es6/api/classes/eventBroadcaster.js +51 -0
- package/dist/lib-es6/api/classes/eventBroadcaster.js.map +1 -0
- package/dist/lib-es6/api/classes/parameter.d.ts +336 -0
- package/dist/lib-es6/api/classes/parameter.js +469 -0
- package/dist/lib-es6/api/classes/parameter.js.map +1 -0
- package/dist/lib-es6/api/classes/parameterObservable.d.ts +36 -0
- package/dist/lib-es6/api/classes/parameterObservable.js +99 -0
- package/dist/lib-es6/api/classes/parameterObservable.js.map +1 -0
- package/dist/lib-es6/api/classes/parameterizable.d.ts +15 -0
- package/dist/lib-es6/api/classes/parameterizable.js +147 -0
- package/dist/lib-es6/api/classes/parameterizable.js.map +1 -0
- package/dist/lib-es6/api/classes/placementAnimation.d.ts +44 -0
- package/dist/lib-es6/api/classes/placementAnimation.js +161 -0
- package/dist/lib-es6/api/classes/placementAnimation.js.map +1 -0
- package/dist/lib-es6/api/classes/variant.d.ts +234 -0
- package/dist/lib-es6/api/classes/variant.js +1199 -0
- package/dist/lib-es6/api/classes/variant.js.map +1 -0
- package/dist/lib-es6/api/classes/variantInstance.d.ts +45 -0
- package/dist/lib-es6/api/classes/variantInstance.js +106 -0
- package/dist/lib-es6/api/classes/variantInstance.js.map +1 -0
- package/dist/lib-es6/api/classes/variantParameterizable.d.ts +17 -0
- package/dist/lib-es6/api/classes/variantParameterizable.js +97 -0
- package/dist/lib-es6/api/classes/variantParameterizable.js.map +1 -0
- package/dist/lib-es6/api/classes/viewer.d.ts +184 -0
- package/dist/lib-es6/api/classes/viewer.js +729 -0
- package/dist/lib-es6/api/classes/viewer.js.map +1 -0
- package/dist/lib-es6/api/classes/viewerLight.d.ts +66 -0
- package/dist/lib-es6/api/classes/viewerLight.js +390 -0
- package/dist/lib-es6/api/classes/viewerLight.js.map +1 -0
- package/dist/lib-es6/api/internal/debugViewer.d.ts +13 -0
- package/dist/lib-es6/api/internal/debugViewer.js +84 -0
- package/dist/lib-es6/api/internal/debugViewer.js.map +1 -0
- package/dist/lib-es6/api/internal/lensRendering.d.ts +8 -0
- package/dist/lib-es6/api/internal/lensRendering.js +9 -0
- package/dist/lib-es6/api/internal/lensRendering.js.map +1 -0
- package/dist/lib-es6/api/internal/sceneSetup.d.ts +13 -0
- package/dist/lib-es6/api/internal/sceneSetup.js +234 -0
- package/dist/lib-es6/api/internal/sceneSetup.js.map +1 -0
- package/dist/lib-es6/api/manager/animationManager.d.ts +29 -0
- package/dist/lib-es6/api/manager/animationManager.js +128 -0
- package/dist/lib-es6/api/manager/animationManager.js.map +1 -0
- package/dist/lib-es6/api/manager/gltfExportManager.d.ts +65 -0
- package/dist/lib-es6/api/manager/gltfExportManager.js +221 -0
- package/dist/lib-es6/api/manager/gltfExportManager.js.map +1 -0
- package/dist/lib-es6/api/manager/sceneManager.d.ts +31 -0
- package/dist/lib-es6/api/manager/sceneManager.js +150 -0
- package/dist/lib-es6/api/manager/sceneManager.js.map +1 -0
- package/dist/lib-es6/api/manager/variantInstanceManager.d.ts +92 -0
- package/dist/lib-es6/api/manager/variantInstanceManager.js +333 -0
- package/dist/lib-es6/api/manager/variantInstanceManager.js.map +1 -0
- package/dist/lib-es6/api/store/specStorage.d.ts +24 -0
- package/dist/lib-es6/api/store/specStorage.js +49 -0
- package/dist/lib-es6/api/store/specStorage.js.map +1 -0
- package/dist/lib-es6/api/util/babylonHelper.d.ts +174 -0
- package/dist/lib-es6/api/util/babylonHelper.js +582 -0
- package/dist/lib-es6/api/util/babylonHelper.js.map +1 -0
- package/dist/lib-es6/api/util/globalTypes.d.ts +366 -0
- package/dist/lib-es6/api/util/globalTypes.js +2 -0
- package/dist/lib-es6/api/util/globalTypes.js.map +1 -0
- package/dist/lib-es6/api/util/resourceHelper.d.ts +58 -0
- package/dist/lib-es6/api/util/resourceHelper.js +248 -0
- package/dist/lib-es6/api/util/resourceHelper.js.map +1 -0
- package/dist/lib-es6/api/util/sceneLoaderHelper.d.ts +35 -0
- package/dist/lib-es6/api/util/sceneLoaderHelper.js +134 -0
- package/dist/lib-es6/api/util/sceneLoaderHelper.js.map +1 -0
- package/dist/lib-es6/api/util/stringHelper.d.ts +9 -0
- package/dist/lib-es6/api/util/stringHelper.js +22 -0
- package/dist/lib-es6/api/util/stringHelper.js.map +1 -0
- package/dist/lib-es6/api/util/structureHelper.d.ts +9 -0
- package/dist/lib-es6/api/util/structureHelper.js +46 -0
- package/dist/lib-es6/api/util/structureHelper.js.map +1 -0
- package/dist/lib-es6/buildinfo.json +3 -0
- package/dist/lib-es6/index.d.ts +49 -0
- package/dist/lib-es6/index.js +51 -0
- package/dist/lib-es6/index.js.map +1 -0
- package/package.json +6 -6
- package/src/api/classes/element.ts +4 -23
- package/src/api/classes/variant.ts +22 -3
- package/src/api/util/babylonHelper.ts +17 -7
- package/src/api/util/sceneLoaderHelper.ts +48 -2
|
@@ -4,6 +4,9 @@ import { AssetContainer } from '@babylonjs/core/assetContainer';
|
|
|
4
4
|
import { injectNodeMetadata } from './babylonHelper';
|
|
5
5
|
import has from 'lodash-es/has';
|
|
6
6
|
import { Material } from '@babylonjs/core/Materials/material';
|
|
7
|
+
import { InstancedMesh } from '@babylonjs/core/Meshes/instancedMesh';
|
|
8
|
+
import { Nullable } from '@babylonjs/core/types';
|
|
9
|
+
import { Node as BjsNode } from '@babylonjs/core/node'; //! overload DOM API Node due to name-clash with BJS
|
|
7
10
|
|
|
8
11
|
const missingMaterialMetadataName = 'missingMaterial';
|
|
9
12
|
|
|
@@ -43,7 +46,7 @@ const getCustomCbnBabylonLoaderPlugin = function (previousLoaderPlugin: ISceneLo
|
|
|
43
46
|
*/
|
|
44
47
|
const getMaterialPostLoadObserver = function (targetMeshOrInstance: AbstractMesh, concerningMesh: Mesh) {
|
|
45
48
|
return (_eventData: any, _eventState: any) => {
|
|
46
|
-
const hasBeenEnabled =
|
|
49
|
+
const hasBeenEnabled = concerningMesh.isEnabled(true);
|
|
47
50
|
const materialMissing = has(concerningMesh.metadata, missingMaterialMetadataName);
|
|
48
51
|
if (!hasBeenEnabled || !materialMissing) return;
|
|
49
52
|
// get id of missing material
|
|
@@ -83,6 +86,44 @@ const addMissingMaterialMetadata = function (dataParsed: any, container: AssetCo
|
|
|
83
86
|
});
|
|
84
87
|
};
|
|
85
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Adds an "onEnabledStateChanged" observer to the given mesh and all its parents:
|
|
91
|
+
* The added observer (`getMaterialPostLoadObserver`) handles creation of missing materials once the given node is
|
|
92
|
+
* enabled.
|
|
93
|
+
*/
|
|
94
|
+
const addMissingMaterialObserver = function (node: BjsNode) {
|
|
95
|
+
// set the concerning node, i.e. the node the observer should check for missing material.
|
|
96
|
+
// for instanced meshes, we want the sourcemesh here.
|
|
97
|
+
const concerningNode = node instanceof InstancedMesh ? node.sourceMesh : (node as Mesh);
|
|
98
|
+
|
|
99
|
+
// observer is pointless if concerning node has no missing material
|
|
100
|
+
if (!has(concerningNode.metadata, missingMaterialMetadataName)) return;
|
|
101
|
+
|
|
102
|
+
// for each of our AbstractMeshes, set an observer on the AbstractMesh itself and all of its parents.
|
|
103
|
+
let currNode: Nullable<BjsNode> = node;
|
|
104
|
+
while (currNode) {
|
|
105
|
+
// Note HAR: Using `addOnce` could be wrong in certain situations.
|
|
106
|
+
// E.g.:
|
|
107
|
+
// * 2 meshes `parentMesh` & `parentMesh.concerningMesh`
|
|
108
|
+
// * `concerningMesh` is having the missing material flag
|
|
109
|
+
// * Both `parentMesh` & `concerningMesh` are disabled
|
|
110
|
+
// * `parentMesh` is enabled -> material should **not** be created as `concerningMesh` is still disabled
|
|
111
|
+
// * `parentMesh` is disabled
|
|
112
|
+
// * `concerningMesh` is enabled -> material should **not** be created as `concerningMesh` is still invisible
|
|
113
|
+
// because its `parentMesh` is ATM disabled
|
|
114
|
+
// * `parentMesh` & `concerningMesh` are both enable
|
|
115
|
+
// -> material should be created as `concerningMesh` is now actually visible but it isn't, as all observers were
|
|
116
|
+
// only fired once 🔥
|
|
117
|
+
//
|
|
118
|
+
// However: Using `add` instead of `addOnce` requires rather complicated manual clean up work...
|
|
119
|
+
|
|
120
|
+
// add observer. needed only once per node, hence addOnce()
|
|
121
|
+
node.onEnabledStateChangedObservable.addOnce(getMaterialPostLoadObserver(currNode as AbstractMesh, concerningNode));
|
|
122
|
+
// console.log('## observer set on: ' + meshOrInstance.name);
|
|
123
|
+
currNode = currNode.parent;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
86
127
|
/**
|
|
87
128
|
* Look up the provided materials (see library import) and create and return one if found.
|
|
88
129
|
* @param materialId BabylonJs material-id. E.g. 'concrete".
|
|
@@ -98,4 +139,9 @@ export const getMaterialFromCbnAssets = function (materialId: string, scene: Sce
|
|
|
98
139
|
return material || null;
|
|
99
140
|
};
|
|
100
141
|
|
|
101
|
-
export {
|
|
142
|
+
export {
|
|
143
|
+
getCustomCbnBabylonLoaderPlugin,
|
|
144
|
+
getMaterialPostLoadObserver,
|
|
145
|
+
missingMaterialMetadataName,
|
|
146
|
+
addMissingMaterialObserver,
|
|
147
|
+
};
|