@combeenation/3d-viewer 6.1.0 → 6.2.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 (97) hide show
  1. package/README.md +111 -111
  2. package/dist/lib-cjs/api/classes/animationInterface.d.ts +8 -8
  3. package/dist/lib-cjs/api/classes/animationInterface.js +2 -2
  4. package/dist/lib-cjs/api/classes/dottedPath.d.ts +79 -79
  5. package/dist/lib-cjs/api/classes/dottedPath.js +166 -166
  6. package/dist/lib-cjs/api/classes/element.d.ts +149 -149
  7. package/dist/lib-cjs/api/classes/element.js +669 -669
  8. package/dist/lib-cjs/api/classes/event.d.ts +342 -342
  9. package/dist/lib-cjs/api/classes/event.js +365 -365
  10. package/dist/lib-cjs/api/classes/eventBroadcaster.d.ts +26 -26
  11. package/dist/lib-cjs/api/classes/eventBroadcaster.js +49 -49
  12. package/dist/lib-cjs/api/classes/parameter.d.ts +339 -339
  13. package/dist/lib-cjs/api/classes/parameter.js +464 -464
  14. package/dist/lib-cjs/api/classes/parameterObservable.d.ts +36 -36
  15. package/dist/lib-cjs/api/classes/parameterObservable.js +97 -97
  16. package/dist/lib-cjs/api/classes/parameterizable.d.ts +15 -15
  17. package/dist/lib-cjs/api/classes/parameterizable.js +102 -102
  18. package/dist/lib-cjs/api/classes/placementAnimation.d.ts +45 -45
  19. package/dist/lib-cjs/api/classes/placementAnimation.js +176 -176
  20. package/dist/lib-cjs/api/classes/variant.d.ts +238 -234
  21. package/dist/lib-cjs/api/classes/variant.js +841 -828
  22. package/dist/lib-cjs/api/classes/variant.js.map +1 -1
  23. package/dist/lib-cjs/api/classes/variantInstance.d.ts +44 -44
  24. package/dist/lib-cjs/api/classes/variantInstance.js +105 -105
  25. package/dist/lib-cjs/api/classes/variantParameterizable.d.ts +17 -17
  26. package/dist/lib-cjs/api/classes/variantParameterizable.js +88 -88
  27. package/dist/lib-cjs/api/classes/viewer.d.ts +192 -187
  28. package/dist/lib-cjs/api/classes/viewer.js +639 -594
  29. package/dist/lib-cjs/api/classes/viewer.js.map +1 -1
  30. package/dist/lib-cjs/api/classes/viewerLight.d.ts +66 -66
  31. package/dist/lib-cjs/api/classes/viewerLight.js +348 -348
  32. package/dist/lib-cjs/api/internal/lensRendering.d.ts +8 -8
  33. package/dist/lib-cjs/api/internal/lensRendering.js +11 -11
  34. package/dist/lib-cjs/api/internal/sceneSetup.d.ts +13 -13
  35. package/dist/lib-cjs/api/internal/sceneSetup.js +226 -226
  36. package/dist/lib-cjs/api/manager/animationManager.d.ts +30 -30
  37. package/dist/lib-cjs/api/manager/animationManager.js +126 -126
  38. package/dist/lib-cjs/api/manager/gltfExportManager.d.ts +78 -78
  39. package/dist/lib-cjs/api/manager/gltfExportManager.js +241 -241
  40. package/dist/lib-cjs/api/manager/sceneManager.d.ts +33 -33
  41. package/dist/lib-cjs/api/manager/sceneManager.js +130 -130
  42. package/dist/lib-cjs/api/manager/textureLoadManager.d.ts +22 -22
  43. package/dist/lib-cjs/api/manager/textureLoadManager.js +97 -97
  44. package/dist/lib-cjs/api/manager/variantInstanceManager.d.ts +92 -92
  45. package/dist/lib-cjs/api/manager/variantInstanceManager.js +260 -260
  46. package/dist/lib-cjs/api/store/specStorage.d.ts +24 -24
  47. package/dist/lib-cjs/api/store/specStorage.js +50 -50
  48. package/dist/lib-cjs/api/util/babylonHelper.d.ts +187 -187
  49. package/dist/lib-cjs/api/util/babylonHelper.js +596 -596
  50. package/dist/lib-cjs/api/util/globalTypes.d.ts +387 -383
  51. package/dist/lib-cjs/api/util/globalTypes.js +1 -1
  52. package/dist/lib-cjs/api/util/resourceHelper.d.ts +58 -58
  53. package/dist/lib-cjs/api/util/resourceHelper.js +203 -203
  54. package/dist/lib-cjs/api/util/sceneLoaderHelper.d.ts +42 -42
  55. package/dist/lib-cjs/api/util/sceneLoaderHelper.js +139 -139
  56. package/dist/lib-cjs/api/util/stringHelper.d.ts +9 -9
  57. package/dist/lib-cjs/api/util/stringHelper.js +25 -25
  58. package/dist/lib-cjs/api/util/structureHelper.d.ts +9 -9
  59. package/dist/lib-cjs/api/util/structureHelper.js +48 -48
  60. package/dist/lib-cjs/buildinfo.json +3 -3
  61. package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
  62. package/dist/lib-cjs/index.d.ts +51 -51
  63. package/dist/lib-cjs/index.js +110 -110
  64. package/package.json +81 -81
  65. package/src/api/classes/animationInterface.ts +10 -10
  66. package/src/api/classes/dottedPath.ts +181 -181
  67. package/src/api/classes/element.ts +717 -717
  68. package/src/api/classes/event.ts +385 -385
  69. package/src/api/classes/eventBroadcaster.ts +52 -52
  70. package/src/api/classes/parameter.ts +497 -497
  71. package/src/api/classes/parameterObservable.ts +100 -100
  72. package/src/api/classes/parameterizable.ts +87 -87
  73. package/src/api/classes/placementAnimation.ts +162 -162
  74. package/src/api/classes/variant.ts +910 -896
  75. package/src/api/classes/variantInstance.ts +97 -97
  76. package/src/api/classes/variantParameterizable.ts +85 -85
  77. package/src/api/classes/viewer.ts +720 -672
  78. package/src/api/classes/viewerLight.ts +339 -339
  79. package/src/api/internal/debugViewer.ts +90 -90
  80. package/src/api/internal/lensRendering.ts +9 -9
  81. package/src/api/internal/sceneSetup.ts +205 -205
  82. package/src/api/manager/animationManager.ts +143 -143
  83. package/src/api/manager/gltfExportManager.ts +236 -236
  84. package/src/api/manager/sceneManager.ts +132 -132
  85. package/src/api/manager/textureLoadManager.ts +95 -95
  86. package/src/api/manager/variantInstanceManager.ts +265 -265
  87. package/src/api/store/specStorage.ts +51 -51
  88. package/src/api/util/babylonHelper.ts +663 -663
  89. package/src/api/util/globalTypes.ts +437 -432
  90. package/src/api/util/resourceHelper.ts +191 -191
  91. package/src/api/util/sceneLoaderHelper.ts +137 -137
  92. package/src/api/util/stringHelper.ts +23 -23
  93. package/src/api/util/structureHelper.ts +49 -49
  94. package/src/buildinfo.json +3 -3
  95. package/src/dev.ts +61 -61
  96. package/src/index.ts +96 -96
  97. package/src/types.d.ts +28 -28
@@ -1,97 +1,97 @@
1
- import { Element } from './element';
2
- import { EventBroadcaster } from './eventBroadcaster';
3
- import { ParameterObservable } from './parameterObservable';
4
- import { Variant } from './variant';
5
- import { ViewerLight } from './viewerLight';
6
- import { Mesh } from '@babylonjs/core/Meshes/mesh';
7
-
8
- /**
9
- * Class VariantInstance.
10
- */
11
- export class VariantInstance extends EventBroadcaster {
12
- /**
13
- * Constructor
14
- */
15
- public constructor(public variant: Variant, public name: string) {
16
- super();
17
- }
18
-
19
- /**
20
- * WORK IN PROGRESS
21
- */
22
- /*
23
- public translate(
24
- joint: DottedPathArgument,
25
- variantInstance: VariantInstance,
26
- variantInstanceJoint: DottedPathArgument
27
- ): VariantInstance {
28
- joint = DottedPath.create( joint );
29
- variantInstanceJoint = DottedPath.create( variantInstanceJoint );
30
- const jointNode = variantInstance.variant.getNode( joint.path );
31
- const variantInstanceJointNode = variantInstance.variant.getNode( variantInstanceJoint.path );
32
- const differenceVector = variantInstanceJointNode.getAbsolutePosition().subtract( jointNode.getAbsolutePosition() );
33
- const differenceVectorRotation = variantInstanceJointNode.rotation.subtract( jointNode.rotation );
34
-
35
- console.log( variantInstanceJointNode.rotationQuaternion, 'ROTATION' );
36
-
37
- this.variant.nodes.forEach( node => {
38
- node.translate( Axis.X, differenceVector.x, Space.WORLD );
39
- node.translate( Axis.Y, differenceVector.y, Space.WORLD );
40
- node.translate( Axis.Z, differenceVector.z, Space.WORLD );
41
-
42
- node.rotateAround( Axis.Y, differenceVectorRotation, 20 );
43
- // node.rotate(Axis.Y, differenceVectorRotation.y, Space.WORLD );
44
- // node.rotate(Axis.Z, differenceVectorRotation.z, Space.WORLD );
45
- } );
46
- return this;
47
- }
48
- */
49
-
50
- /**
51
- * A proxy for {@link Variant.getElement}.
52
- */
53
- public async getElement(dottedPath: DottedPathArgument): Promise<Element> {
54
- return this.variant.getElement(dottedPath);
55
- }
56
-
57
- /**
58
- * A proxy for {@link Variant.getViewerLight}.
59
- */
60
- public async getViewerLight(dottedPath: DottedPathArgument): Promise<ViewerLight> {
61
- return this.variant.getViewerLight(dottedPath);
62
- }
63
-
64
- /**
65
- * A proxy for {@link Variant.getNode}.
66
- */
67
- public async getNode(
68
- elementDottedPath: DottedPathArgument,
69
- nodeDottedPath: DottedPathArgument
70
- ): Promise<TransformNode> {
71
- return this.variant.getNode(elementDottedPath, nodeDottedPath);
72
- }
73
-
74
- /**
75
- * A proxy for {@link Variant.getMesh}.
76
- */
77
- public async getMesh(
78
- elementDottedPath: DottedPathArgument,
79
- meshDottedPath: DottedPathArgument
80
- ): Promise<Mesh | null> {
81
- return this.variant.getMesh(elementDottedPath, meshDottedPath);
82
- }
83
-
84
- /**
85
- * A proxy for {@link Variant.commitParameters}.
86
- */
87
- public async commitParameters(parameters?: ParameterBag): Promise<Variant> {
88
- return this.variant.commitParameters(parameters);
89
- }
90
-
91
- /**
92
- * A proxy for {@link ParameterObservable.commitParameter}.
93
- */
94
- public async commitParameter(parameter: string, value: ParameterValue): Promise<ParameterObservable> {
95
- return this.variant.commitParameter(parameter, value);
96
- }
97
- }
1
+ import { Element } from './element';
2
+ import { EventBroadcaster } from './eventBroadcaster';
3
+ import { ParameterObservable } from './parameterObservable';
4
+ import { Variant } from './variant';
5
+ import { ViewerLight } from './viewerLight';
6
+ import { Mesh } from '@babylonjs/core/Meshes/mesh';
7
+
8
+ /**
9
+ * Class VariantInstance.
10
+ */
11
+ export class VariantInstance extends EventBroadcaster {
12
+ /**
13
+ * Constructor
14
+ */
15
+ public constructor(public variant: Variant, public name: string) {
16
+ super();
17
+ }
18
+
19
+ /**
20
+ * WORK IN PROGRESS
21
+ */
22
+ /*
23
+ public translate(
24
+ joint: DottedPathArgument,
25
+ variantInstance: VariantInstance,
26
+ variantInstanceJoint: DottedPathArgument
27
+ ): VariantInstance {
28
+ joint = DottedPath.create( joint );
29
+ variantInstanceJoint = DottedPath.create( variantInstanceJoint );
30
+ const jointNode = variantInstance.variant.getNode( joint.path );
31
+ const variantInstanceJointNode = variantInstance.variant.getNode( variantInstanceJoint.path );
32
+ const differenceVector = variantInstanceJointNode.getAbsolutePosition().subtract( jointNode.getAbsolutePosition() );
33
+ const differenceVectorRotation = variantInstanceJointNode.rotation.subtract( jointNode.rotation );
34
+
35
+ console.log( variantInstanceJointNode.rotationQuaternion, 'ROTATION' );
36
+
37
+ this.variant.nodes.forEach( node => {
38
+ node.translate( Axis.X, differenceVector.x, Space.WORLD );
39
+ node.translate( Axis.Y, differenceVector.y, Space.WORLD );
40
+ node.translate( Axis.Z, differenceVector.z, Space.WORLD );
41
+
42
+ node.rotateAround( Axis.Y, differenceVectorRotation, 20 );
43
+ // node.rotate(Axis.Y, differenceVectorRotation.y, Space.WORLD );
44
+ // node.rotate(Axis.Z, differenceVectorRotation.z, Space.WORLD );
45
+ } );
46
+ return this;
47
+ }
48
+ */
49
+
50
+ /**
51
+ * A proxy for {@link Variant.getElement}.
52
+ */
53
+ public async getElement(dottedPath: DottedPathArgument): Promise<Element> {
54
+ return this.variant.getElement(dottedPath);
55
+ }
56
+
57
+ /**
58
+ * A proxy for {@link Variant.getViewerLight}.
59
+ */
60
+ public async getViewerLight(dottedPath: DottedPathArgument): Promise<ViewerLight> {
61
+ return this.variant.getViewerLight(dottedPath);
62
+ }
63
+
64
+ /**
65
+ * A proxy for {@link Variant.getNode}.
66
+ */
67
+ public async getNode(
68
+ elementDottedPath: DottedPathArgument,
69
+ nodeDottedPath: DottedPathArgument
70
+ ): Promise<TransformNode> {
71
+ return this.variant.getNode(elementDottedPath, nodeDottedPath);
72
+ }
73
+
74
+ /**
75
+ * A proxy for {@link Variant.getMesh}.
76
+ */
77
+ public async getMesh(
78
+ elementDottedPath: DottedPathArgument,
79
+ meshDottedPath: DottedPathArgument
80
+ ): Promise<Mesh | null> {
81
+ return this.variant.getMesh(elementDottedPath, meshDottedPath);
82
+ }
83
+
84
+ /**
85
+ * A proxy for {@link Variant.commitParameters}.
86
+ */
87
+ public async commitParameters(parameters?: ParameterBag): Promise<Variant> {
88
+ return this.variant.commitParameters(parameters);
89
+ }
90
+
91
+ /**
92
+ * A proxy for {@link ParameterObservable.commitParameter}.
93
+ */
94
+ public async commitParameter(parameter: string, value: ParameterValue): Promise<ParameterObservable> {
95
+ return this.variant.commitParameter(parameter, value);
96
+ }
97
+ }
@@ -1,85 +1,85 @@
1
- import { DottedPath } from './../classes/dottedPath';
2
- import { Event } from './../classes/event';
3
- import { Parameterizable } from './../classes/parameterizable';
4
- import { Variant } from './../classes/variant';
5
- import { mergeMaps } from './../util/resourceHelper';
6
- import { camelToSnakeCase } from './../util/stringHelper';
7
- import { cloneDeep, concat, get, merge } from 'lodash-es';
8
-
9
- export abstract class VariantParameterizable extends Parameterizable {
10
- protected readonly _parameterObservers: Map<string, ParameterObserver[]> = new Map();
11
-
12
- protected constructor(public readonly variant: Variant, public readonly name: string) {
13
- super();
14
- }
15
-
16
- /**
17
- * Gets the inherited parameters from the {@link Variant} with cleaned {@link Parameterizable} prefix.
18
- */
19
- get inheritedParameters(): ParameterBag {
20
- const parameterBag: ParameterBag = {};
21
- for (const parameter in this.variant.inheritedParameters) {
22
- const dpp = DottedPath.create(parameter);
23
- if (dpp.parts.length !== 1) {
24
- continue;
25
- }
26
- parameterBag[parameter] = this.variant.inheritedParameters[parameter];
27
- }
28
- for (const parameter in this.variant.inheritedParameters) {
29
- const dpp = DottedPath.create(parameter);
30
- if (dpp.firstPart !== this.name) {
31
- continue;
32
- }
33
- dpp.shiftPart();
34
- parameterBag[dpp.path] = this.variant.inheritedParameters[parameter];
35
- }
36
- return parameterBag;
37
- }
38
-
39
- /**
40
- * Places the given {@link ParameterBag} in the {@link VariantParameterizable}'s parameters, replaces all patterns in
41
- * the {@link StructureJson} and broadcasts all {@link ParameterObserver}s.
42
- */
43
- public async commitParameters(parameters?: ParameterBag): Promise<VariantParameterizable> {
44
- if (!parameters) {
45
- parameters = {};
46
- }
47
- const oldParameters = cloneDeep(this.parameters);
48
- merge(this.parameters, parameters);
49
- // handle parameter observers
50
- let observerPromises: Promise<void | ParameterObserver>[] = [];
51
- for (const parameter in this.parameters) {
52
- const oldParameterValue = oldParameters[parameter];
53
- const newParameterValue = this.parameters[parameter];
54
- this.variant.assertParameter(this.variant.inheritedParameterDeclaration, parameter, newParameterValue);
55
- if (oldParameterValue === newParameterValue) {
56
- continue;
57
- }
58
- // parameter changed
59
- const parameterObservers = mergeMaps(this._parameterObservers, this.parameterObservers);
60
- if (parameterObservers.has(parameter)) {
61
- const observers = parameterObservers.get(parameter)!;
62
- observerPromises = concat(
63
- observerPromises,
64
- observers.map(observer => {
65
- const observerResult = observer(this, oldParameterValue, newParameterValue);
66
- const observerPromise = Promise.resolve(observerResult);
67
- observerPromise.then(() => {
68
- const clsName = camelToSnakeCase(this.constructor.name).toUpperCase();
69
- this.broadcastEvent(
70
- get(Event, clsName + '_PARAMETER_COMMITTED'),
71
- this,
72
- parameter,
73
- oldParameterValue,
74
- newParameterValue
75
- );
76
- });
77
- return observerPromise;
78
- })
79
- );
80
- }
81
- }
82
- await Promise.all(observerPromises);
83
- return this;
84
- }
85
- }
1
+ import { DottedPath } from './../classes/dottedPath';
2
+ import { Event } from './../classes/event';
3
+ import { Parameterizable } from './../classes/parameterizable';
4
+ import { Variant } from './../classes/variant';
5
+ import { mergeMaps } from './../util/resourceHelper';
6
+ import { camelToSnakeCase } from './../util/stringHelper';
7
+ import { cloneDeep, concat, get, merge } from 'lodash-es';
8
+
9
+ export abstract class VariantParameterizable extends Parameterizable {
10
+ protected readonly _parameterObservers: Map<string, ParameterObserver[]> = new Map();
11
+
12
+ protected constructor(public readonly variant: Variant, public readonly name: string) {
13
+ super();
14
+ }
15
+
16
+ /**
17
+ * Gets the inherited parameters from the {@link Variant} with cleaned {@link Parameterizable} prefix.
18
+ */
19
+ get inheritedParameters(): ParameterBag {
20
+ const parameterBag: ParameterBag = {};
21
+ for (const parameter in this.variant.inheritedParameters) {
22
+ const dpp = DottedPath.create(parameter);
23
+ if (dpp.parts.length !== 1) {
24
+ continue;
25
+ }
26
+ parameterBag[parameter] = this.variant.inheritedParameters[parameter];
27
+ }
28
+ for (const parameter in this.variant.inheritedParameters) {
29
+ const dpp = DottedPath.create(parameter);
30
+ if (dpp.firstPart !== this.name) {
31
+ continue;
32
+ }
33
+ dpp.shiftPart();
34
+ parameterBag[dpp.path] = this.variant.inheritedParameters[parameter];
35
+ }
36
+ return parameterBag;
37
+ }
38
+
39
+ /**
40
+ * Places the given {@link ParameterBag} in the {@link VariantParameterizable}'s parameters, replaces all patterns in
41
+ * the {@link StructureJson} and broadcasts all {@link ParameterObserver}s.
42
+ */
43
+ public async commitParameters(parameters?: ParameterBag): Promise<VariantParameterizable> {
44
+ if (!parameters) {
45
+ parameters = {};
46
+ }
47
+ const oldParameters = cloneDeep(this.parameters);
48
+ merge(this.parameters, parameters);
49
+ // handle parameter observers
50
+ let observerPromises: Promise<void | ParameterObserver>[] = [];
51
+ for (const parameter in this.parameters) {
52
+ const oldParameterValue = oldParameters[parameter];
53
+ const newParameterValue = this.parameters[parameter];
54
+ this.variant.assertParameter(this.variant.inheritedParameterDeclaration, parameter, newParameterValue);
55
+ if (oldParameterValue === newParameterValue) {
56
+ continue;
57
+ }
58
+ // parameter changed
59
+ const parameterObservers = mergeMaps(this._parameterObservers, this.parameterObservers);
60
+ if (parameterObservers.has(parameter)) {
61
+ const observers = parameterObservers.get(parameter)!;
62
+ observerPromises = concat(
63
+ observerPromises,
64
+ observers.map(observer => {
65
+ const observerResult = observer(this, oldParameterValue, newParameterValue);
66
+ const observerPromise = Promise.resolve(observerResult);
67
+ observerPromise.then(() => {
68
+ const clsName = camelToSnakeCase(this.constructor.name).toUpperCase();
69
+ this.broadcastEvent(
70
+ get(Event, clsName + '_PARAMETER_COMMITTED'),
71
+ this,
72
+ parameter,
73
+ oldParameterValue,
74
+ newParameterValue
75
+ );
76
+ });
77
+ return observerPromise;
78
+ })
79
+ );
80
+ }
81
+ }
82
+ await Promise.all(observerPromises);
83
+ return this;
84
+ }
85
+ }