@vived/app 2.49.0 → 2.50.1

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 (77) hide show
  1. package/lib/Entities/Babylon.js +2 -2
  2. package/lib/Entities/BaseApp.js +1 -1
  3. package/lib/Entities/FocusCamera.d.ts +70 -0
  4. package/lib/Entities/FocusCamera.js +272 -0
  5. package/lib/Entities/FramedScreen.js +1 -1
  6. package/lib/Entities/FramedScreenContainer.js +2 -2
  7. package/lib/Entities/HoverLabels.js +1 -1
  8. package/lib/Entities/Memoized/MemoizedAngle.d.ts +9 -0
  9. package/lib/Entities/Memoized/MemoizedAngle.js +22 -0
  10. package/lib/Entities/Memoized/MemoizedBoolean.d.ts +8 -0
  11. package/lib/Entities/Memoized/MemoizedBoolean.js +22 -0
  12. package/lib/Entities/{MemoizedColor.d.ts → Memoized/MemoizedColor.d.ts} +1 -1
  13. package/lib/Entities/{MemoizedColor.js → Memoized/MemoizedColor.js} +1 -1
  14. package/lib/Entities/Memoized/MemoizedNumber.d.ts +8 -0
  15. package/lib/Entities/Memoized/MemoizedNumber.js +22 -0
  16. package/lib/Entities/Memoized/MemoizedQuaternion.d.ts +9 -0
  17. package/lib/Entities/Memoized/MemoizedQuaternion.js +23 -0
  18. package/lib/Entities/Memoized/MemoizedString.d.ts +8 -0
  19. package/lib/Entities/Memoized/MemoizedString.js +22 -0
  20. package/lib/Entities/Memoized/MemoizedVector2.d.ts +9 -0
  21. package/lib/Entities/Memoized/MemoizedVector2.js +23 -0
  22. package/lib/Entities/Memoized/MemoizedVector3.d.ts +9 -0
  23. package/lib/Entities/Memoized/MemoizedVector3.js +23 -0
  24. package/lib/Entities/MeshModel.d.ts +68 -0
  25. package/lib/Entities/MeshModel.js +174 -0
  26. package/lib/Entities/ModelObject.d.ts +10 -0
  27. package/lib/Entities/ModelObject.js +42 -0
  28. package/lib/Entities/SceneModel.js +4 -4
  29. package/lib/Entities/SceneModelMesh.d.ts +16 -0
  30. package/lib/Entities/SceneModelMesh.js +25 -2
  31. package/lib/Entities/SceneModelRepo.js +2 -2
  32. package/lib/Entities/SceneObject.js +2 -2
  33. package/lib/Entities/Tool.js +1 -1
  34. package/lib/Entities/index.d.ts +8 -7
  35. package/lib/Entities/index.js +8 -7
  36. package/lib/PresentationManagers/FocusCameraPM.d.ts +15 -0
  37. package/lib/PresentationManagers/FocusCameraPM.js +31 -0
  38. package/lib/PresentationManagers/FocusCameraPosRotPM.d.ts +13 -0
  39. package/lib/PresentationManagers/FocusCameraPosRotPM.js +28 -0
  40. package/lib/PresentationManagers/SceneModel/SceneMeshOverlayPM.d.ts +15 -0
  41. package/lib/PresentationManagers/SceneModel/SceneMeshOverlayPM.js +34 -0
  42. package/lib/UseCases/FocusCamera/BumpDollyFocusCamera.d.ts +17 -0
  43. package/lib/UseCases/FocusCamera/BumpDollyFocusCamera.js +64 -0
  44. package/lib/UseCases/FocusCamera/LerpFocusCamera.d.ts +36 -0
  45. package/lib/UseCases/FocusCamera/LerpFocusCamera.js +71 -0
  46. package/lib/UseCases/FocusCamera/PinchDollyFocusCamera.d.ts +11 -0
  47. package/lib/UseCases/FocusCamera/PinchDollyFocusCamera.js +36 -0
  48. package/lib/UseCases/FocusCamera/PixelDollyFocusCamera.d.ts +11 -0
  49. package/lib/UseCases/FocusCamera/PixelDollyFocusCamera.js +36 -0
  50. package/lib/UseCases/FocusCamera/PixelOrbitFocusCamera.d.ts +11 -0
  51. package/lib/UseCases/FocusCamera/PixelOrbitFocusCamera.js +26 -0
  52. package/lib/UseCases/FocusCamera/PixelPlanePanFocusCamera.d.ts +11 -0
  53. package/lib/UseCases/FocusCamera/PixelPlanePanFocusCamera.js +33 -0
  54. package/lib/UseCases/FocusCamera/SerializeFocusCamera.d.ts +22 -0
  55. package/lib/UseCases/FocusCamera/SerializeFocusCamera.js +81 -0
  56. package/lib/UseCases/FocusCamera/index.d.ts +7 -0
  57. package/lib/UseCases/{SceneObject → FocusCamera}/index.js +7 -1
  58. package/lib/UseCases/SceneModel/SetSceneModelMeshOverlayColor.d.ts +2 -0
  59. package/lib/UseCases/SceneModel/SetSceneModelMeshOverlayColor.js +13 -0
  60. package/lib/UseCases/SceneModel/index.d.ts +1 -0
  61. package/lib/UseCases/SceneModel/index.js +1 -0
  62. package/package.json +1 -1
  63. package/lib/Entities/ModelMesh.d.ts +0 -53
  64. package/lib/Entities/ModelMesh.js +0 -106
  65. package/lib/Entities/SceneModelObject.d.ts +0 -40
  66. package/lib/Entities/SceneModelObject.js +0 -77
  67. package/lib/UseCases/SceneModel/PeelSceneMeshBase.d.ts +0 -20
  68. package/lib/UseCases/SceneModel/PeelSceneMeshBase.js +0 -66
  69. package/lib/UseCases/SceneModel/setActiveSceneModel.d.ts +0 -2
  70. package/lib/UseCases/SceneModel/setActiveSceneModel.js +0 -90
  71. package/lib/UseCases/SceneModel/setupSceneModelFromData.d.ts +0 -2
  72. package/lib/UseCases/SceneModel/setupSceneModelFromData.js +0 -72
  73. package/lib/UseCases/SceneObject/PeelSceneObjectBase.d.ts +0 -20
  74. package/lib/UseCases/SceneObject/PeelSceneObjectBase.js +0 -66
  75. package/lib/UseCases/SceneObject/index.d.ts +0 -1
  76. package/lib/UseCases/SceneRoot/initializeSceneRoot.d.ts +0 -2
  77. package/lib/UseCases/SceneRoot/initializeSceneRoot.js +0 -9
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BumpDollyFocusCamera = void 0;
4
+ const ValueObjects_1 = require("../../ValueObjects");
5
+ class BumpDollyFocusCamera {
6
+ constructor(focusCamera) {
7
+ this.focusCamera = focusCamera;
8
+ this.bumpDurationMS = 500;
9
+ this.bumpLerp = (p) => {
10
+ return p;
11
+ }; // Linear
12
+ this.bumpAmount = 0.1;
13
+ this.chrono = 0;
14
+ this.delta = 10;
15
+ this.initialRadius = 0;
16
+ this.finalRadius = 0;
17
+ this.onTick = () => {
18
+ this.chrono = this.chrono + this.delta;
19
+ let nomralizedTime = this.chrono / this.bumpDurationMS;
20
+ if (nomralizedTime > 1) {
21
+ nomralizedTime = 1;
22
+ }
23
+ const percent = this.bumpLerp(nomralizedTime);
24
+ const range = this.finalRadius - this.initialRadius;
25
+ const currentRadius = this.focusCamera.radius;
26
+ this.focusCamera.radius = this.initialRadius + range * percent;
27
+ if (this.pickPoint !== undefined) {
28
+ const percentChange = this.focusCamera.radius / currentRadius;
29
+ let pickToTarget = ValueObjects_1.Vector3.Subtract(this.focusCamera.target, this.pickPoint);
30
+ const newLength = pickToTarget.magnitued * percentChange;
31
+ pickToTarget = ValueObjects_1.Vector3.NewVectorOfLength(pickToTarget, newLength);
32
+ const newTargetPos = ValueObjects_1.Vector3.Add(this.pickPoint, pickToTarget);
33
+ this.focusCamera.target = newTargetPos;
34
+ }
35
+ if (nomralizedTime >= 1 && this.interval) {
36
+ this.focusCamera.radius = this.finalRadius;
37
+ clearInterval(this.interval);
38
+ this.interval = undefined;
39
+ this.pickPoint = undefined;
40
+ }
41
+ };
42
+ }
43
+ bump(direction, target) {
44
+ let delta = this.bumpAmount;
45
+ if (direction === "IN") {
46
+ delta *= -1;
47
+ }
48
+ this.initialRadius = this.focusCamera.radius;
49
+ if (this.interval) {
50
+ clearInterval(this.interval);
51
+ this.interval = undefined;
52
+ this.finalRadius = this.finalRadius + delta;
53
+ }
54
+ else {
55
+ this.finalRadius = this.initialRadius + delta;
56
+ }
57
+ this.chrono = 0;
58
+ this.pickPoint = target;
59
+ this.interval = setInterval(() => {
60
+ this.onTick();
61
+ }, 10);
62
+ }
63
+ }
64
+ exports.BumpDollyFocusCamera = BumpDollyFocusCamera;
@@ -0,0 +1,36 @@
1
+ import { FocusCamera } from "../../Entities";
2
+ export interface LerpFocusCameraParameters {
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 LerpFocusCamera {
16
+ get isLerping(): boolean;
17
+ private _isLerping;
18
+ private focusCamera;
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(focusCamera: FocusCamera, easeFn: (normalizedTime: number) => number, parameters: LerpFocusCameraParameters);
35
+ private makeLerpNumber;
36
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LerpFocusCamera = void 0;
4
+ const ValueObjects_1 = require("../../ValueObjects");
5
+ class LerpFocusCamera {
6
+ constructor(focusCamera, 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.focusCamera.radius = this.lerpRadius(percent);
28
+ this.focusCamera.beta = this.lerpBeta(percent);
29
+ this.focusCamera.alpha = this.lerpAlpha(percent);
30
+ const x = this.lerpX(percent);
31
+ const y = this.lerpY(percent);
32
+ const z = this.lerpZ(percent);
33
+ this.focusCamera.target = new ValueObjects_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.focusCamera.lerpCompleted();
41
+ }
42
+ };
43
+ this.focusCamera = focusCamera;
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.focusCamera.radius, parameters.finalRadius);
49
+ this.lerpBeta = this.makeLerpNumber(this.focusCamera.beta, parameters.finalBeta);
50
+ this.lerpAlpha = this.makeLerpNumber(this.focusCamera.alpha, parameters.finalAlpha);
51
+ this.lerpX = this.makeLerpNumber(this.focusCamera.target.x, (_a = parameters.finalTarget) === null || _a === void 0 ? void 0 : _a.x);
52
+ this.lerpY = this.makeLerpNumber(this.focusCamera.target.y, (_b = parameters.finalTarget) === null || _b === void 0 ? void 0 : _b.y);
53
+ this.lerpZ = this.makeLerpNumber(this.focusCamera.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.focusCamera.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.LerpFocusCamera = LerpFocusCamera;
@@ -0,0 +1,11 @@
1
+ import { FocusCamera } from "../../Entities";
2
+ import { Vector3 } from "../../ValueObjects";
3
+ export declare class PinchDollyFocusCamera {
4
+ private focusCamera;
5
+ sensitivity: number;
6
+ private previousDistanceBetweenTouches;
7
+ private pickPoint?;
8
+ doDolly: (distanceBetweenTouches: number) => void;
9
+ initializeDolly: (distanceBetweenTouches: number, pickPoint?: Vector3 | undefined) => void;
10
+ constructor(focusCamera: FocusCamera);
11
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PinchDollyFocusCamera = void 0;
4
+ const ValueObjects_1 = require("../../ValueObjects");
5
+ class PinchDollyFocusCamera {
6
+ constructor(focusCamera) {
7
+ this.focusCamera = focusCamera;
8
+ this.sensitivity = 0.05;
9
+ this.previousDistanceBetweenTouches = 0;
10
+ this.doDolly = (distanceBetweenTouches) => {
11
+ const pinchDelta = distanceBetweenTouches - this.previousDistanceBetweenTouches;
12
+ const deltaRadius = pinchDelta * this.sensitivity;
13
+ const currentRadius = this.focusCamera.radius;
14
+ this.focusCamera.radius = currentRadius - deltaRadius;
15
+ if (this.pickPoint !== undefined) {
16
+ const percentChange = this.focusCamera.radius / currentRadius;
17
+ let pickToTarget = ValueObjects_1.Vector3.Subtract(this.focusCamera.target, this.pickPoint);
18
+ const newLength = pickToTarget.magnitued * percentChange;
19
+ pickToTarget = ValueObjects_1.Vector3.NewVectorOfLength(pickToTarget, newLength);
20
+ const newTargetPos = ValueObjects_1.Vector3.Add(this.pickPoint, pickToTarget);
21
+ this.focusCamera.target = newTargetPos;
22
+ }
23
+ this.previousDistanceBetweenTouches = distanceBetweenTouches;
24
+ };
25
+ this.initializeDolly = (distanceBetweenTouches, pickPoint) => {
26
+ this.previousDistanceBetweenTouches = distanceBetweenTouches;
27
+ if (pickPoint) {
28
+ this.pickPoint = pickPoint;
29
+ }
30
+ else {
31
+ this.pickPoint = undefined;
32
+ }
33
+ };
34
+ }
35
+ }
36
+ exports.PinchDollyFocusCamera = PinchDollyFocusCamera;
@@ -0,0 +1,11 @@
1
+ import { FocusCamera } from "../../Entities";
2
+ import { Vector2, Vector3 } from "../../ValueObjects";
3
+ export declare class PixelDollyFocusCamera {
4
+ private focusCamera;
5
+ sensitivity: number;
6
+ private previousPixelPosition;
7
+ private pickPoint?;
8
+ doDolly: (pixelPosition: Vector2) => void;
9
+ initializeDolly: (pixelPosition: Vector2, pickPoint?: Vector3 | undefined) => void;
10
+ constructor(focusCamera: FocusCamera);
11
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PixelDollyFocusCamera = void 0;
4
+ const ValueObjects_1 = require("../../ValueObjects");
5
+ class PixelDollyFocusCamera {
6
+ constructor(focusCamera) {
7
+ this.focusCamera = focusCamera;
8
+ this.sensitivity = 0.05;
9
+ this.previousPixelPosition = ValueObjects_1.Vector2.Zero();
10
+ this.doDolly = (pixelPosition) => {
11
+ const pixelDeltaY = pixelPosition.y - this.previousPixelPosition.y;
12
+ const deltaRadius = pixelDeltaY * this.sensitivity;
13
+ const currentRadius = this.focusCamera.radius;
14
+ this.focusCamera.radius = currentRadius - deltaRadius;
15
+ if (this.pickPoint !== undefined) {
16
+ const percentChange = this.focusCamera.radius / currentRadius;
17
+ let pickToTarget = ValueObjects_1.Vector3.Subtract(this.focusCamera.target, this.pickPoint);
18
+ const newLength = pickToTarget.magnitued * percentChange;
19
+ pickToTarget = ValueObjects_1.Vector3.NewVectorOfLength(pickToTarget, newLength);
20
+ const newTargetPos = ValueObjects_1.Vector3.Add(this.pickPoint, pickToTarget);
21
+ this.focusCamera.target = newTargetPos;
22
+ }
23
+ this.previousPixelPosition = pixelPosition;
24
+ };
25
+ this.initializeDolly = (pixelPosition, pickPoint) => {
26
+ this.previousPixelPosition = pixelPosition;
27
+ if (pickPoint) {
28
+ this.pickPoint = pickPoint;
29
+ }
30
+ else {
31
+ this.pickPoint = undefined;
32
+ }
33
+ };
34
+ }
35
+ }
36
+ exports.PixelDollyFocusCamera = PixelDollyFocusCamera;
@@ -0,0 +1,11 @@
1
+ import { FocusCamera } from "../../Entities";
2
+ import { Vector2, Vector3 } from "../../ValueObjects";
3
+ export declare class PixelOrbitFocusCamera {
4
+ private focusCamera;
5
+ sensitivity: number;
6
+ private previousPixelPos?;
7
+ private pickPoint?;
8
+ doOrbit: (pixelPosition: Vector2) => void;
9
+ initializeOrbit: (initialPixelPos: Vector2, pickPoint?: Vector3 | undefined) => void;
10
+ constructor(focusCamera: FocusCamera);
11
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PixelOrbitFocusCamera = void 0;
4
+ const ValueObjects_1 = require("../../ValueObjects");
5
+ class PixelOrbitFocusCamera {
6
+ constructor(focusCamera) {
7
+ this.focusCamera = focusCamera;
8
+ this.sensitivity = 0.5;
9
+ this.doOrbit = (pixelPosition) => {
10
+ if (!this.previousPixelPos) {
11
+ console.error("[PixelOrbitFocusCamera] You must initialize first!");
12
+ return;
13
+ }
14
+ const pixelChange = ValueObjects_1.Vector2.Subtract(pixelPosition, this.previousPixelPos);
15
+ this.focusCamera.alpha += pixelChange.x * this.sensitivity;
16
+ this.focusCamera.beta += pixelChange.y * this.sensitivity;
17
+ this.previousPixelPos = pixelPosition;
18
+ };
19
+ this.initializeOrbit = (initialPixelPos, pickPoint) => {
20
+ this.previousPixelPos = initialPixelPos;
21
+ this.pickPoint = pickPoint;
22
+ this.focusCamera.cancelLerp();
23
+ };
24
+ }
25
+ }
26
+ exports.PixelOrbitFocusCamera = PixelOrbitFocusCamera;
@@ -0,0 +1,11 @@
1
+ import { Babylon, FocusCamera } from "../../Entities";
2
+ import { ParametricPlane, Vector2 } from "../../ValueObjects";
3
+ export declare class PixelPlanePanFocusCamera {
4
+ private focusCamera;
5
+ private babylon;
6
+ private plane?;
7
+ private previousPixelPos?;
8
+ doPan: (pixelPosition: Vector2) => void;
9
+ initializePan: (initialPixelPos: Vector2, panPlane: ParametricPlane) => void;
10
+ constructor(focusCamera: FocusCamera, babylon: Babylon);
11
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PixelPlanePanFocusCamera = void 0;
4
+ const ValueObjects_1 = require("../../ValueObjects");
5
+ class PixelPlanePanFocusCamera {
6
+ constructor(focusCamera, babylon) {
7
+ this.focusCamera = focusCamera;
8
+ this.babylon = babylon;
9
+ this.doPan = (pixelPosition) => {
10
+ if (!this.plane || !this.previousPixelPos) {
11
+ console.error("[PixelPlanePan_OrbitCamera] You must initialize first!");
12
+ return;
13
+ }
14
+ const initialRay = this.babylon.sceneRay(this.previousPixelPos);
15
+ const finalRay = this.babylon.sceneRay(pixelPosition);
16
+ const p1 = this.plane.intersectLine(initialRay);
17
+ const p2 = this.plane.intersectLine(finalRay);
18
+ if (!p1 || !p2)
19
+ return;
20
+ const delta = ValueObjects_1.Vector3.Subtract(p2, p1);
21
+ const currentTarget = this.focusCamera.target;
22
+ const newTarget = new ValueObjects_1.Vector3(currentTarget.x - delta.x, currentTarget.y - delta.y, currentTarget.z - delta.z);
23
+ this.focusCamera.target = new ValueObjects_1.Vector3(newTarget.x, newTarget.y, newTarget.z);
24
+ this.previousPixelPos = pixelPosition;
25
+ };
26
+ this.initializePan = (initialPixelPos, panPlane) => {
27
+ this.plane = panPlane;
28
+ this.previousPixelPos = initialPixelPos;
29
+ this.focusCamera.cancelLerp();
30
+ };
31
+ }
32
+ }
33
+ exports.PixelPlanePanFocusCamera = PixelPlanePanFocusCamera;
@@ -0,0 +1,22 @@
1
+ import { FocusCamera, SerializedSystem, StateMachine } from "../../Entities";
2
+ export declare class SerializeFocusCamera implements SerializedSystem {
3
+ name: string;
4
+ seriliziationVersion: number;
5
+ private focusCamera;
6
+ private stateMachine;
7
+ getSystemState(): object;
8
+ applySystemState(serializedState: object, version: number, transitionTime: number): void;
9
+ applyDefaultState(transitionDuration: number): void;
10
+ private applyV1Data;
11
+ private applyImmediate;
12
+ private applyLerp;
13
+ constructor(focusCamera: FocusCamera, stateMachine: StateMachine);
14
+ }
15
+ export interface FocusCameraDataV1 {
16
+ alpha: number;
17
+ beta: number;
18
+ radius: number;
19
+ target_x: number;
20
+ target_y: number;
21
+ target_z: number;
22
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SerializeFocusCamera = void 0;
4
+ const _1 = require(".");
5
+ const ValueObjects_1 = require("../../ValueObjects");
6
+ class SerializeFocusCamera {
7
+ constructor(focusCamera, stateMachine) {
8
+ this.name = "focusCamera";
9
+ this.seriliziationVersion = 1;
10
+ this.focusCamera = focusCamera;
11
+ this.stateMachine = stateMachine;
12
+ stateMachine.registerSerializedSystem(this);
13
+ }
14
+ getSystemState() {
15
+ const data = {
16
+ alpha: this.focusCamera.alpha,
17
+ beta: this.focusCamera.beta,
18
+ radius: this.focusCamera.radius,
19
+ target_x: this.focusCamera.target.x,
20
+ target_y: this.focusCamera.target.y,
21
+ target_z: this.focusCamera.target.z,
22
+ };
23
+ return data;
24
+ }
25
+ applySystemState(serializedState, version, transitionTime) {
26
+ try {
27
+ if (version === 1) {
28
+ const castState = serializedState;
29
+ this.applyV1Data(castState, transitionTime);
30
+ }
31
+ else {
32
+ console.warn(`[SerializeFocusCamera] Unsupported version number ${version}. Defaulting`);
33
+ this.applyDefaultState(transitionTime);
34
+ }
35
+ }
36
+ catch (e) {
37
+ console.warn(`[SerializeFocusCamera] Caught when deserializing ${e}. Defaulting`);
38
+ this.applyDefaultState(transitionTime);
39
+ }
40
+ }
41
+ applyDefaultState(transitionDuration) {
42
+ const alpha = this.focusCamera.defaultAlpha;
43
+ const beta = this.focusCamera.defaultBeta;
44
+ const radius = this.focusCamera.defaultRadius;
45
+ const target = this.focusCamera.defaultTarget;
46
+ if (transitionDuration === 0) {
47
+ this.applyImmediate(alpha, beta, radius, target);
48
+ }
49
+ else {
50
+ this.applyLerp(alpha, beta, radius, target, transitionDuration);
51
+ }
52
+ }
53
+ applyV1Data(data, transitionTime) {
54
+ const { alpha, beta, radius, target_x, target_y, target_z } = data;
55
+ const target = new ValueObjects_1.Vector3(target_x, target_y, target_z);
56
+ if (transitionTime === 0) {
57
+ this.applyImmediate(alpha, beta, radius, target);
58
+ }
59
+ else {
60
+ this.applyLerp(alpha, beta, radius, target, transitionTime);
61
+ }
62
+ }
63
+ applyImmediate(alpha, beta, radius, target) {
64
+ this.focusCamera.cancelLerp();
65
+ this.focusCamera.alpha = alpha;
66
+ this.focusCamera.beta = beta;
67
+ this.focusCamera.radius = radius;
68
+ this.focusCamera.target = target;
69
+ }
70
+ applyLerp(alpha, beta, radius, target, transitionTime) {
71
+ const lerpParams = {
72
+ duration: transitionTime,
73
+ finalRadius: radius,
74
+ finalBeta: beta,
75
+ finalAlpha: alpha,
76
+ finalTarget: target,
77
+ };
78
+ new _1.LerpFocusCamera(this.focusCamera, this.stateMachine.transitionEaseFunction, lerpParams);
79
+ }
80
+ }
81
+ exports.SerializeFocusCamera = SerializeFocusCamera;
@@ -0,0 +1,7 @@
1
+ export * from "./PixelPlanePanFocusCamera";
2
+ export * from "./LerpFocusCamera";
3
+ export * from "./SerializeFocusCamera";
4
+ export * from "./PixelDollyFocusCamera";
5
+ export * from "./BumpDollyFocusCamera";
6
+ export * from "./PinchDollyFocusCamera";
7
+ export * from "./PixelOrbitFocusCamera";
@@ -10,4 +10,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./PeelSceneObjectBase"), exports);
13
+ __exportStar(require("./PixelPlanePanFocusCamera"), exports);
14
+ __exportStar(require("./LerpFocusCamera"), exports);
15
+ __exportStar(require("./SerializeFocusCamera"), exports);
16
+ __exportStar(require("./PixelDollyFocusCamera"), exports);
17
+ __exportStar(require("./BumpDollyFocusCamera"), exports);
18
+ __exportStar(require("./PinchDollyFocusCamera"), exports);
19
+ __exportStar(require("./PixelOrbitFocusCamera"), exports);
@@ -0,0 +1,2 @@
1
+ import { Color, SceneModel } from "../../Entities";
2
+ export declare function makeSetSceneModelMeshOverlayColor(sceneModel: SceneModel): (id: string, color: Color | undefined) => void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeSetSceneModelMeshOverlayColor = void 0;
4
+ function makeSetSceneModelMeshOverlayColor(sceneModel) {
5
+ return (id, color) => {
6
+ const sceneModelMesh = sceneModel.getMeshById(id);
7
+ if (!sceneModelMesh) {
8
+ return;
9
+ }
10
+ sceneModelMesh.overlayColor = color;
11
+ };
12
+ }
13
+ exports.makeSetSceneModelMeshOverlayColor = makeSetSceneModelMeshOverlayColor;
@@ -2,3 +2,4 @@ export * from "./modelDataLoader";
2
2
  export * from "./loadNewModel";
3
3
  export * from "./SerializeActiveModel";
4
4
  export * from "./SetMeshesEnabledHook";
5
+ export * from "./SetSceneModelMeshOverlayColor";
@@ -14,3 +14,4 @@ __exportStar(require("./modelDataLoader"), exports);
14
14
  __exportStar(require("./loadNewModel"), exports);
15
15
  __exportStar(require("./SerializeActiveModel"), exports);
16
16
  __exportStar(require("./SetMeshesEnabledHook"), exports);
17
+ __exportStar(require("./SetSceneModelMeshOverlayColor"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vived/app",
3
- "version": "2.49.0",
3
+ "version": "2.50.1",
4
4
  "description": "Public package for the VIVED Learning App system",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -1,53 +0,0 @@
1
- import { Vector3 } from "../ValueObjects";
2
- import { ObservableEntity } from "./ObservableEntity";
3
- import { SceneObject } from "./SceneObject";
4
- export declare abstract class ModelMesh extends ObservableEntity {
5
- abstract readonly id: string;
6
- abstract label: string;
7
- abstract position: Vector3;
8
- abstract get canBeStuck(): boolean;
9
- abstract stick(durationMS: number, easeFn: (val: number) => number, onStickComplete?: () => void): void;
10
- abstract shown: boolean;
11
- abstract meshPaths: string[];
12
- abstract addMeshPath(path: string): void;
13
- abstract hasMeshPath(path: string): boolean;
14
- abstract removeMeshPath(path: string): void;
15
- abstract toData(): ModelMeshDTO;
16
- abstract applyData(data: ModelMeshDTO): void;
17
- abstract readonly sceneObject: SceneObject;
18
- }
19
- export declare function makeModelMesh(dto: ModelMeshDTO, sceneObject: SceneObject): ModelMeshImp;
20
- declare class ModelMeshImp extends ModelMesh {
21
- readonly id: string;
22
- readonly sceneObject: SceneObject;
23
- get label(): string;
24
- set label(l: string);
25
- get position(): Vector3;
26
- set position(p: Vector3);
27
- get shown(): boolean;
28
- set shown(show: boolean);
29
- get canBeStuck(): boolean;
30
- stick: (durationMS: number, easeFn: (val: number) => number, onStickComplete?: (() => void) | undefined) => void;
31
- private _meshPaths;
32
- get meshPaths(): string[];
33
- set meshPaths(paths: string[]);
34
- addMeshPath: (path: string) => void;
35
- hasMeshPath: (path: string) => boolean;
36
- removeMeshPath: (path: string) => void;
37
- toData: () => ModelMeshDTO;
38
- applyData: (data: ModelMeshDTO) => void;
39
- constructor(dto: ModelMeshDTO, sceneObject: SceneObject);
40
- }
41
- export declare type ModelMeshDTO = ModelMeshDTOv0 | ModelMeshDTOv1;
42
- export interface ModelMeshDTOv1 {
43
- version: number;
44
- id: string;
45
- meshPaths: string[];
46
- label: string;
47
- }
48
- export interface ModelMeshDTOv0 {
49
- id: string;
50
- meshPaths: string[];
51
- label: string;
52
- }
53
- export {};