@babylonjs/viewer 5.0.0-rc.4 → 5.0.2

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 (192) hide show
  1. package/configuration/configuration.d.ts +107 -107
  2. package/configuration/configuration.js +15 -15
  3. package/configuration/configuration.js.map +1 -1
  4. package/configuration/configurationCompatibility.d.ts +8 -8
  5. package/configuration/configurationCompatibility.js +65 -65
  6. package/configuration/configurationCompatibility.js.map +1 -1
  7. package/configuration/configurationContainer.d.ts +10 -10
  8. package/configuration/configurationContainer.js +9 -9
  9. package/configuration/configurationContainer.js.map +1 -1
  10. package/configuration/globals.d.ts +6 -6
  11. package/configuration/globals.js +17 -17
  12. package/configuration/globals.js.map +1 -1
  13. package/configuration/index.d.ts +2 -2
  14. package/configuration/index.js +3 -2
  15. package/configuration/index.js.map +1 -1
  16. package/configuration/interfaces/cameraConfiguration.d.ts +31 -31
  17. package/configuration/interfaces/cameraConfiguration.js +1 -1
  18. package/configuration/interfaces/cameraConfiguration.js.map +1 -1
  19. package/configuration/interfaces/colorGradingConfiguration.d.ts +81 -81
  20. package/configuration/interfaces/colorGradingConfiguration.js +1 -1
  21. package/configuration/interfaces/colorGradingConfiguration.js.map +1 -1
  22. package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +20 -20
  23. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +1 -1
  24. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +1 -1
  25. package/configuration/interfaces/environmentMapConfiguration.d.ts +22 -22
  26. package/configuration/interfaces/environmentMapConfiguration.js +1 -1
  27. package/configuration/interfaces/environmentMapConfiguration.js.map +1 -1
  28. package/configuration/interfaces/groundConfiguration.d.ts +24 -24
  29. package/configuration/interfaces/groundConfiguration.js +1 -1
  30. package/configuration/interfaces/groundConfiguration.js.map +1 -1
  31. package/configuration/interfaces/imageProcessingConfiguration.d.ts +43 -43
  32. package/configuration/interfaces/imageProcessingConfiguration.js +1 -1
  33. package/configuration/interfaces/imageProcessingConfiguration.js.map +1 -1
  34. package/configuration/interfaces/index.d.ts +15 -15
  35. package/configuration/interfaces/index.js +15 -15
  36. package/configuration/interfaces/index.js.map +1 -1
  37. package/configuration/interfaces/lightConfiguration.d.ts +60 -60
  38. package/configuration/interfaces/lightConfiguration.js +1 -1
  39. package/configuration/interfaces/lightConfiguration.js.map +1 -1
  40. package/configuration/interfaces/modelAnimationConfiguration.d.ts +26 -26
  41. package/configuration/interfaces/modelAnimationConfiguration.js +1 -1
  42. package/configuration/interfaces/modelAnimationConfiguration.js.map +1 -1
  43. package/configuration/interfaces/modelConfiguration.d.ts +65 -65
  44. package/configuration/interfaces/modelConfiguration.js +1 -1
  45. package/configuration/interfaces/modelConfiguration.js.map +1 -1
  46. package/configuration/interfaces/observersConfiguration.d.ts +5 -5
  47. package/configuration/interfaces/observersConfiguration.js +1 -1
  48. package/configuration/interfaces/observersConfiguration.js.map +1 -1
  49. package/configuration/interfaces/sceneConfiguration.d.ts +48 -48
  50. package/configuration/interfaces/sceneConfiguration.js +1 -1
  51. package/configuration/interfaces/sceneConfiguration.js.map +1 -1
  52. package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +23 -23
  53. package/configuration/interfaces/sceneOptimizerConfiguration.js +1 -1
  54. package/configuration/interfaces/sceneOptimizerConfiguration.js.map +1 -1
  55. package/configuration/interfaces/skyboxConfiguration.d.ts +21 -21
  56. package/configuration/interfaces/skyboxConfiguration.js +1 -1
  57. package/configuration/interfaces/skyboxConfiguration.js.map +1 -1
  58. package/configuration/interfaces/templateConfiguration.d.ts +67 -67
  59. package/configuration/interfaces/templateConfiguration.js +1 -1
  60. package/configuration/interfaces/templateConfiguration.js.map +1 -1
  61. package/configuration/interfaces/vrConfiguration.d.ts +16 -16
  62. package/configuration/interfaces/vrConfiguration.js +1 -1
  63. package/configuration/interfaces/vrConfiguration.js.map +1 -1
  64. package/configuration/loader.d.ts +4 -4
  65. package/configuration/loader.js +16 -28
  66. package/configuration/loader.js.map +1 -1
  67. package/configuration/mappers.d.ts +42 -42
  68. package/configuration/mappers.js +190 -189
  69. package/configuration/mappers.js.map +1 -1
  70. package/configuration/renderOnlyLoader.d.ts +33 -33
  71. package/configuration/renderOnlyLoader.js +161 -158
  72. package/configuration/renderOnlyLoader.js.map +1 -1
  73. package/configuration/types/default.d.ts +6 -6
  74. package/configuration/types/default.js +120 -119
  75. package/configuration/types/default.js.map +1 -1
  76. package/configuration/types/environmentMap.d.ts +5 -5
  77. package/configuration/types/environmentMap.js +13 -13
  78. package/configuration/types/environmentMap.js.map +1 -1
  79. package/configuration/types/extended.d.ts +6 -6
  80. package/configuration/types/extended.js +316 -316
  81. package/configuration/types/extended.js.map +1 -1
  82. package/configuration/types/index.d.ts +13 -13
  83. package/configuration/types/index.js +49 -48
  84. package/configuration/types/index.js.map +1 -1
  85. package/configuration/types/minimal.d.ts +6 -6
  86. package/configuration/types/minimal.js +42 -42
  87. package/configuration/types/minimal.js.map +1 -1
  88. package/configuration/types/renderOnlyDefault.d.ts +30 -30
  89. package/configuration/types/renderOnlyDefault.js +30 -30
  90. package/configuration/types/renderOnlyDefault.js.map +1 -1
  91. package/configuration/types/shadowLight.d.ts +9 -9
  92. package/configuration/types/shadowLight.js +63 -63
  93. package/configuration/types/shadowLight.js.map +1 -1
  94. package/helper/index.d.ts +26 -26
  95. package/helper/index.js +62 -56
  96. package/helper/index.js.map +1 -1
  97. package/index.d.ts +30 -30
  98. package/index.js +45 -41
  99. package/index.js.map +1 -1
  100. package/initializer.d.ts +11 -11
  101. package/initializer.js +34 -33
  102. package/initializer.js.map +1 -1
  103. package/interfaces.d.ts +5 -5
  104. package/interfaces.js +1 -1
  105. package/interfaces.js.map +1 -1
  106. package/labs/environmentSerializer.d.ts +126 -126
  107. package/labs/environmentSerializer.js +190 -186
  108. package/labs/environmentSerializer.js.map +1 -1
  109. package/labs/texture.d.ts +183 -184
  110. package/labs/texture.js +300 -297
  111. package/labs/texture.js.map +1 -1
  112. package/labs/viewerLabs.d.ts +51 -51
  113. package/labs/viewerLabs.js +133 -131
  114. package/labs/viewerLabs.js.map +1 -1
  115. package/license.md +71 -0
  116. package/loader/modelLoader.d.ts +47 -44
  117. package/loader/modelLoader.js +189 -182
  118. package/loader/modelLoader.js.map +1 -1
  119. package/loader/plugins/applyMaterialConfig.d.ts +12 -12
  120. package/loader/plugins/applyMaterialConfig.js +15 -15
  121. package/loader/plugins/applyMaterialConfig.js.map +1 -1
  122. package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +9 -9
  123. package/loader/plugins/extendedMaterialLoaderPlugin.js +15 -15
  124. package/loader/plugins/extendedMaterialLoaderPlugin.js.map +1 -1
  125. package/loader/plugins/index.d.ts +18 -17
  126. package/loader/plugins/index.js +42 -41
  127. package/loader/plugins/index.js.map +1 -1
  128. package/loader/plugins/loaderPlugin.d.ts +24 -24
  129. package/loader/plugins/loaderPlugin.js +1 -1
  130. package/loader/plugins/loaderPlugin.js.map +1 -1
  131. package/loader/plugins/msftLodLoaderPlugin.d.ts +12 -12
  132. package/loader/plugins/msftLodLoaderPlugin.js +20 -19
  133. package/loader/plugins/msftLodLoaderPlugin.js.map +1 -1
  134. package/loader/plugins/telemetryLoaderPlugin.d.ts +12 -12
  135. package/loader/plugins/telemetryLoaderPlugin.js +35 -35
  136. package/loader/plugins/telemetryLoaderPlugin.js.map +1 -1
  137. package/managers/observablesManager.d.ts +66 -66
  138. package/managers/observablesManager.js +34 -34
  139. package/managers/observablesManager.js.map +1 -1
  140. package/managers/sceneManager.d.ts +243 -245
  141. package/managers/sceneManager.js +1388 -1387
  142. package/managers/sceneManager.js.map +1 -1
  143. package/managers/telemetryManager.d.ts +57 -57
  144. package/managers/telemetryManager.js +113 -113
  145. package/managers/telemetryManager.js.map +1 -1
  146. package/model/modelAnimation.d.ts +215 -215
  147. package/model/modelAnimation.js +232 -232
  148. package/model/modelAnimation.js.map +1 -1
  149. package/model/viewerModel.d.ts +228 -236
  150. package/model/viewerModel.js +669 -664
  151. package/model/viewerModel.js.map +1 -1
  152. package/optimizer/custom/extended.d.ts +11 -13
  153. package/optimizer/custom/extended.js +98 -100
  154. package/optimizer/custom/extended.js.map +1 -1
  155. package/optimizer/custom/index.d.ts +8 -8
  156. package/optimizer/custom/index.js +24 -24
  157. package/optimizer/custom/index.js.map +1 -1
  158. package/package.json +41 -215
  159. package/readme.md +12 -8
  160. package/renderOnlyIndex.d.ts +11 -11
  161. package/renderOnlyIndex.js +17 -15
  162. package/renderOnlyIndex.js.map +1 -1
  163. package/templating/eventManager.d.ts +35 -35
  164. package/templating/eventManager.js +65 -63
  165. package/templating/eventManager.js.map +1 -1
  166. package/templating/plugins/hdButtonPlugin.d.ts +9 -9
  167. package/templating/plugins/hdButtonPlugin.js +21 -34
  168. package/templating/plugins/hdButtonPlugin.js.map +1 -1
  169. package/templating/plugins/printButton.d.ts +9 -10
  170. package/templating/plugins/printButton.js +40 -53
  171. package/templating/plugins/printButton.js.map +1 -1
  172. package/templating/templateManager.d.ts +190 -189
  173. package/templating/templateManager.js +553 -543
  174. package/templating/templateManager.js.map +1 -1
  175. package/templating/viewerTemplatePlugin.d.ts +21 -21
  176. package/templating/viewerTemplatePlugin.js +68 -68
  177. package/templating/viewerTemplatePlugin.js.map +1 -1
  178. package/viewer/defaultViewer.d.ts +122 -116
  179. package/viewer/defaultViewer.js +665 -670
  180. package/viewer/defaultViewer.js.map +1 -1
  181. package/viewer/renderOnlyViewer.d.ts +8 -8
  182. package/viewer/renderOnlyViewer.js +43 -50
  183. package/viewer/renderOnlyViewer.js.map +1 -1
  184. package/viewer/viewer.d.ts +254 -253
  185. package/viewer/viewer.js +777 -763
  186. package/viewer/viewer.js.map +1 -1
  187. package/viewer/viewerManager.d.ts +55 -55
  188. package/viewer/viewerManager.js +87 -86
  189. package/viewer/viewerManager.js.map +1 -1
  190. package/viewer/viewerWithTemplate.d.ts +9 -9
  191. package/viewer/viewerWithTemplate.js +19 -32
  192. package/viewer/viewerWithTemplate.js.map +1 -1
@@ -1,57 +1,57 @@
1
- import { Observable } from "@babylonjs/core/Misc/observable";
2
- import { Engine } from "@babylonjs/core/Engines/engine";
3
- /**
4
- * The data structure of a telemetry event.
5
- */
6
- export interface TelemetryData {
7
- event: string;
8
- session: string;
9
- date: Date;
10
- now: number;
11
- viewerId?: string;
12
- detail: any;
13
- }
14
- /**
15
- * Receives Telemetry events and raises events to the API
16
- */
17
- export declare class TelemetryManager {
18
- onEventBroadcastedObservable: Observable<TelemetryData>;
19
- private _currentSessionId;
20
- private _event;
21
- /**
22
- * Receives a telemetry event
23
- * @param event The name of the Telemetry event
24
- * @param details An additional value, or an object containing a list of property/value pairs
25
- */
26
- get broadcast(): (event: string, viewerId?: string | undefined, details?: any) => void;
27
- /**
28
- * Log a Telemetry event for errors raised on the WebGL context.
29
- * @param engine The Babylon engine with the WebGL context.
30
- */
31
- flushWebGLErrors(engine: Engine, viewerId?: string): void;
32
- /**
33
- * Enable or disable telemetry events
34
- * @param enabled Boolan, true if events are enabled
35
- */
36
- set enable(enabled: boolean);
37
- /**
38
- * Called on event when disabled, typically do nothing here
39
- */
40
- private _eventDisabled;
41
- /**
42
- * Called on event when enabled
43
- * @param event - The name of the Telemetry event
44
- * @param details An additional value, or an object containing a list of property/value pairs
45
- */
46
- private _eventEnabled;
47
- /**
48
- * Returns the current session ID or creates one if it doesn't exixt
49
- * @return The current session ID
50
- */
51
- get session(): string;
52
- /**
53
- * Disposes the telemetry manager
54
- */
55
- dispose(): void;
56
- }
57
- export declare const telemetryManager: TelemetryManager;
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ import type { Engine } from "@babylonjs/core/Engines/engine.js";
3
+ /**
4
+ * The data structure of a telemetry event.
5
+ */
6
+ export interface TelemetryData {
7
+ event: string;
8
+ session: string;
9
+ date: Date;
10
+ now: number;
11
+ viewerId?: string;
12
+ detail: any;
13
+ }
14
+ /**
15
+ * Receives Telemetry events and raises events to the API
16
+ */
17
+ export declare class TelemetryManager {
18
+ onEventBroadcastedObservable: Observable<TelemetryData>;
19
+ private _currentSessionId;
20
+ private _event;
21
+ /**
22
+ * Receives a telemetry event
23
+ */
24
+ get broadcast(): (event: string, viewerId?: string | undefined, details?: any) => void;
25
+ /**
26
+ * Log a Telemetry event for errors raised on the WebGL context.
27
+ * @param engine The Babylon engine with the WebGL context.
28
+ * @param viewerId
29
+ */
30
+ flushWebGLErrors(engine: Engine, viewerId?: string): void;
31
+ /**
32
+ * Enable or disable telemetry events
33
+ * @param enabled Boolean, true if events are enabled
34
+ */
35
+ set enable(enabled: boolean);
36
+ /**
37
+ * Called on event when disabled, typically do nothing here
38
+ */
39
+ private _eventDisabled;
40
+ /**
41
+ * Called on event when enabled
42
+ * @param event - The name of the Telemetry event
43
+ * @param viewerId
44
+ * @param details An additional value, or an object containing a list of property/value pairs
45
+ */
46
+ private _eventEnabled;
47
+ /**
48
+ * Returns the current session ID or creates one if it doesn't exist
49
+ * @return The current session ID
50
+ */
51
+ get session(): string;
52
+ /**
53
+ * Disposes the telemetry manager
54
+ */
55
+ dispose(): void;
56
+ }
57
+ export declare const telemetryManager: TelemetryManager;
@@ -1,114 +1,114 @@
1
- import { Observable } from "@babylonjs/core/Misc/observable.js";
2
- /**
3
- * Receives Telemetry events and raises events to the API
4
- */
5
- var TelemetryManager = /** @class */ (function () {
6
- function TelemetryManager() {
7
- this.onEventBroadcastedObservable = new Observable();
8
- this._event = this._eventEnabled;
9
- }
10
- Object.defineProperty(TelemetryManager.prototype, "broadcast", {
11
- /**
12
- * Receives a telemetry event
13
- * @param event The name of the Telemetry event
14
- * @param details An additional value, or an object containing a list of property/value pairs
15
- */
16
- get: function () {
17
- return this._event;
18
- },
19
- enumerable: false,
20
- configurable: true
21
- });
22
- /**
23
- * Log a Telemetry event for errors raised on the WebGL context.
24
- * @param engine The Babylon engine with the WebGL context.
25
- */
26
- TelemetryManager.prototype.flushWebGLErrors = function (engine, viewerId) {
27
- if (!engine) {
28
- return;
29
- }
30
- var logErrors = true;
31
- while (logErrors) {
32
- var error = engine.getError();
33
- if (error === 0) {
34
- logErrors = false;
35
- }
36
- else {
37
- this.broadcast("WebGL Error", viewerId, { error: error });
38
- }
39
- }
40
- };
41
- Object.defineProperty(TelemetryManager.prototype, "enable", {
42
- /**
43
- * Enable or disable telemetry events
44
- * @param enabled Boolan, true if events are enabled
45
- */
46
- set: function (enabled) {
47
- if (enabled) {
48
- this._event = this._eventEnabled;
49
- }
50
- else {
51
- this._event = this._eventDisabled;
52
- }
53
- },
54
- enumerable: false,
55
- configurable: true
56
- });
57
- /**
58
- * Called on event when disabled, typically do nothing here
59
- */
60
- TelemetryManager.prototype._eventDisabled = function () {
61
- // nothing to do
62
- };
63
- /**
64
- * Called on event when enabled
65
- * @param event - The name of the Telemetry event
66
- * @param details An additional value, or an object containing a list of property/value pairs
67
- */
68
- TelemetryManager.prototype._eventEnabled = function (event, viewerId, details) {
69
- var telemetryData = {
70
- viewerId: viewerId,
71
- event: event,
72
- session: this.session,
73
- date: new Date(),
74
- now: window.performance ? window.performance.now() : Date.now(),
75
- detail: null
76
- };
77
- if (typeof details === "object") {
78
- for (var attr in details) {
79
- if (details.hasOwnProperty(attr)) {
80
- telemetryData[attr] = details[attr];
81
- }
82
- }
83
- }
84
- else if (details) {
85
- telemetryData.detail = details;
86
- }
87
- this.onEventBroadcastedObservable.notifyObservers(telemetryData);
88
- };
89
- Object.defineProperty(TelemetryManager.prototype, "session", {
90
- /**
91
- * Returns the current session ID or creates one if it doesn't exixt
92
- * @return The current session ID
93
- */
94
- get: function () {
95
- if (!this._currentSessionId) {
96
- //String + Timestamp + Random Integer
97
- this._currentSessionId = "SESSION_" + Date.now() + Math.floor(Math.random() * 0x10000);
98
- }
99
- return this._currentSessionId;
100
- },
101
- enumerable: false,
102
- configurable: true
103
- });
104
- /**
105
- * Disposes the telemetry manager
106
- */
107
- TelemetryManager.prototype.dispose = function () {
108
- this.onEventBroadcastedObservable.clear();
109
- };
110
- return TelemetryManager;
111
- }());
112
- export { TelemetryManager };
113
- export var telemetryManager = new TelemetryManager();
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ /**
3
+ * Receives Telemetry events and raises events to the API
4
+ */
5
+ var TelemetryManager = /** @class */ (function () {
6
+ function TelemetryManager() {
7
+ this.onEventBroadcastedObservable = new Observable();
8
+ this._event = this._eventEnabled;
9
+ }
10
+ Object.defineProperty(TelemetryManager.prototype, "broadcast", {
11
+ /**
12
+ * Receives a telemetry event
13
+ */
14
+ get: function () {
15
+ return this._event;
16
+ },
17
+ enumerable: false,
18
+ configurable: true
19
+ });
20
+ /**
21
+ * Log a Telemetry event for errors raised on the WebGL context.
22
+ * @param engine The Babylon engine with the WebGL context.
23
+ * @param viewerId
24
+ */
25
+ TelemetryManager.prototype.flushWebGLErrors = function (engine, viewerId) {
26
+ if (!engine) {
27
+ return;
28
+ }
29
+ var logErrors = true;
30
+ while (logErrors) {
31
+ var error = engine.getError();
32
+ if (error === 0) {
33
+ logErrors = false;
34
+ }
35
+ else {
36
+ this.broadcast("WebGL Error", viewerId, { error: error });
37
+ }
38
+ }
39
+ };
40
+ Object.defineProperty(TelemetryManager.prototype, "enable", {
41
+ /**
42
+ * Enable or disable telemetry events
43
+ * @param enabled Boolean, true if events are enabled
44
+ */
45
+ set: function (enabled) {
46
+ if (enabled) {
47
+ this._event = this._eventEnabled;
48
+ }
49
+ else {
50
+ this._event = this._eventDisabled;
51
+ }
52
+ },
53
+ enumerable: false,
54
+ configurable: true
55
+ });
56
+ /**
57
+ * Called on event when disabled, typically do nothing here
58
+ */
59
+ TelemetryManager.prototype._eventDisabled = function () {
60
+ // nothing to do
61
+ };
62
+ /**
63
+ * Called on event when enabled
64
+ * @param event - The name of the Telemetry event
65
+ * @param viewerId
66
+ * @param details An additional value, or an object containing a list of property/value pairs
67
+ */
68
+ TelemetryManager.prototype._eventEnabled = function (event, viewerId, details) {
69
+ var telemetryData = {
70
+ viewerId: viewerId,
71
+ event: event,
72
+ session: this.session,
73
+ date: new Date(),
74
+ now: window.performance ? window.performance.now() : Date.now(),
75
+ detail: null,
76
+ };
77
+ if (typeof details === "object") {
78
+ for (var attr in details) {
79
+ if (Object.prototype.hasOwnProperty.call(details, attr)) {
80
+ telemetryData[attr] = details[attr];
81
+ }
82
+ }
83
+ }
84
+ else if (details) {
85
+ telemetryData.detail = details;
86
+ }
87
+ this.onEventBroadcastedObservable.notifyObservers(telemetryData);
88
+ };
89
+ Object.defineProperty(TelemetryManager.prototype, "session", {
90
+ /**
91
+ * Returns the current session ID or creates one if it doesn't exist
92
+ * @return The current session ID
93
+ */
94
+ get: function () {
95
+ if (!this._currentSessionId) {
96
+ //String + Timestamp + Random Integer
97
+ this._currentSessionId = "SESSION_" + Date.now() + Math.floor(Math.random() * 0x10000);
98
+ }
99
+ return this._currentSessionId;
100
+ },
101
+ enumerable: false,
102
+ configurable: true
103
+ });
104
+ /**
105
+ * Disposes the telemetry manager
106
+ */
107
+ TelemetryManager.prototype.dispose = function () {
108
+ this.onEventBroadcastedObservable.clear();
109
+ };
110
+ return TelemetryManager;
111
+ }());
112
+ export { TelemetryManager };
113
+ export var telemetryManager = new TelemetryManager();
114
114
  //# sourceMappingURL=telemetryManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetryManager.js","sourceRoot":"","sources":["../../../../sourceES6/viewer/src/managers/telemetryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAgB7D;;GAEG;AACH;IAAA;QAEW,iCAA4B,GAA8B,IAAI,UAAU,EAAE,CAAC;QAI1E,WAAM,GAA8D,IAAI,CAAC,aAAa,CAAC;IAgGnG,CAAC;IAzFG,sBAAW,uCAAS;QALpB;;;;WAIG;aACH;YACI,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;;;OAAA;IAED;;;OAGG;IACI,2CAAgB,GAAvB,UAAwB,MAAc,EAAE,QAAiB;QACrD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,OAAO,SAAS,EAAE;YACd,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,KAAK,KAAK,CAAC,EAAE;gBACb,SAAS,GAAG,KAAK,CAAC;aACrB;iBAAM;gBACH,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;aAC7D;SACJ;IACL,CAAC;IAMD,sBAAW,oCAAM;QAJjB;;;WAGG;aACH,UAAkB,OAAgB;YAC9B,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;aACpC;iBAAM;gBACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;aACrC;QACL,CAAC;;;OAAA;IAED;;OAEG;IACK,yCAAc,GAAtB;QACI,gBAAgB;IACpB,CAAC;IAED;;;;OAIG;IACK,wCAAa,GAArB,UAAsB,KAAa,EAAE,QAAiB,EAAE,OAAa;QACjE,IAAI,aAAa,GAAkB;YAC/B,QAAQ,UAAA;YACR,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/D,MAAM,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC7B,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE;gBACtB,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;oBAC9B,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;iBACvC;aACJ;SACJ;aAAM,IAAI,OAAO,EAAE;YAChB,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC;SAClC;QAED,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAMD,sBAAW,qCAAO;QAJlB;;;WAGG;aACH;YACI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBACzB,qCAAqC;gBACrC,IAAI,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;aAC1F;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAClC,CAAC;;;OAAA;IAED;;OAEG;IACI,kCAAO,GAAd;QACI,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IACL,uBAAC;AAAD,CAAC,AAtGD,IAsGC;;AAED,MAAM,CAAC,IAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC","sourcesContent":["import { Observable } from \"@babylonjs/core/Misc/observable\";\r\nimport { Engine } from \"@babylonjs/core/Engines/engine\";\r\n\r\n\r\n/**\r\n * The data structure of a telemetry event.\r\n */\r\nexport interface TelemetryData {\r\n event: string;\r\n session: string;\r\n date: Date;\r\n now: number;\r\n viewerId?: string;\r\n detail: any;\r\n}\r\n\r\n/**\r\n * Receives Telemetry events and raises events to the API\r\n */\r\nexport class TelemetryManager {\r\n\r\n public onEventBroadcastedObservable: Observable<TelemetryData> = new Observable();\r\n\r\n private _currentSessionId: string;\r\n\r\n private _event: (event: string, viewerId?: string, details?: any) => void = this._eventEnabled;\r\n\r\n /**\r\n * Receives a telemetry event\r\n * @param event The name of the Telemetry event\r\n * @param details An additional value, or an object containing a list of property/value pairs\r\n */\r\n public get broadcast() {\r\n return this._event;\r\n }\r\n\r\n /**\r\n * Log a Telemetry event for errors raised on the WebGL context.\r\n * @param engine The Babylon engine with the WebGL context.\r\n */\r\n public flushWebGLErrors(engine: Engine, viewerId?: string) {\r\n if (!engine) {\r\n return;\r\n }\r\n let logErrors = true;\r\n\r\n while (logErrors) {\r\n let error = engine.getError();\r\n if (error === 0) {\r\n logErrors = false;\r\n } else {\r\n this.broadcast(\"WebGL Error\", viewerId, { error: error });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Enable or disable telemetry events\r\n * @param enabled Boolan, true if events are enabled\r\n */\r\n public set enable(enabled: boolean) {\r\n if (enabled) {\r\n this._event = this._eventEnabled;\r\n } else {\r\n this._event = this._eventDisabled;\r\n }\r\n }\r\n\r\n /**\r\n * Called on event when disabled, typically do nothing here\r\n */\r\n private _eventDisabled(): void {\r\n // nothing to do\r\n }\r\n\r\n /**\r\n * Called on event when enabled\r\n * @param event - The name of the Telemetry event\r\n * @param details An additional value, or an object containing a list of property/value pairs\r\n */\r\n private _eventEnabled(event: string, viewerId?: string, details?: any): void {\r\n let telemetryData: TelemetryData = {\r\n viewerId,\r\n event: event,\r\n session: this.session,\r\n date: new Date(),\r\n now: window.performance ? window.performance.now() : Date.now(),\r\n detail: null\r\n };\r\n\r\n if (typeof details === \"object\") {\r\n for (var attr in details) {\r\n if (details.hasOwnProperty(attr)) {\r\n telemetryData[attr] = details[attr];\r\n }\r\n }\r\n } else if (details) {\r\n telemetryData.detail = details;\r\n }\r\n\r\n this.onEventBroadcastedObservable.notifyObservers(telemetryData);\r\n }\r\n\r\n /**\r\n * Returns the current session ID or creates one if it doesn't exixt\r\n * @return The current session ID\r\n */\r\n public get session(): string {\r\n if (!this._currentSessionId) {\r\n //String + Timestamp + Random Integer\r\n this._currentSessionId = \"SESSION_\" + Date.now() + Math.floor(Math.random() * 0x10000);\r\n }\r\n return this._currentSessionId;\r\n }\r\n\r\n /**\r\n * Disposes the telemetry manager\r\n */\r\n public dispose() {\r\n this.onEventBroadcastedObservable.clear();\r\n }\r\n}\r\n\r\nexport const telemetryManager = new TelemetryManager();\r\n"]}
1
+ {"version":3,"file":"telemetryManager.js","sourceRoot":"","sources":["../../../../../tools/viewer/src/managers/telemetryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,2CAA6B;AAelD;;GAEG;AACH;IAAA;QACW,iCAA4B,GAA8B,IAAI,UAAU,EAAE,CAAC;QAI1E,WAAM,GAA8D,IAAI,CAAC,aAAa,CAAC;IAgGnG,CAAC;IA3FG,sBAAW,uCAAS;QAHpB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;;;OAAA;IAED;;;;OAIG;IACI,2CAAgB,GAAvB,UAAwB,MAAc,EAAE,QAAiB;QACrD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,OAAO,SAAS,EAAE;YACd,IAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,KAAK,KAAK,CAAC,EAAE;gBACb,SAAS,GAAG,KAAK,CAAC;aACrB;iBAAM;gBACH,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;aAC7D;SACJ;IACL,CAAC;IAMD,sBAAW,oCAAM;QAJjB;;;WAGG;aACH,UAAkB,OAAgB;YAC9B,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;aACpC;iBAAM;gBACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;aACrC;QACL,CAAC;;;OAAA;IAED;;OAEG;IACK,yCAAc,GAAtB;QACI,gBAAgB;IACpB,CAAC;IAED;;;;;OAKG;IACK,wCAAa,GAArB,UAAsB,KAAa,EAAE,QAAiB,EAAE,OAAa;QACjE,IAAM,aAAa,GAAkB;YACjC,QAAQ,UAAA;YACR,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/D,MAAM,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC7B,KAAK,IAAM,IAAI,IAAI,OAAO,EAAE;gBACxB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACpD,aAAqB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;iBAChD;aACJ;SACJ;aAAM,IAAI,OAAO,EAAE;YAChB,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC;SAClC;QAED,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAMD,sBAAW,qCAAO;QAJlB;;;WAGG;aACH;YACI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBACzB,qCAAqC;gBACrC,IAAI,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;aAC1F;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAClC,CAAC;;;OAAA;IAED;;OAEG;IACI,kCAAO,GAAd;QACI,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IACL,uBAAC;AAAD,CAAC,AArGD,IAqGC;;AAED,MAAM,CAAC,IAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC","sourcesContent":["import { Observable } from \"core/Misc/observable\";\r\nimport type { Engine } from \"core/Engines/engine\";\r\n\r\n/**\r\n * The data structure of a telemetry event.\r\n */\r\nexport interface TelemetryData {\r\n event: string;\r\n session: string;\r\n date: Date;\r\n now: number;\r\n viewerId?: string;\r\n detail: any;\r\n}\r\n\r\n/**\r\n * Receives Telemetry events and raises events to the API\r\n */\r\nexport class TelemetryManager {\r\n public onEventBroadcastedObservable: Observable<TelemetryData> = new Observable();\r\n\r\n private _currentSessionId: string;\r\n\r\n private _event: (event: string, viewerId?: string, details?: any) => void = this._eventEnabled;\r\n\r\n /**\r\n * Receives a telemetry event\r\n */\r\n public get broadcast() {\r\n return this._event;\r\n }\r\n\r\n /**\r\n * Log a Telemetry event for errors raised on the WebGL context.\r\n * @param engine The Babylon engine with the WebGL context.\r\n * @param viewerId\r\n */\r\n public flushWebGLErrors(engine: Engine, viewerId?: string) {\r\n if (!engine) {\r\n return;\r\n }\r\n let logErrors = true;\r\n\r\n while (logErrors) {\r\n const error = engine.getError();\r\n if (error === 0) {\r\n logErrors = false;\r\n } else {\r\n this.broadcast(\"WebGL Error\", viewerId, { error: error });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Enable or disable telemetry events\r\n * @param enabled Boolean, true if events are enabled\r\n */\r\n public set enable(enabled: boolean) {\r\n if (enabled) {\r\n this._event = this._eventEnabled;\r\n } else {\r\n this._event = this._eventDisabled;\r\n }\r\n }\r\n\r\n /**\r\n * Called on event when disabled, typically do nothing here\r\n */\r\n private _eventDisabled(): void {\r\n // nothing to do\r\n }\r\n\r\n /**\r\n * Called on event when enabled\r\n * @param event - The name of the Telemetry event\r\n * @param viewerId\r\n * @param details An additional value, or an object containing a list of property/value pairs\r\n */\r\n private _eventEnabled(event: string, viewerId?: string, details?: any): void {\r\n const telemetryData: TelemetryData = {\r\n viewerId,\r\n event: event,\r\n session: this.session,\r\n date: new Date(),\r\n now: window.performance ? window.performance.now() : Date.now(),\r\n detail: null,\r\n };\r\n\r\n if (typeof details === \"object\") {\r\n for (const attr in details) {\r\n if (Object.prototype.hasOwnProperty.call(details, attr)) {\r\n (telemetryData as any)[attr] = details[attr];\r\n }\r\n }\r\n } else if (details) {\r\n telemetryData.detail = details;\r\n }\r\n\r\n this.onEventBroadcastedObservable.notifyObservers(telemetryData);\r\n }\r\n\r\n /**\r\n * Returns the current session ID or creates one if it doesn't exist\r\n * @return The current session ID\r\n */\r\n public get session(): string {\r\n if (!this._currentSessionId) {\r\n //String + Timestamp + Random Integer\r\n this._currentSessionId = \"SESSION_\" + Date.now() + Math.floor(Math.random() * 0x10000);\r\n }\r\n return this._currentSessionId;\r\n }\r\n\r\n /**\r\n * Disposes the telemetry manager\r\n */\r\n public dispose() {\r\n this.onEventBroadcastedObservable.clear();\r\n }\r\n}\r\n\r\nexport const telemetryManager = new TelemetryManager();\r\n"]}