@combeenation/3d-viewer 14.0.1-rc1 → 15.0.0

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.
Files changed (81) hide show
  1. package/README.md +9 -9
  2. package/dist/lib-cjs/buildinfo.json +3 -3
  3. package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
  4. package/dist/lib-cjs/index.d.ts +51 -62
  5. package/dist/lib-cjs/index.js +84 -94
  6. package/dist/lib-cjs/index.js.map +1 -1
  7. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.d.ts +10 -10
  8. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js +131 -131
  9. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js.map +1 -1
  10. package/dist/lib-cjs/internal/cloning-helper.d.ts +19 -19
  11. package/dist/lib-cjs/internal/cloning-helper.js +163 -163
  12. package/dist/lib-cjs/internal/device-helper.d.ts +9 -9
  13. package/dist/lib-cjs/internal/device-helper.js +24 -24
  14. package/dist/lib-cjs/internal/geometry-helper.d.ts +21 -21
  15. package/dist/lib-cjs/internal/geometry-helper.js +145 -145
  16. package/dist/lib-cjs/internal/metadata-helper.d.ts +26 -26
  17. package/dist/lib-cjs/internal/metadata-helper.js +50 -50
  18. package/dist/lib-cjs/internal/paintable-helper.d.ts +40 -40
  19. package/dist/lib-cjs/internal/paintable-helper.js +234 -286
  20. package/dist/lib-cjs/internal/paintable-helper.js.map +1 -1
  21. package/dist/lib-cjs/internal/svg-helper.d.ts +4 -0
  22. package/dist/lib-cjs/internal/svg-helper.js +67 -0
  23. package/dist/lib-cjs/internal/svg-helper.js.map +1 -0
  24. package/dist/lib-cjs/internal/tags-helper.d.ts +12 -12
  25. package/dist/lib-cjs/internal/tags-helper.js +39 -37
  26. package/dist/lib-cjs/internal/tags-helper.js.map +1 -1
  27. package/dist/lib-cjs/internal/texture-parameter-helper.d.ts +37 -0
  28. package/dist/lib-cjs/internal/texture-parameter-helper.js +287 -0
  29. package/dist/lib-cjs/internal/texture-parameter-helper.js.map +1 -0
  30. package/dist/lib-cjs/manager/camera-manager.d.ts +110 -110
  31. package/dist/lib-cjs/manager/camera-manager.js +209 -206
  32. package/dist/lib-cjs/manager/camera-manager.js.map +1 -1
  33. package/dist/lib-cjs/manager/debug-manager.d.ts +60 -60
  34. package/dist/lib-cjs/manager/debug-manager.js +217 -217
  35. package/dist/lib-cjs/manager/event-manager.d.ts +52 -52
  36. package/dist/lib-cjs/manager/event-manager.js +71 -71
  37. package/dist/lib-cjs/manager/gltf-export-manager.d.ts +75 -84
  38. package/dist/lib-cjs/manager/gltf-export-manager.js +286 -290
  39. package/dist/lib-cjs/manager/gltf-export-manager.js.map +1 -1
  40. package/dist/lib-cjs/manager/material-manager.d.ts +35 -35
  41. package/dist/lib-cjs/manager/material-manager.js +125 -125
  42. package/dist/lib-cjs/manager/model-manager.d.ts +145 -145
  43. package/dist/lib-cjs/manager/model-manager.js +382 -382
  44. package/dist/lib-cjs/manager/parameter-manager.d.ts +228 -210
  45. package/dist/lib-cjs/manager/parameter-manager.js +573 -514
  46. package/dist/lib-cjs/manager/parameter-manager.js.map +1 -1
  47. package/dist/lib-cjs/manager/scene-manager.d.ts +45 -45
  48. package/dist/lib-cjs/manager/scene-manager.js +64 -64
  49. package/dist/lib-cjs/manager/texture-manager.d.ts +12 -12
  50. package/dist/lib-cjs/manager/texture-manager.js +43 -43
  51. package/dist/lib-cjs/viewer-error.d.ts +49 -48
  52. package/dist/lib-cjs/viewer-error.js +61 -60
  53. package/dist/lib-cjs/viewer-error.js.map +1 -1
  54. package/dist/lib-cjs/viewer.d.ts +115 -115
  55. package/dist/lib-cjs/viewer.js +217 -217
  56. package/dist/lib-cjs/viewer.js.map +1 -1
  57. package/package.json +94 -91
  58. package/src/buildinfo.json +3 -3
  59. package/src/dev.ts +47 -47
  60. package/src/global-types.d.ts +39 -39
  61. package/src/index.ts +71 -81
  62. package/src/internal/cbn-custom-babylon-loader-plugin.ts +159 -159
  63. package/src/internal/cloning-helper.ts +225 -225
  64. package/src/internal/device-helper.ts +25 -25
  65. package/src/internal/geometry-helper.ts +181 -181
  66. package/src/internal/metadata-helper.ts +63 -63
  67. package/src/internal/paintable-helper.ts +258 -310
  68. package/src/internal/svg-helper.ts +52 -0
  69. package/src/internal/tags-helper.ts +43 -41
  70. package/src/internal/texture-parameter-helper.ts +353 -0
  71. package/src/manager/camera-manager.ts +368 -365
  72. package/src/manager/debug-manager.ts +245 -245
  73. package/src/manager/event-manager.ts +72 -72
  74. package/src/manager/gltf-export-manager.ts +356 -357
  75. package/src/manager/material-manager.ts +135 -135
  76. package/src/manager/model-manager.ts +458 -458
  77. package/src/manager/parameter-manager.ts +730 -652
  78. package/src/manager/scene-manager.ts +101 -101
  79. package/src/manager/texture-manager.ts +32 -32
  80. package/src/viewer-error.ts +69 -68
  81. package/src/viewer.ts +290 -290
@@ -1 +1 @@
1
- {"version":3,"file":"cbn-custom-babylon-loader-plugin.js","sourceRoot":"","sources":["../../../src/internal/cbn-custom-babylon-loader-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cbn-custom-babylon-loader-plugin.js","sourceRoot":"","sources":["../../../src/internal/cbn-custom-babylon-loader-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,19 @@
1
- import { AssetContainer, MorphTargetManager, NodeNamingStrategy, Scene, TagNamingStrategy } from '../index';
2
- /**
3
- * Clones the node hierarchy of the asset container with some special treatment that differs from Babylon.js default
4
- * cloning behaviour, such as:
5
- * - create new instances of morph target manager
6
- * - deep cloning internal metadata
7
- * - deep cloning metadata and tags for instanced meshes
8
- * - reassigns source meshes in cloned asset container
9
- * Furthermore there is the possibility to adjust naming of nodes and tags in the cloned asset container
10
- */
11
- export declare function cloneModelAssetContainer(sourceAssetContainer: AssetContainer, newModelName: string, renaming: {
12
- nodeNamingStrategy?: NodeNamingStrategy;
13
- tagNamingStrategy?: TagNamingStrategy;
14
- }, scene: Scene): AssetContainer;
15
- /**
16
- * Helper function for cloning a morph target manager and updating all the mesh assignments.
17
- * Meshes need to be already available in the target asset container.
18
- */
19
- export declare function cloneMorphTargetManager(sourceMTM: MorphTargetManager, targetAssetContainer: AssetContainer): MorphTargetManager;
1
+ import { AssetContainer, MorphTargetManager, NodeNamingStrategy, Scene, TagNamingStrategy } from '../index';
2
+ /**
3
+ * Clones the node hierarchy of the asset container with some special treatment that differs from Babylon.js default
4
+ * cloning behaviour, such as:
5
+ * - create new instances of morph target manager
6
+ * - deep cloning internal metadata
7
+ * - deep cloning metadata and tags for instanced meshes
8
+ * - reassigns source meshes in cloned asset container
9
+ * Furthermore there is the possibility to adjust naming of nodes and tags in the cloned asset container
10
+ */
11
+ export declare function cloneModelAssetContainer(sourceAssetContainer: AssetContainer, newModelName: string, renaming: {
12
+ nodeNamingStrategy?: NodeNamingStrategy;
13
+ tagNamingStrategy?: TagNamingStrategy;
14
+ }, scene: Scene): AssetContainer;
15
+ /**
16
+ * Helper function for cloning a morph target manager and updating all the mesh assignments.
17
+ * Meshes need to be already available in the target asset container.
18
+ */
19
+ export declare function cloneMorphTargetManager(sourceMTM: MorphTargetManager, targetAssetContainer: AssetContainer): MorphTargetManager;
@@ -1,164 +1,164 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cloneMorphTargetManager = exports.cloneModelAssetContainer = void 0;
4
- const index_1 = require("../index");
5
- const metadata_helper_1 = require("./metadata-helper");
6
- const tags_helper_1 = require("./tags-helper");
7
- const _defaultNodeNamingStrategy = (node, newModelName) => {
8
- return `${node.name}.${newModelName}`;
9
- };
10
- const _defaultTagNamingStrategy = (tag, newModelName) => {
11
- // don't rename tags by default
12
- return tag;
13
- };
14
- /**
15
- * Clones the node hierarchy of the asset container with some special treatment that differs from Babylon.js default
16
- * cloning behaviour, such as:
17
- * - create new instances of morph target manager
18
- * - deep cloning internal metadata
19
- * - deep cloning metadata and tags for instanced meshes
20
- * - reassigns source meshes in cloned asset container
21
- * Furthermore there is the possibility to adjust naming of nodes and tags in the cloned asset container
22
- */
23
- function cloneModelAssetContainer(sourceAssetContainer, newModelName, renaming, scene) {
24
- const targetAssetContainer = new index_1.AssetContainer(scene);
25
- sourceAssetContainer.rootNodes.forEach(node => {
26
- if (node instanceof index_1.TransformNode) {
27
- // this is the actual node tree cloning procedure
28
- _cloneNode(node, newModelName, null, targetAssetContainer, {
29
- nodeNamingStrategy: renaming === null || renaming === void 0 ? void 0 : renaming.nodeNamingStrategy,
30
- tagNamingStrategy: renaming === null || renaming === void 0 ? void 0 : renaming.tagNamingStrategy,
31
- });
32
- }
33
- });
34
- targetAssetContainer.populateRootNodes();
35
- targetAssetContainer.rootNodes.forEach(node => {
36
- if (node instanceof index_1.TransformNode) {
37
- // reassigning instanced meshes can only be done after the model has been fully cloned, as we can't be sure if
38
- // the source or instanced mesh is handled prior
39
- _reAssignSourceMesh(node, sourceAssetContainer.meshes, targetAssetContainer.meshes);
40
- }
41
- });
42
- // morph target manager is not cloned per default, therefore morph targets would affect original and cloned model at
43
- // the same time, which we don't want
44
- sourceAssetContainer.morphTargetManagers.forEach(sourceMTM => {
45
- cloneMorphTargetManager(sourceMTM, targetAssetContainer);
46
- });
47
- _clearCloningMetadata(sourceAssetContainer);
48
- _clearCloningMetadata(targetAssetContainer);
49
- // hide immediately, so that show model code can do it's thing (scene preparation) before finally showing the model
50
- targetAssetContainer.removeAllFromScene();
51
- return targetAssetContainer;
52
- }
53
- exports.cloneModelAssetContainer = cloneModelAssetContainer;
54
- /**
55
- * Helper function for cloning a morph target manager and updating all the mesh assignments.
56
- * Meshes need to be already available in the target asset container.
57
- */
58
- function cloneMorphTargetManager(sourceMTM, targetAssetContainer) {
59
- const clonedMTM = sourceMTM.clone();
60
- clonedMTM._parentContainer = targetAssetContainer;
61
- targetAssetContainer.morphTargetManagers.push(clonedMTM);
62
- targetAssetContainer.meshes.forEach(mesh => {
63
- if (mesh.morphTargetManager === sourceMTM) {
64
- mesh.morphTargetManager = clonedMTM;
65
- }
66
- });
67
- return clonedMTM;
68
- }
69
- exports.cloneMorphTargetManager = cloneMorphTargetManager;
70
- /**
71
- * The actual geometry cloning function.
72
- * Calls "clone" function of dedicated Node type and recourses into children to clone the whole node tree.
73
- * Adds temporary metadata for special treatment of certain node types (e.g. InstancedMesh).
74
- */
75
- function _cloneNode(node, newModelName, newParent, assetContainer, renaming) {
76
- var _a, _b;
77
- const nodeNamingStrategy = (_a = renaming.nodeNamingStrategy) !== null && _a !== void 0 ? _a : _defaultNodeNamingStrategy;
78
- const tagNamingStrategy = (_b = renaming.tagNamingStrategy) !== null && _b !== void 0 ? _b : _defaultTagNamingStrategy;
79
- const cloneName = nodeNamingStrategy(node, newModelName);
80
- const clone = node.clone(cloneName, newParent, true);
81
- if (!clone) {
82
- throw new Error(`Cloning node "${node.name}" failed`);
83
- }
84
- clone.id = cloneName;
85
- // create a deep clone for internal metadata, as the default clone function uses the same assignment of the sources
86
- // internal metadata
87
- (0, metadata_helper_1.cloneInternalMetadata)(node, clone);
88
- // ATM the assignment from clone to source is needed for reassigning instanced meshes after cloning
89
- // may be usefull for other node types in the future as well
90
- (0, metadata_helper_1.setInternalMetadataValue)(clone, 'cloneSource', node.uniqueId);
91
- (0, metadata_helper_1.setInternalMetadataValue)(node, 'cloneTarget', clone.uniqueId);
92
- if (node instanceof index_1.InstancedMesh) {
93
- _cloneInstancedMeshData(node, clone);
94
- }
95
- const sourceTags = (0, tags_helper_1.getTags)(node);
96
- const mappedTags = sourceTags.map(tag => tagNamingStrategy(tag, newModelName));
97
- (0, tags_helper_1.setTags)(clone, mappedTags);
98
- clone._parentContainer = assetContainer;
99
- // TODO WTT: create global helper function for distinguishing between transform nodes and meshes
100
- if (clone instanceof index_1.AbstractMesh) {
101
- assetContainer.meshes.push(clone);
102
- }
103
- else {
104
- assetContainer.transformNodes.push(clone);
105
- }
106
- const children = node.getChildTransformNodes(true);
107
- children.forEach(child => _cloneNode(child, newModelName, clone, assetContainer, renaming));
108
- }
109
- /**
110
- * Cloned instanced meshes are having the same source mesh as their cloning source.
111
- * However we want the cloned source mesh to be the actual source.
112
- * Exchanging and reassigning is done within this function.
113
- * Operates on the given `node` and all its children recursively.
114
- */
115
- function _reAssignSourceMesh(node, sourceMeshes, clonedMeshes) {
116
- if (node instanceof index_1.InstancedMesh) {
117
- // find the cloned instance and source mesh
118
- const clonedInstance = node;
119
- const originalInstance = _findByUniqueId(sourceMeshes, (0, metadata_helper_1.getInternalMetadataValue)(clonedInstance, 'cloneSource'));
120
- if (originalInstance instanceof index_1.InstancedMesh) {
121
- const originalSource = originalInstance.sourceMesh;
122
- const clonedSource = _findByUniqueId(clonedMeshes, (0, metadata_helper_1.getInternalMetadataValue)(originalSource, 'cloneTarget'));
123
- if (clonedSource instanceof index_1.Mesh) {
124
- // it's not possible to just exchange the source mesh => readonly property
125
- // we have to create a new clone with the correct source mesh
126
- const exchangedInstance = clonedInstance.clone(clonedInstance.name, clonedInstance.parent, true, clonedSource);
127
- clonedInstance._parentContainer.meshes.push(exchangedInstance);
128
- _cloneInstancedMeshData(clonedInstance, exchangedInstance);
129
- // re-reference the childs of the cloned instance as well
130
- const childs = clonedInstance.getChildTransformNodes(true);
131
- childs.forEach(child => (child.parent = exchangedInstance));
132
- }
133
- }
134
- // old instance mesh is not needed anymore and can be disposed
135
- clonedInstance.dispose();
136
- }
137
- // recurse into childs
138
- const children = node.getChildTransformNodes(true);
139
- children.forEach(child => _reAssignSourceMesh(child, sourceMeshes, clonedMeshes));
140
- }
141
- /**
142
- * Removes metadata entries "cloneSource" and "cloneTarget" from all meshes and transform nodes inside the asset
143
- * container
144
- */
145
- function _clearCloningMetadata(assetContainer) {
146
- [...assetContainer.meshes, ...assetContainer.transformNodes].forEach(node => {
147
- (0, metadata_helper_1.clearInternalMetadataValue)(node, 'cloneSource');
148
- (0, metadata_helper_1.clearInternalMetadataValue)(node, 'cloneTarget');
149
- });
150
- }
151
- /**
152
- * "InstancedMesh.clone" function doesn't clone tags and metadata, also the enabled state doesn't seem to be cloned
153
- * correctly.
154
- * This function adjusts the behaviour to fulfill our expectations.
155
- */
156
- function _cloneInstancedMeshData(sourceInstancedMesh, targetInstancedMesh) {
157
- targetInstancedMesh.setEnabled(sourceInstancedMesh.isEnabled(false));
158
- (0, metadata_helper_1.cloneMetadata)(sourceInstancedMesh, targetInstancedMesh);
159
- (0, tags_helper_1.cloneTags)(sourceInstancedMesh, targetInstancedMesh);
160
- }
161
- function _findByUniqueId(nodes, uniqueId) {
162
- return nodes.find(node => node.uniqueId === uniqueId);
163
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cloneMorphTargetManager = exports.cloneModelAssetContainer = void 0;
4
+ const index_1 = require("../index");
5
+ const metadata_helper_1 = require("./metadata-helper");
6
+ const tags_helper_1 = require("./tags-helper");
7
+ const _defaultNodeNamingStrategy = (node, newModelName) => {
8
+ return `${node.name}.${newModelName}`;
9
+ };
10
+ const _defaultTagNamingStrategy = (tag, newModelName) => {
11
+ // don't rename tags by default
12
+ return tag;
13
+ };
14
+ /**
15
+ * Clones the node hierarchy of the asset container with some special treatment that differs from Babylon.js default
16
+ * cloning behaviour, such as:
17
+ * - create new instances of morph target manager
18
+ * - deep cloning internal metadata
19
+ * - deep cloning metadata and tags for instanced meshes
20
+ * - reassigns source meshes in cloned asset container
21
+ * Furthermore there is the possibility to adjust naming of nodes and tags in the cloned asset container
22
+ */
23
+ function cloneModelAssetContainer(sourceAssetContainer, newModelName, renaming, scene) {
24
+ const targetAssetContainer = new index_1.AssetContainer(scene);
25
+ sourceAssetContainer.rootNodes.forEach(node => {
26
+ if (node instanceof index_1.TransformNode) {
27
+ // this is the actual node tree cloning procedure
28
+ _cloneNode(node, newModelName, null, targetAssetContainer, {
29
+ nodeNamingStrategy: renaming === null || renaming === void 0 ? void 0 : renaming.nodeNamingStrategy,
30
+ tagNamingStrategy: renaming === null || renaming === void 0 ? void 0 : renaming.tagNamingStrategy,
31
+ });
32
+ }
33
+ });
34
+ targetAssetContainer.populateRootNodes();
35
+ targetAssetContainer.rootNodes.forEach(node => {
36
+ if (node instanceof index_1.TransformNode) {
37
+ // reassigning instanced meshes can only be done after the model has been fully cloned, as we can't be sure if
38
+ // the source or instanced mesh is handled prior
39
+ _reAssignSourceMesh(node, sourceAssetContainer.meshes, targetAssetContainer.meshes);
40
+ }
41
+ });
42
+ // morph target manager is not cloned per default, therefore morph targets would affect original and cloned model at
43
+ // the same time, which we don't want
44
+ sourceAssetContainer.morphTargetManagers.forEach(sourceMTM => {
45
+ cloneMorphTargetManager(sourceMTM, targetAssetContainer);
46
+ });
47
+ _clearCloningMetadata(sourceAssetContainer);
48
+ _clearCloningMetadata(targetAssetContainer);
49
+ // hide immediately, so that show model code can do it's thing (scene preparation) before finally showing the model
50
+ targetAssetContainer.removeAllFromScene();
51
+ return targetAssetContainer;
52
+ }
53
+ exports.cloneModelAssetContainer = cloneModelAssetContainer;
54
+ /**
55
+ * Helper function for cloning a morph target manager and updating all the mesh assignments.
56
+ * Meshes need to be already available in the target asset container.
57
+ */
58
+ function cloneMorphTargetManager(sourceMTM, targetAssetContainer) {
59
+ const clonedMTM = sourceMTM.clone();
60
+ clonedMTM._parentContainer = targetAssetContainer;
61
+ targetAssetContainer.morphTargetManagers.push(clonedMTM);
62
+ targetAssetContainer.meshes.forEach(mesh => {
63
+ if (mesh.morphTargetManager === sourceMTM) {
64
+ mesh.morphTargetManager = clonedMTM;
65
+ }
66
+ });
67
+ return clonedMTM;
68
+ }
69
+ exports.cloneMorphTargetManager = cloneMorphTargetManager;
70
+ /**
71
+ * The actual geometry cloning function.
72
+ * Calls "clone" function of dedicated Node type and recourses into children to clone the whole node tree.
73
+ * Adds temporary metadata for special treatment of certain node types (e.g. InstancedMesh).
74
+ */
75
+ function _cloneNode(node, newModelName, newParent, assetContainer, renaming) {
76
+ var _a, _b;
77
+ const nodeNamingStrategy = (_a = renaming.nodeNamingStrategy) !== null && _a !== void 0 ? _a : _defaultNodeNamingStrategy;
78
+ const tagNamingStrategy = (_b = renaming.tagNamingStrategy) !== null && _b !== void 0 ? _b : _defaultTagNamingStrategy;
79
+ const cloneName = nodeNamingStrategy(node, newModelName);
80
+ const clone = node.clone(cloneName, newParent, true);
81
+ if (!clone) {
82
+ throw new Error(`Cloning node "${node.name}" failed`);
83
+ }
84
+ clone.id = cloneName;
85
+ // create a deep clone for internal metadata, as the default clone function uses the same assignment of the sources
86
+ // internal metadata
87
+ (0, metadata_helper_1.cloneInternalMetadata)(node, clone);
88
+ // ATM the assignment from clone to source is needed for reassigning instanced meshes after cloning
89
+ // may be usefull for other node types in the future as well
90
+ (0, metadata_helper_1.setInternalMetadataValue)(clone, 'cloneSource', node.uniqueId);
91
+ (0, metadata_helper_1.setInternalMetadataValue)(node, 'cloneTarget', clone.uniqueId);
92
+ if (node instanceof index_1.InstancedMesh) {
93
+ _cloneInstancedMeshData(node, clone);
94
+ }
95
+ const sourceTags = (0, tags_helper_1.getTags)(node);
96
+ const mappedTags = sourceTags.map(tag => tagNamingStrategy(tag, newModelName));
97
+ (0, tags_helper_1.setTags)(clone, mappedTags);
98
+ clone._parentContainer = assetContainer;
99
+ // TODO WTT: create global helper function for distinguishing between transform nodes and meshes
100
+ if (clone instanceof index_1.AbstractMesh) {
101
+ assetContainer.meshes.push(clone);
102
+ }
103
+ else {
104
+ assetContainer.transformNodes.push(clone);
105
+ }
106
+ const children = node.getChildTransformNodes(true);
107
+ children.forEach(child => _cloneNode(child, newModelName, clone, assetContainer, renaming));
108
+ }
109
+ /**
110
+ * Cloned instanced meshes are having the same source mesh as their cloning source.
111
+ * However we want the cloned source mesh to be the actual source.
112
+ * Exchanging and reassigning is done within this function.
113
+ * Operates on the given `node` and all its children recursively.
114
+ */
115
+ function _reAssignSourceMesh(node, sourceMeshes, clonedMeshes) {
116
+ if (node instanceof index_1.InstancedMesh) {
117
+ // find the cloned instance and source mesh
118
+ const clonedInstance = node;
119
+ const originalInstance = _findByUniqueId(sourceMeshes, (0, metadata_helper_1.getInternalMetadataValue)(clonedInstance, 'cloneSource'));
120
+ if (originalInstance instanceof index_1.InstancedMesh) {
121
+ const originalSource = originalInstance.sourceMesh;
122
+ const clonedSource = _findByUniqueId(clonedMeshes, (0, metadata_helper_1.getInternalMetadataValue)(originalSource, 'cloneTarget'));
123
+ if (clonedSource instanceof index_1.Mesh) {
124
+ // it's not possible to just exchange the source mesh => readonly property
125
+ // we have to create a new clone with the correct source mesh
126
+ const exchangedInstance = clonedInstance.clone(clonedInstance.name, clonedInstance.parent, true, clonedSource);
127
+ clonedInstance._parentContainer.meshes.push(exchangedInstance);
128
+ _cloneInstancedMeshData(clonedInstance, exchangedInstance);
129
+ // re-reference the childs of the cloned instance as well
130
+ const childs = clonedInstance.getChildTransformNodes(true);
131
+ childs.forEach(child => (child.parent = exchangedInstance));
132
+ }
133
+ }
134
+ // old instance mesh is not needed anymore and can be disposed
135
+ clonedInstance.dispose();
136
+ }
137
+ // recurse into childs
138
+ const children = node.getChildTransformNodes(true);
139
+ children.forEach(child => _reAssignSourceMesh(child, sourceMeshes, clonedMeshes));
140
+ }
141
+ /**
142
+ * Removes metadata entries "cloneSource" and "cloneTarget" from all meshes and transform nodes inside the asset
143
+ * container
144
+ */
145
+ function _clearCloningMetadata(assetContainer) {
146
+ [...assetContainer.meshes, ...assetContainer.transformNodes].forEach(node => {
147
+ (0, metadata_helper_1.clearInternalMetadataValue)(node, 'cloneSource');
148
+ (0, metadata_helper_1.clearInternalMetadataValue)(node, 'cloneTarget');
149
+ });
150
+ }
151
+ /**
152
+ * "InstancedMesh.clone" function doesn't clone tags and metadata, also the enabled state doesn't seem to be cloned
153
+ * correctly.
154
+ * This function adjusts the behaviour to fulfill our expectations.
155
+ */
156
+ function _cloneInstancedMeshData(sourceInstancedMesh, targetInstancedMesh) {
157
+ targetInstancedMesh.setEnabled(sourceInstancedMesh.isEnabled(false));
158
+ (0, metadata_helper_1.cloneMetadata)(sourceInstancedMesh, targetInstancedMesh);
159
+ (0, tags_helper_1.cloneTags)(sourceInstancedMesh, targetInstancedMesh);
160
+ }
161
+ function _findByUniqueId(nodes, uniqueId) {
162
+ return nodes.find(node => node.uniqueId === uniqueId);
163
+ }
164
164
  //# sourceMappingURL=cloning-helper.js.map
@@ -1,9 +1,9 @@
1
- import { LimitTextureSizeConfig } from '../index';
2
- /**
3
- * Checks if the current device is an iPhone
4
- */
5
- export declare function getIsIPhone(): boolean;
6
- /**
7
- * Checks if the current device is "scaled down", as defined in the Spec
8
- */
9
- export declare function getIsScaledDownDevice(limitTextureSize: LimitTextureSizeConfig | false): boolean;
1
+ import { LimitTextureSizeConfig } from '../index';
2
+ /**
3
+ * Checks if the current device is an iPhone
4
+ */
5
+ export declare function getIsIPhone(): boolean;
6
+ /**
7
+ * Checks if the current device is "scaled down", as defined in the Spec
8
+ */
9
+ export declare function getIsScaledDownDevice(limitTextureSize: LimitTextureSizeConfig | false): boolean;
@@ -1,25 +1,25 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getIsScaledDownDevice = exports.getIsIPhone = void 0;
4
- /**
5
- * Checks if the current device is an iPhone
6
- */
7
- function getIsIPhone() {
8
- const isIPhone = /iPhone/.test(navigator.userAgent);
9
- return isIPhone;
10
- }
11
- exports.getIsIPhone = getIsIPhone;
12
- /**
13
- * Checks if the current device is "scaled down", as defined in the Spec
14
- */
15
- function getIsScaledDownDevice(limitTextureSize) {
16
- if (!limitTextureSize) {
17
- // no down scaling defined
18
- return false;
19
- }
20
- // check device
21
- const deviceFits = limitTextureSize.devices === 'all' || (limitTextureSize.devices === 'iPhone' && getIsIPhone());
22
- return deviceFits;
23
- }
24
- exports.getIsScaledDownDevice = getIsScaledDownDevice;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getIsScaledDownDevice = exports.getIsIPhone = void 0;
4
+ /**
5
+ * Checks if the current device is an iPhone
6
+ */
7
+ function getIsIPhone() {
8
+ const isIPhone = /iPhone/.test(navigator.userAgent);
9
+ return isIPhone;
10
+ }
11
+ exports.getIsIPhone = getIsIPhone;
12
+ /**
13
+ * Checks if the current device is "scaled down", as defined in the Spec
14
+ */
15
+ function getIsScaledDownDevice(limitTextureSize) {
16
+ if (!limitTextureSize) {
17
+ // no down scaling defined
18
+ return false;
19
+ }
20
+ // check device
21
+ const deviceFits = limitTextureSize.devices === 'all' || (limitTextureSize.devices === 'iPhone' && getIsIPhone());
22
+ return deviceFits;
23
+ }
24
+ exports.getIsScaledDownDevice = getIsScaledDownDevice;
25
25
  //# sourceMappingURL=device-helper.js.map
@@ -1,21 +1,21 @@
1
- import { ExcludedGeometryList, InstancedMesh, Mesh, TransformNode } from '../index';
2
- /**
3
- * Find out if a node is part of a list of excluded geometry
4
- * @param node BJS node
5
- * @param list list of excluded geometry
6
- * @returns boolean based on whether node (or one of its parents) was found in list
7
- */
8
- export declare function isNodeExcluded(nodeToCheck: TransformNode, list: ExcludedGeometryList): boolean;
9
- /**
10
- * Creates a "standard" mesh from an instanced mesh, by cloning the source mesh and applying transformation data
11
- */
12
- export declare function createMeshFromInstancedMesh(instancedMesh: InstancedMesh, newName: string, clonedParent: TransformNode): Mesh;
13
- /**
14
- * Removes transformation data from the mesh and stores it in the geometry, which is called "baking".
15
- * Also considers the geometry change from morph targets.
16
- */
17
- export declare function bakeGeometryOfMesh(mesh: Mesh): void;
18
- /**
19
- * Resets transformation to initial state
20
- */
21
- export declare function resetTransformation(node: TransformNode): void;
1
+ import { ExcludedGeometryList, InstancedMesh, Mesh, TransformNode } from '../index';
2
+ /**
3
+ * Find out if a node is part of a list of excluded geometry
4
+ * @param node BJS node
5
+ * @param list list of excluded geometry
6
+ * @returns boolean based on whether node (or one of its parents) was found in list
7
+ */
8
+ export declare function isNodeExcluded(nodeToCheck: TransformNode, list: ExcludedGeometryList): boolean;
9
+ /**
10
+ * Creates a "standard" mesh from an instanced mesh, by cloning the source mesh and applying transformation data
11
+ */
12
+ export declare function createMeshFromInstancedMesh(instancedMesh: InstancedMesh, newName: string, clonedParent: TransformNode): Mesh;
13
+ /**
14
+ * Removes transformation data from the mesh and stores it in the geometry, which is called "baking".
15
+ * Also considers the geometry change from morph targets.
16
+ */
17
+ export declare function bakeGeometryOfMesh(mesh: Mesh): void;
18
+ /**
19
+ * Resets transformation to initial state
20
+ */
21
+ export declare function resetTransformation(node: TransformNode): void;