@vived/app 2.5.0 → 2.8.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 (83) hide show
  1. package/README.md +1 -151
  2. package/lib/Core/BaseApp/Boundary.d.ts +8 -2
  3. package/lib/Core/BaseApp/Entity.d.ts +2 -0
  4. package/lib/Core/BaseApp/UseCase.d.ts +29 -19
  5. package/lib/Core/BaseApp/UseCase.js +211 -135
  6. package/lib/Entities/Babylon.d.ts +17 -0
  7. package/lib/Entities/Babylon.js +81 -0
  8. package/lib/Entities/BaseApp.d.ts +7 -0
  9. package/lib/Entities/BaseApp.js +27 -0
  10. package/lib/Entities/Color.d.ts +20 -0
  11. package/lib/Entities/Color.js +59 -0
  12. package/lib/Entities/DevicePreview.d.ts +11 -0
  13. package/lib/Entities/DevicePreview.js +44 -0
  14. package/lib/Entities/KeyboardInput.d.ts +14 -0
  15. package/lib/Entities/KeyboardInput.js +76 -0
  16. package/lib/Entities/LineSegment2D.d.ts +11 -0
  17. package/lib/Entities/LineSegment2D.js +70 -0
  18. package/lib/Entities/MemoizedBoolean.d.ts +7 -0
  19. package/lib/Entities/MemoizedBoolean.js +19 -0
  20. package/lib/Entities/MemoizedNumber.d.ts +7 -0
  21. package/lib/Entities/MemoizedNumber.js +19 -0
  22. package/lib/Entities/MemoizedString.d.ts +7 -0
  23. package/lib/Entities/MemoizedString.js +19 -0
  24. package/lib/Entities/MemoizedVector2.d.ts +12 -0
  25. package/lib/Entities/MemoizedVector2.js +37 -0
  26. package/lib/Entities/MemoizedVector3.d.ts +14 -0
  27. package/lib/Entities/MemoizedVector3.js +46 -0
  28. package/lib/Entities/MouseSceneInput.d.ts +24 -0
  29. package/lib/Entities/MouseSceneInput.js +127 -0
  30. package/lib/Entities/ObserverList.d.ts +6 -0
  31. package/lib/Entities/ObserverList.js +23 -0
  32. package/lib/Entities/OrbitCamera.d.ts +17 -0
  33. package/lib/Entities/OrbitCamera.js +74 -0
  34. package/lib/Entities/ParametricLine.d.ts +29 -0
  35. package/lib/Entities/ParametricLine.js +79 -0
  36. package/lib/Entities/ParametricPlane.d.ts +20 -0
  37. package/lib/Entities/ParametricPlane.js +63 -0
  38. package/lib/Entities/StateMachine.d.ts +25 -0
  39. package/lib/Entities/StateMachine.js +81 -0
  40. package/lib/Entities/UndoRedo.d.ts +22 -0
  41. package/lib/Entities/UndoRedo.js +61 -0
  42. package/lib/Entities/Vector2.d.ts +21 -0
  43. package/lib/Entities/Vector2.js +83 -0
  44. package/lib/Entities/Vector3.d.ts +19 -0
  45. package/lib/Entities/Vector3.js +75 -0
  46. package/lib/Entities/index.d.ts +20 -0
  47. package/lib/Entities/index.js +32 -0
  48. package/lib/Interface/Controllers/setState.d.ts +1 -1
  49. package/lib/Interface/Controllers/setState.js +14 -3
  50. package/lib/PresentationManagers/DevicePreviewPM.d.ts +13 -0
  51. package/lib/PresentationManagers/DevicePreviewPM.js +25 -0
  52. package/lib/PresentationManagers/HasRedoPM.d.ts +9 -0
  53. package/lib/PresentationManagers/HasRedoPM.js +22 -0
  54. package/lib/PresentationManagers/HasUndoPM.d.ts +9 -0
  55. package/lib/PresentationManagers/HasUndoPM.js +22 -0
  56. package/lib/PresentationManagers/IsAuthoringPM.d.ts +9 -0
  57. package/lib/PresentationManagers/IsAuthoringPM.js +22 -0
  58. package/lib/PresentationManagers/OrbitCameraPM.d.ts +14 -0
  59. package/lib/PresentationManagers/OrbitCameraPM.js +31 -0
  60. package/lib/PresentationManagers/ShowBabylonInspectorPM.d.ts +9 -0
  61. package/lib/PresentationManagers/ShowBabylonInspectorPM.js +22 -0
  62. package/lib/PresentationManagers/index.d.ts +6 -0
  63. package/lib/PresentationManagers/index.js +18 -0
  64. package/lib/UseCases/LerpOrbitCamera.d.ts +36 -0
  65. package/lib/UseCases/LerpOrbitCamera.js +71 -0
  66. package/lib/UseCases/SerializeCamera.d.ts +21 -0
  67. package/lib/UseCases/SerializeCamera.js +59 -0
  68. package/lib/UseCases/SerializeOrbitCamera.d.ts +21 -0
  69. package/lib/UseCases/SerializeOrbitCamera.js +59 -0
  70. package/lib/UseCases/SerializedCamDemo.d.ts +0 -0
  71. package/lib/UseCases/SerializedCamDemo.js +1 -0
  72. package/lib/UseCases/index.d.ts +3 -0
  73. package/lib/UseCases/index.js +15 -0
  74. package/lib/UseCases/setDevicePreview.d.ts +2 -0
  75. package/lib/UseCases/setDevicePreview.js +14 -0
  76. package/lib/Utilities/degreesToRadians.d.ts +1 -0
  77. package/lib/Utilities/degreesToRadians.js +7 -0
  78. package/lib/Utilities/index.d.ts +1 -0
  79. package/lib/Utilities/index.js +13 -0
  80. package/lib/index.d.ts +7 -2
  81. package/lib/index.js +8 -2
  82. package/package.json +1 -2
  83. package/CHANGELOG.md +0 -51
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Vector2 = void 0;
4
+ class Vector2 {
5
+ constructor(x, y) {
6
+ this.setLength = (length) => {
7
+ const unit = this.unit;
8
+ this.x = length * unit.x;
9
+ this.y = length * unit.y;
10
+ };
11
+ this.add = (vector2) => {
12
+ return new Vector2(this.x + vector2.x, this.y + vector2.y);
13
+ };
14
+ this.subtract = (vector2) => {
15
+ return new Vector2(this.x - vector2.x, this.y - vector2.y);
16
+ };
17
+ this.equal = (a) => {
18
+ if (a.x === this.x && a.y === this.y)
19
+ return true;
20
+ else
21
+ return false;
22
+ };
23
+ this.close = (vec) => {
24
+ const diff = this.subtract(vec);
25
+ const diffMag = diff.magnitued;
26
+ if (diffMag < 0.01)
27
+ return true;
28
+ else
29
+ return false;
30
+ };
31
+ this.copy = () => {
32
+ return new Vector2(this.x, this.y);
33
+ };
34
+ this.asArray = () => {
35
+ return [this.x, this.y];
36
+ };
37
+ this.rotate = (theta) => {
38
+ const thetaRadians = theta * Math.PI / 180;
39
+ const x = this.x * Math.cos(thetaRadians) - this.y * Math.sin(thetaRadians);
40
+ const y = this.x * Math.sin(thetaRadians) + this.y * Math.cos(thetaRadians);
41
+ return new Vector2(x, y);
42
+ };
43
+ this.dot = (vec) => {
44
+ return this.x * vec.x + this.y * vec.y;
45
+ };
46
+ this.angleTo = (vec) => {
47
+ const dot = this.dot(vec);
48
+ const magnitues = vec.magnitued * this.magnitued;
49
+ const angRadians = Math.acos(dot / magnitues);
50
+ return angRadians * 180 / Math.PI;
51
+ };
52
+ this.cross = (vec) => {
53
+ return (this.x * vec.y) - (this.y * vec.x);
54
+ };
55
+ this.x = x;
56
+ this.y = y;
57
+ }
58
+ static Zero() {
59
+ return new Vector2(0, 0);
60
+ }
61
+ static One() {
62
+ return new Vector2(1, 1);
63
+ }
64
+ get magnitued() {
65
+ const xSqr = this.x * this.x;
66
+ const ySqr = this.y * this.y;
67
+ const magnitude = Math.sqrt(xSqr + ySqr);
68
+ return magnitude;
69
+ }
70
+ get unit() {
71
+ const mag = this.magnitued;
72
+ if (mag === 0) {
73
+ return Vector2.Zero();
74
+ }
75
+ const unitX = this.x / mag;
76
+ const unitY = this.y / mag;
77
+ return new Vector2(unitX, unitY);
78
+ }
79
+ get theta() {
80
+ return (Math.atan2(this.y, this.x) * 180) / Math.PI;
81
+ }
82
+ }
83
+ exports.Vector2 = Vector2;
@@ -0,0 +1,19 @@
1
+ export declare class Vector3 {
2
+ static Zero(): Vector3;
3
+ static One(): Vector3;
4
+ x: number;
5
+ y: number;
6
+ z: number;
7
+ get magnitued(): number;
8
+ get unit(): Vector3;
9
+ setLength: (length: number) => void;
10
+ add: (a: Vector3) => Vector3;
11
+ subtract: (vector2: Vector3) => Vector3;
12
+ copy: () => Vector3;
13
+ equals: (vec: Vector3) => boolean;
14
+ close: (vec: Vector3) => boolean;
15
+ cross: (vec: Vector3) => Vector3;
16
+ dot: (vec: Vector3) => number;
17
+ asArray: () => [number, number, number];
18
+ constructor(x: number, y: number, z: number);
19
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Vector3 = void 0;
4
+ class Vector3 {
5
+ constructor(x, y, z) {
6
+ this.setLength = (length) => {
7
+ const unit = this.unit;
8
+ this.x = length * unit.x;
9
+ this.y = length * unit.y;
10
+ this.z = length * unit.z;
11
+ };
12
+ this.add = (a) => {
13
+ return new Vector3(this.x + a.x, this.y + a.y, this.z + a.z);
14
+ };
15
+ this.subtract = (vector2) => {
16
+ return new Vector3(this.x - vector2.x, this.y - vector2.y, this.z - vector2.z);
17
+ };
18
+ this.copy = () => {
19
+ return new Vector3(this.x, this.y, this.z);
20
+ };
21
+ this.equals = (vec) => {
22
+ if (vec.x === this.x && vec.y === this.y && vec.z === this.z)
23
+ return true;
24
+ else
25
+ return false;
26
+ };
27
+ this.close = (vec) => {
28
+ const diff = this.subtract(vec);
29
+ const diffMag = diff.magnitued;
30
+ if (diffMag < 0.01)
31
+ return true;
32
+ else
33
+ return false;
34
+ };
35
+ this.cross = (vec) => {
36
+ const x = this.y * vec.z - this.z * vec.y;
37
+ const y = this.z * vec.x - this.x * vec.z;
38
+ const z = this.x * vec.y - this.y * vec.x;
39
+ return new Vector3(x, y, z);
40
+ };
41
+ this.dot = (vec) => {
42
+ return this.x * vec.x + this.y * vec.y + this.z * vec.z;
43
+ };
44
+ this.asArray = () => {
45
+ return [this.x, this.y, this.z];
46
+ };
47
+ this.x = x;
48
+ this.y = y;
49
+ this.z = z;
50
+ }
51
+ static Zero() {
52
+ return new Vector3(0, 0, 0);
53
+ }
54
+ static One() {
55
+ return new Vector3(1, 1, 1);
56
+ }
57
+ get magnitued() {
58
+ const xSqr = this.x * this.x;
59
+ const ySqr = this.y * this.y;
60
+ const zSqr = this.z * this.z;
61
+ const magnitude = Math.sqrt(xSqr + ySqr + zSqr);
62
+ return magnitude;
63
+ }
64
+ get unit() {
65
+ const mag = this.magnitued;
66
+ if (mag === 0) {
67
+ return Vector3.Zero();
68
+ }
69
+ const unitX = this.x / mag;
70
+ const unitY = this.y / mag;
71
+ const unitZ = this.z / mag;
72
+ return new Vector3(unitX, unitY, unitZ);
73
+ }
74
+ }
75
+ exports.Vector3 = Vector3;
@@ -0,0 +1,20 @@
1
+ export * from "./Babylon";
2
+ export * from "./BaseApp";
3
+ export * from "./Color";
4
+ export * from "./DevicePreview";
5
+ export * from "./KeyboardInput";
6
+ export * from "./LineSegment2D";
7
+ export * from "./MemoizedBoolean";
8
+ export * from "./MemoizedNumber";
9
+ export * from "./MemoizedString";
10
+ export * from "./MemoizedVector2";
11
+ export * from "./MemoizedVector3";
12
+ export * from "./ObserverList";
13
+ export * from "./OrbitCamera";
14
+ export * from "./ParametricLine";
15
+ export * from "./ParametricPlane";
16
+ export * from "./StateMachine";
17
+ export * from "./UndoRedo";
18
+ export * from "./Vector2";
19
+ export * from "./Vector3";
20
+ export * from "./MouseSceneInput";
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./Babylon"), exports);
14
+ __exportStar(require("./BaseApp"), exports);
15
+ __exportStar(require("./Color"), exports);
16
+ __exportStar(require("./DevicePreview"), exports);
17
+ __exportStar(require("./KeyboardInput"), exports);
18
+ __exportStar(require("./LineSegment2D"), exports);
19
+ __exportStar(require("./MemoizedBoolean"), exports);
20
+ __exportStar(require("./MemoizedNumber"), exports);
21
+ __exportStar(require("./MemoizedString"), exports);
22
+ __exportStar(require("./MemoizedVector2"), exports);
23
+ __exportStar(require("./MemoizedVector3"), exports);
24
+ __exportStar(require("./ObserverList"), exports);
25
+ __exportStar(require("./OrbitCamera"), exports);
26
+ __exportStar(require("./ParametricLine"), exports);
27
+ __exportStar(require("./ParametricPlane"), exports);
28
+ __exportStar(require("./StateMachine"), exports);
29
+ __exportStar(require("./UndoRedo"), exports);
30
+ __exportStar(require("./Vector2"), exports);
31
+ __exportStar(require("./Vector3"), exports);
32
+ __exportStar(require("./MouseSceneInput"), exports);
@@ -1,2 +1,2 @@
1
1
  import { BaseAppUC } from "../../Core";
2
- export declare function makeSetState(baseApp: BaseAppUC): (state: string, duration?: number | undefined) => void;
2
+ export declare function makeSetState(baseApp: BaseAppUC): (state: string | null, duration?: number) => void;
@@ -2,9 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeSetState = void 0;
4
4
  function makeSetState(baseApp) {
5
- return function setState(state, duration) {
6
- const stateObj = JSON.parse(state);
7
- baseApp.setSerializedState(stateObj);
5
+ return function setState(state, duration = 0) {
6
+ if (state) {
7
+ try {
8
+ const stateObj = JSON.parse(state);
9
+ baseApp.setSerializedState(stateObj, duration);
10
+ }
11
+ catch (e) {
12
+ baseApp.setDefaultState(duration);
13
+ console.warn("[setState] Failed to deserialize state string: " + e);
14
+ }
15
+ }
16
+ else {
17
+ baseApp.setDefaultState(duration);
18
+ }
8
19
  };
9
20
  }
10
21
  exports.makeSetState = makeSetState;
@@ -0,0 +1,13 @@
1
+ import { DevicePreview } from "../Entities";
2
+ export interface DevicePreviewVM {
3
+ x: number;
4
+ y: number;
5
+ useDevicePreview: boolean;
6
+ }
7
+ export declare class DevicePreviewPM {
8
+ devicePreview: DevicePreview;
9
+ updateView: (vm: DevicePreviewVM) => void;
10
+ doUpdateView: () => void;
11
+ dispose(): void;
12
+ constructor(devicePreview: DevicePreview, updateView: (vm: DevicePreviewVM) => void);
13
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DevicePreviewPM = void 0;
4
+ class DevicePreviewPM {
5
+ constructor(devicePreview, updateView) {
6
+ this.doUpdateView = () => {
7
+ const useDevicePreview = this.devicePreview.useDevicePreview;
8
+ const x = this.devicePreview.previewSize.x;
9
+ const y = this.devicePreview.previewSize.y;
10
+ this.updateView({
11
+ x,
12
+ y,
13
+ useDevicePreview,
14
+ });
15
+ };
16
+ this.devicePreview = devicePreview;
17
+ this.updateView = updateView;
18
+ this.doUpdateView();
19
+ this.devicePreview.addObserver(this.doUpdateView);
20
+ }
21
+ dispose() {
22
+ this.devicePreview.removeObserver(this.doUpdateView);
23
+ }
24
+ }
25
+ exports.DevicePreviewPM = DevicePreviewPM;
@@ -0,0 +1,9 @@
1
+ import { UndoRedo } from "../Entities";
2
+ export declare class HasRedoPM {
3
+ updateView: (hasRedo: boolean) => void;
4
+ private undoRedo;
5
+ private lastValue?;
6
+ private onChange;
7
+ dispose(): void;
8
+ constructor(undoRedo: UndoRedo, updateView: (hasRedo: boolean) => void);
9
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HasRedoPM = void 0;
4
+ class HasRedoPM {
5
+ constructor(undoRedo, updateView) {
6
+ this.updateView = updateView;
7
+ this.onChange = () => {
8
+ const currentVal = this.undoRedo.hasRedo;
9
+ if (this.lastValue === currentVal)
10
+ return;
11
+ this.updateView(currentVal);
12
+ this.lastValue = currentVal;
13
+ };
14
+ this.undoRedo = undoRedo;
15
+ this.onChange();
16
+ this.undoRedo.addObserver(this.onChange);
17
+ }
18
+ dispose() {
19
+ this.undoRedo.removeObserver(this.onChange);
20
+ }
21
+ }
22
+ exports.HasRedoPM = HasRedoPM;
@@ -0,0 +1,9 @@
1
+ import { UndoRedo } from "../Entities";
2
+ export declare class HasUndoPM {
3
+ updateView: (hasUndo: boolean) => void;
4
+ private undoRedo;
5
+ private lastValue?;
6
+ private onChange;
7
+ dispose(): void;
8
+ constructor(undoRedo: UndoRedo, updateView: (hasUndo: boolean) => void);
9
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HasUndoPM = void 0;
4
+ class HasUndoPM {
5
+ constructor(undoRedo, updateView) {
6
+ this.updateView = updateView;
7
+ this.onChange = () => {
8
+ const currentVal = this.undoRedo.hasUndo;
9
+ if (this.lastValue === currentVal)
10
+ return;
11
+ this.updateView(currentVal);
12
+ this.lastValue = currentVal;
13
+ };
14
+ this.undoRedo = undoRedo;
15
+ this.onChange();
16
+ this.undoRedo.addObserver(this.onChange);
17
+ }
18
+ dispose() {
19
+ this.undoRedo.removeObserver(this.onChange);
20
+ }
21
+ }
22
+ exports.HasUndoPM = HasUndoPM;
@@ -0,0 +1,9 @@
1
+ import { BaseApp } from "../Entities";
2
+ export declare class IsAuthoringPM {
3
+ private baseApp;
4
+ private updateView;
5
+ private lastSetState?;
6
+ private doUpdateView;
7
+ dispose(): void;
8
+ constructor(baseApp: BaseApp, updateView: (isAuthoring: boolean) => void);
9
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsAuthoringPM = void 0;
4
+ class IsAuthoringPM {
5
+ constructor(baseApp, updateView) {
6
+ this.doUpdateView = () => {
7
+ const isAuthoring = this.baseApp.isAuthoring;
8
+ if (isAuthoring === this.lastSetState)
9
+ return;
10
+ this.updateView(isAuthoring);
11
+ this.lastSetState = isAuthoring;
12
+ };
13
+ this.baseApp = baseApp;
14
+ this.updateView = updateView;
15
+ this.doUpdateView();
16
+ this.baseApp.addObserver(this.doUpdateView);
17
+ }
18
+ dispose() {
19
+ this.baseApp.removeObserver(this.doUpdateView);
20
+ }
21
+ }
22
+ exports.IsAuthoringPM = IsAuthoringPM;
@@ -0,0 +1,14 @@
1
+ import { OrbitCamera, Vector3 } from "../Entities";
2
+ export interface OrbitCameraVM {
3
+ alphaEuler: Vector3;
4
+ betaEuler: Vector3;
5
+ cameraLocalPosition: Vector3;
6
+ target: Vector3;
7
+ }
8
+ export declare class OrbitCameraPM {
9
+ private orbitCam;
10
+ private view;
11
+ dispose(): void;
12
+ private doUpdateView;
13
+ constructor(orbitCamera: OrbitCamera, view: (vm: OrbitCameraVM) => void);
14
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrbitCameraPM = void 0;
4
+ const Entities_1 = require("../Entities");
5
+ const Utilities_1 = require("../Utilities");
6
+ class OrbitCameraPM {
7
+ constructor(orbitCamera, view) {
8
+ this.doUpdateView = () => {
9
+ const { alpha, beta, radius, target } = this.orbitCam;
10
+ const alphaRadians = Utilities_1.degreesToRadians(alpha);
11
+ const alphaEuler = new Entities_1.Vector3(0, alphaRadians, 0);
12
+ const betaRadians = Utilities_1.degreesToRadians(beta);
13
+ const betaEuler = new Entities_1.Vector3(betaRadians, 0, 0);
14
+ const cameraLocalPosition = new Entities_1.Vector3(0, 0, -radius);
15
+ this.view({
16
+ alphaEuler,
17
+ betaEuler,
18
+ cameraLocalPosition,
19
+ target,
20
+ });
21
+ };
22
+ this.orbitCam = orbitCamera;
23
+ this.view = view;
24
+ this.doUpdateView();
25
+ this.orbitCam.addObserver(this.doUpdateView);
26
+ }
27
+ dispose() {
28
+ this.orbitCam.removeObserver(this.doUpdateView);
29
+ }
30
+ }
31
+ exports.OrbitCameraPM = OrbitCameraPM;
@@ -0,0 +1,9 @@
1
+ import { Babylon } from "../Entities";
2
+ export declare class ShowBabylonInspectorPM {
3
+ private babylon;
4
+ private updateView;
5
+ private lastSetState?;
6
+ private doUpdateView;
7
+ dispose(): void;
8
+ constructor(babylon: Babylon, updateView: (showInspector: boolean) => void);
9
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShowBabylonInspectorPM = void 0;
4
+ class ShowBabylonInspectorPM {
5
+ constructor(babylon, updateView) {
6
+ this.doUpdateView = () => {
7
+ const showInspector = this.babylon.showInspector;
8
+ if (showInspector === this.lastSetState)
9
+ return;
10
+ this.updateView(showInspector);
11
+ this.lastSetState = showInspector;
12
+ };
13
+ this.babylon = babylon;
14
+ this.updateView = updateView;
15
+ this.doUpdateView();
16
+ this.babylon.addObserver(this.doUpdateView);
17
+ }
18
+ dispose() {
19
+ this.babylon.removeObserver(this.doUpdateView);
20
+ }
21
+ }
22
+ exports.ShowBabylonInspectorPM = ShowBabylonInspectorPM;
@@ -0,0 +1,6 @@
1
+ export * from "./DevicePreviewPM";
2
+ export * from "./IsAuthoringPM";
3
+ export * from "./ShowBabylonInspectorPM";
4
+ export * from "./HasRedoPM";
5
+ export * from "./HasUndoPM";
6
+ export * from "./OrbitCameraPM";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./DevicePreviewPM"), exports);
14
+ __exportStar(require("./IsAuthoringPM"), exports);
15
+ __exportStar(require("./ShowBabylonInspectorPM"), exports);
16
+ __exportStar(require("./HasRedoPM"), exports);
17
+ __exportStar(require("./HasUndoPM"), exports);
18
+ __exportStar(require("./OrbitCameraPM"), exports);
@@ -0,0 +1,36 @@
1
+ import { OrbitCamera } from "../Entities";
2
+ export interface LerpOrbitCameraParameters {
3
+ duration: number;
4
+ finalRadius?: number;
5
+ finalBeta?: number;
6
+ finalAlpha?: number;
7
+ finalTarget?: {
8
+ x: number;
9
+ y: number;
10
+ z: number;
11
+ };
12
+ onComplete?: () => void;
13
+ onAbort?: () => void;
14
+ }
15
+ export declare class LerpOrbitCamera {
16
+ get isLerping(): boolean;
17
+ private _isLerping;
18
+ private orbitCamera;
19
+ private easeFn;
20
+ private lerpDuration;
21
+ private lerpRadius;
22
+ private lerpBeta;
23
+ private lerpAlpha;
24
+ private lerpX;
25
+ private lerpY;
26
+ private lerpZ;
27
+ private onComplete?;
28
+ private onAbort?;
29
+ private interval;
30
+ private chrono;
31
+ private delta;
32
+ cancelLerp: () => void;
33
+ private onTick;
34
+ constructor(orbitCamera: OrbitCamera, easeFn: (normalizedTime: number) => number, parameters: LerpOrbitCameraParameters);
35
+ private makeLerpNumber;
36
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LerpOrbitCamera = void 0;
4
+ const Entities_1 = require("../Entities");
5
+ class LerpOrbitCamera {
6
+ constructor(orbitCamera, easeFn, parameters) {
7
+ var _a, _b, _c;
8
+ this._isLerping = false;
9
+ this.chrono = 0;
10
+ this.delta = 10;
11
+ this.cancelLerp = () => {
12
+ if (!this._isLerping)
13
+ return;
14
+ clearInterval(this.interval);
15
+ if (this.onAbort) {
16
+ this.onAbort();
17
+ }
18
+ this._isLerping = false;
19
+ };
20
+ this.onTick = () => {
21
+ this.chrono = this.chrono + this.delta / 1000;
22
+ let nomralizedTime = this.chrono / this.lerpDuration;
23
+ if (nomralizedTime > 1) {
24
+ nomralizedTime = 1;
25
+ }
26
+ const percent = this.easeFn(nomralizedTime);
27
+ this.orbitCamera.radius = this.lerpRadius(percent);
28
+ this.orbitCamera.beta = this.lerpBeta(percent);
29
+ this.orbitCamera.alpha = this.lerpAlpha(percent);
30
+ const x = this.lerpX(percent);
31
+ const y = this.lerpY(percent);
32
+ const z = this.lerpZ(percent);
33
+ this.orbitCamera.target = new Entities_1.Vector3(x, y, z);
34
+ if (nomralizedTime >= 1) {
35
+ clearInterval(this.interval);
36
+ if (this.onComplete) {
37
+ this.onComplete();
38
+ }
39
+ this._isLerping = false;
40
+ this.orbitCamera.lerpCompleted();
41
+ }
42
+ };
43
+ this.orbitCamera = orbitCamera;
44
+ this.easeFn = easeFn;
45
+ this.lerpDuration = parameters.duration;
46
+ this.onComplete = parameters.onComplete;
47
+ this.onAbort = parameters.onAbort;
48
+ this.lerpRadius = this.makeLerpNumber(this.orbitCamera.radius, parameters.finalRadius);
49
+ this.lerpBeta = this.makeLerpNumber(this.orbitCamera.beta, parameters.finalBeta);
50
+ this.lerpAlpha = this.makeLerpNumber(this.orbitCamera.alpha, parameters.finalAlpha);
51
+ this.lerpX = this.makeLerpNumber(this.orbitCamera.target.x, (_a = parameters.finalTarget) === null || _a === void 0 ? void 0 : _a.x);
52
+ this.lerpY = this.makeLerpNumber(this.orbitCamera.target.y, (_b = parameters.finalTarget) === null || _b === void 0 ? void 0 : _b.y);
53
+ this.lerpZ = this.makeLerpNumber(this.orbitCamera.target.z, (_c = parameters.finalTarget) === null || _c === void 0 ? void 0 : _c.z);
54
+ this.interval = setInterval(() => {
55
+ this.onTick();
56
+ }, this.delta);
57
+ this.orbitCamera.registerLerp(this);
58
+ this._isLerping = true;
59
+ }
60
+ get isLerping() {
61
+ return this._isLerping;
62
+ }
63
+ makeLerpNumber(initial, final) {
64
+ const actualFinal = final !== null && final !== void 0 ? final : initial;
65
+ return function Lerp(percent) {
66
+ const range = actualFinal - initial;
67
+ return initial + range * percent;
68
+ };
69
+ }
70
+ }
71
+ exports.LerpOrbitCamera = LerpOrbitCamera;
@@ -0,0 +1,21 @@
1
+ import { OrbitCamera, SerializedSystem, StateMachine } from "../Entities";
2
+ export declare class SerializedCamera implements SerializedSystem {
3
+ name: string;
4
+ seriliziationVersion: number;
5
+ private orbitCamera;
6
+ private stateMachine;
7
+ private defaultState?;
8
+ getSystemState(): object;
9
+ applySystemState(serializedState: object, version: number, transitionTime: number): void;
10
+ applyDefaultState(transitionDuration: number): void;
11
+ private applyV1Data;
12
+ constructor(orbitCamera: OrbitCamera, stateMachine: StateMachine, defaultState?: CameraDataV1);
13
+ }
14
+ export interface CameraDataV1 {
15
+ alpha: number;
16
+ beta: number;
17
+ radius: number;
18
+ target_x: number;
19
+ target_y: number;
20
+ target_z: number;
21
+ }