@vived/app 2.48.1 → 2.50.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.
- package/lib/Entities/Babylon.js +2 -2
- package/lib/Entities/BaseApp.js +1 -1
- package/lib/Entities/FramedScreen.js +1 -1
- package/lib/Entities/FramedScreenContainer.js +2 -2
- package/lib/Entities/HoverLabels.js +1 -1
- package/lib/Entities/Memoized/MemoizedAngle.d.ts +9 -0
- package/lib/Entities/Memoized/MemoizedAngle.js +22 -0
- package/lib/Entities/Memoized/MemoizedBoolean.d.ts +8 -0
- package/lib/Entities/Memoized/MemoizedBoolean.js +22 -0
- package/lib/Entities/Memoized/MemoizedColor.d.ts +9 -0
- package/lib/Entities/Memoized/MemoizedColor.js +23 -0
- package/lib/Entities/Memoized/MemoizedNumber.d.ts +8 -0
- package/lib/Entities/Memoized/MemoizedNumber.js +22 -0
- package/lib/Entities/Memoized/MemoizedQuaternion.d.ts +9 -0
- package/lib/Entities/Memoized/MemoizedQuaternion.js +23 -0
- package/lib/Entities/Memoized/MemoizedString.d.ts +8 -0
- package/lib/Entities/Memoized/MemoizedString.js +22 -0
- package/lib/Entities/Memoized/MemoizedVector2.d.ts +9 -0
- package/lib/Entities/Memoized/MemoizedVector2.js +23 -0
- package/lib/Entities/Memoized/MemoizedVector3.d.ts +9 -0
- package/lib/Entities/Memoized/MemoizedVector3.js +23 -0
- package/lib/Entities/MemoizedColor.d.ts +9 -0
- package/lib/Entities/MemoizedColor.js +23 -0
- package/lib/Entities/ModelMesh.d.ts +53 -0
- package/lib/Entities/ModelMesh.js +106 -0
- package/lib/Entities/SceneModel.js +4 -4
- package/lib/Entities/SceneModelMesh.js +1 -1
- package/lib/Entities/SceneModelObject.d.ts +40 -0
- package/lib/Entities/SceneModelObject.js +77 -0
- package/lib/Entities/SceneModelRepo.js +2 -2
- package/lib/Entities/SceneObject.js +2 -2
- package/lib/Entities/Tool.js +1 -1
- package/lib/Entities/index.d.ts +8 -6
- package/lib/Entities/index.js +8 -6
- package/lib/PresentationManagers/SceneModel/SceneModelPM.d.ts +15 -0
- package/lib/PresentationManagers/SceneModel/SceneModelPM.js +36 -0
- package/lib/PresentationManagers/SceneModel/index.d.ts +1 -0
- package/lib/{UseCases/FocusCamera → PresentationManagers/SceneModel}/index.js +1 -7
- package/lib/PresentationManagers/index.d.ts +1 -0
- package/lib/PresentationManagers/index.js +1 -0
- package/lib/UseCases/SceneModel/PeelSceneMeshBase.d.ts +20 -0
- package/lib/UseCases/SceneModel/PeelSceneMeshBase.js +66 -0
- package/lib/UseCases/SceneModel/setActiveSceneModel.d.ts +2 -0
- package/lib/UseCases/SceneModel/setActiveSceneModel.js +90 -0
- package/lib/UseCases/SceneModel/setupSceneModelFromData.d.ts +2 -0
- package/lib/UseCases/SceneModel/setupSceneModelFromData.js +72 -0
- package/lib/UseCases/SceneObject/PeelSceneObjectBase.d.ts +20 -0
- package/lib/UseCases/SceneObject/PeelSceneObjectBase.js +66 -0
- package/lib/UseCases/SceneObject/index.d.ts +1 -0
- package/lib/UseCases/SceneObject/index.js +13 -0
- package/lib/UseCases/SceneRoot/initializeSceneRoot.d.ts +2 -0
- package/lib/UseCases/SceneRoot/initializeSceneRoot.js +9 -0
- package/lib/ValueObjects/Color.d.ts +17 -0
- package/lib/ValueObjects/Color.js +31 -0
- package/package.json +1 -1
- package/lib/Entities/FocusCamera.d.ts +0 -70
- package/lib/Entities/FocusCamera.js +0 -272
- package/lib/Entities/MeshModel.d.ts +0 -68
- package/lib/Entities/MeshModel.js +0 -174
- package/lib/Entities/ModelObject.d.ts +0 -10
- package/lib/Entities/ModelObject.js +0 -42
- package/lib/PresentationManagers/FocusCameraPM.d.ts +0 -15
- package/lib/PresentationManagers/FocusCameraPM.js +0 -31
- package/lib/PresentationManagers/FocusCameraPosRotPM.d.ts +0 -13
- package/lib/PresentationManagers/FocusCameraPosRotPM.js +0 -28
- package/lib/UseCases/FocusCamera/BumpDollyFocusCamera.d.ts +0 -17
- package/lib/UseCases/FocusCamera/BumpDollyFocusCamera.js +0 -64
- package/lib/UseCases/FocusCamera/LerpFocusCamera.d.ts +0 -36
- package/lib/UseCases/FocusCamera/LerpFocusCamera.js +0 -71
- package/lib/UseCases/FocusCamera/PinchDollyFocusCamera.d.ts +0 -11
- package/lib/UseCases/FocusCamera/PinchDollyFocusCamera.js +0 -36
- package/lib/UseCases/FocusCamera/PixelDollyFocusCamera.d.ts +0 -11
- package/lib/UseCases/FocusCamera/PixelDollyFocusCamera.js +0 -36
- package/lib/UseCases/FocusCamera/PixelOrbitFocusCamera.d.ts +0 -11
- package/lib/UseCases/FocusCamera/PixelOrbitFocusCamera.js +0 -26
- package/lib/UseCases/FocusCamera/PixelPlanePanFocusCamera.d.ts +0 -11
- package/lib/UseCases/FocusCamera/PixelPlanePanFocusCamera.js +0 -33
- package/lib/UseCases/FocusCamera/SerializeFocusCamera.d.ts +0 -22
- package/lib/UseCases/FocusCamera/SerializeFocusCamera.js +0 -81
- package/lib/UseCases/FocusCamera/index.d.ts +0 -7
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeSceneModelRepo = exports.SceneModelRepo = void 0;
|
|
4
|
-
const MemoizedBoolean_1 = require("./MemoizedBoolean");
|
|
5
|
-
const MemoizedString_1 = require("./MemoizedString");
|
|
4
|
+
const MemoizedBoolean_1 = require("./Memoized/MemoizedBoolean");
|
|
5
|
+
const MemoizedString_1 = require("./Memoized/MemoizedString");
|
|
6
6
|
const ObservableEntityRepo_1 = require("./ObservableEntityRepo");
|
|
7
7
|
class SceneModelRepo extends ObservableEntityRepo_1.ObservableEntityRepo {
|
|
8
8
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeSceneObject = exports.SceneObject = void 0;
|
|
4
|
-
const MemoizedBoolean_1 = require("./MemoizedBoolean");
|
|
5
|
-
const MemoizedString_1 = require("./MemoizedString");
|
|
4
|
+
const MemoizedBoolean_1 = require("./Memoized/MemoizedBoolean");
|
|
5
|
+
const MemoizedString_1 = require("./Memoized/MemoizedString");
|
|
6
6
|
const ObservableEntity_1 = require("./ObservableEntity");
|
|
7
7
|
const TransformNode_1 = require("./TransformNode");
|
|
8
8
|
class SceneObject extends ObservableEntity_1.ObservableEntity {
|
package/lib/Entities/Tool.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeTool = exports.Tool = exports.ToolState = void 0;
|
|
4
|
-
const MemoizedString_1 = require("./MemoizedString");
|
|
4
|
+
const MemoizedString_1 = require("./Memoized/MemoizedString");
|
|
5
5
|
const ObservableEntity_1 = require("./ObservableEntity");
|
|
6
6
|
var ToolState;
|
|
7
7
|
(function (ToolState) {
|
package/lib/Entities/index.d.ts
CHANGED
|
@@ -8,12 +8,6 @@ export * from "./FramedScreen";
|
|
|
8
8
|
export * from "./FramedScreenContainer";
|
|
9
9
|
export * from "./HoverLabels";
|
|
10
10
|
export * from "./KeyboardInput";
|
|
11
|
-
export * from "./MemoizedBoolean";
|
|
12
|
-
export * from "./MemoizedNumber";
|
|
13
|
-
export * from "./MemoizedQuaternion";
|
|
14
|
-
export * from "./MemoizedString";
|
|
15
|
-
export * from "./MemoizedVector2";
|
|
16
|
-
export * from "./MemoizedVector3";
|
|
17
11
|
export * from "./MessageSystem";
|
|
18
12
|
export * from "./MouseInput";
|
|
19
13
|
export * from "./ObservableEntity";
|
|
@@ -34,3 +28,11 @@ export * from "./TouchInput";
|
|
|
34
28
|
export * from "./TransformNode";
|
|
35
29
|
export * from "./UndoRedo";
|
|
36
30
|
export * from "./WorkPlane";
|
|
31
|
+
export * from "./Memoized/MemoizedAngle";
|
|
32
|
+
export * from "./Memoized/MemoizedBoolean";
|
|
33
|
+
export * from "./Memoized/MemoizedColor";
|
|
34
|
+
export * from "./Memoized/MemoizedNumber";
|
|
35
|
+
export * from "./Memoized/MemoizedQuaternion";
|
|
36
|
+
export * from "./Memoized/MemoizedString";
|
|
37
|
+
export * from "./Memoized/MemoizedVector2";
|
|
38
|
+
export * from "./Memoized/MemoizedVector3";
|
package/lib/Entities/index.js
CHANGED
|
@@ -20,12 +20,6 @@ __exportStar(require("./FramedScreen"), exports);
|
|
|
20
20
|
__exportStar(require("./FramedScreenContainer"), exports);
|
|
21
21
|
__exportStar(require("./HoverLabels"), exports);
|
|
22
22
|
__exportStar(require("./KeyboardInput"), exports);
|
|
23
|
-
__exportStar(require("./MemoizedBoolean"), exports);
|
|
24
|
-
__exportStar(require("./MemoizedNumber"), exports);
|
|
25
|
-
__exportStar(require("./MemoizedQuaternion"), exports);
|
|
26
|
-
__exportStar(require("./MemoizedString"), exports);
|
|
27
|
-
__exportStar(require("./MemoizedVector2"), exports);
|
|
28
|
-
__exportStar(require("./MemoizedVector3"), exports);
|
|
29
23
|
__exportStar(require("./MessageSystem"), exports);
|
|
30
24
|
__exportStar(require("./MouseInput"), exports);
|
|
31
25
|
__exportStar(require("./ObservableEntity"), exports);
|
|
@@ -46,3 +40,11 @@ __exportStar(require("./TouchInput"), exports);
|
|
|
46
40
|
__exportStar(require("./TransformNode"), exports);
|
|
47
41
|
__exportStar(require("./UndoRedo"), exports);
|
|
48
42
|
__exportStar(require("./WorkPlane"), exports);
|
|
43
|
+
__exportStar(require("./Memoized/MemoizedAngle"), exports);
|
|
44
|
+
__exportStar(require("./Memoized/MemoizedBoolean"), exports);
|
|
45
|
+
__exportStar(require("./Memoized/MemoizedColor"), exports);
|
|
46
|
+
__exportStar(require("./Memoized/MemoizedNumber"), exports);
|
|
47
|
+
__exportStar(require("./Memoized/MemoizedQuaternion"), exports);
|
|
48
|
+
__exportStar(require("./Memoized/MemoizedString"), exports);
|
|
49
|
+
__exportStar(require("./Memoized/MemoizedVector2"), exports);
|
|
50
|
+
__exportStar(require("./Memoized/MemoizedVector3"), exports);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SceneModelRepo } from "../../Entities";
|
|
2
|
+
import { PresentionManager } from "../PresentationManager";
|
|
3
|
+
export interface SceneModelVM {
|
|
4
|
+
activeSceneModelID: string;
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare class SceneModelPM extends PresentionManager {
|
|
8
|
+
private sceneModelRepo;
|
|
9
|
+
private updateView;
|
|
10
|
+
private previousVM?;
|
|
11
|
+
doUpdateView: () => void;
|
|
12
|
+
private vmHasChanged;
|
|
13
|
+
constructor(sceneModelRepo: SceneModelRepo, updateView: (vm: SceneModelVM) => void);
|
|
14
|
+
}
|
|
15
|
+
export declare const defaultSceneModelVM: SceneModelVM;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultSceneModelVM = exports.SceneModelPM = void 0;
|
|
4
|
+
const PresentationManager_1 = require("../PresentationManager");
|
|
5
|
+
class SceneModelPM extends PresentationManager_1.PresentionManager {
|
|
6
|
+
constructor(sceneModelRepo, updateView) {
|
|
7
|
+
super(sceneModelRepo);
|
|
8
|
+
this.sceneModelRepo = sceneModelRepo;
|
|
9
|
+
this.updateView = updateView;
|
|
10
|
+
this.doUpdateView = () => {
|
|
11
|
+
const sceneModelID = this.sceneModelRepo.activeModelID;
|
|
12
|
+
const vm = {
|
|
13
|
+
activeSceneModelID: sceneModelID,
|
|
14
|
+
isLoading: this.sceneModelRepo.isLoadingSceneModel,
|
|
15
|
+
};
|
|
16
|
+
if (!this.vmHasChanged(vm))
|
|
17
|
+
return;
|
|
18
|
+
this.updateView(vm);
|
|
19
|
+
this.previousVM = vm;
|
|
20
|
+
};
|
|
21
|
+
this.doUpdateView();
|
|
22
|
+
}
|
|
23
|
+
vmHasChanged(vm) {
|
|
24
|
+
if (this.previousVM === undefined)
|
|
25
|
+
return true;
|
|
26
|
+
if (this.previousVM.activeSceneModelID !== vm.activeSceneModelID ||
|
|
27
|
+
this.previousVM.isLoading !== vm.isLoading)
|
|
28
|
+
return true;
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.SceneModelPM = SceneModelPM;
|
|
33
|
+
exports.defaultSceneModelVM = {
|
|
34
|
+
isLoading: false,
|
|
35
|
+
activeSceneModelID: "",
|
|
36
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./SceneModelPM";
|
|
@@ -10,10 +10,4 @@ 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("./
|
|
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);
|
|
13
|
+
__exportStar(require("./SceneModelPM"), exports);
|
|
@@ -6,6 +6,7 @@ export * from "./ShowBabylonInspectorPM";
|
|
|
6
6
|
export * from "./HasRedoPM";
|
|
7
7
|
export * from "./HasUndoPM";
|
|
8
8
|
export * from "./QuestionChallenge";
|
|
9
|
+
export * from "./SceneModel";
|
|
9
10
|
export * from "./SceneObject";
|
|
10
11
|
export * from "./ToolPM";
|
|
11
12
|
export * from "./TransformNodePM";
|
|
@@ -18,6 +18,7 @@ __exportStar(require("./ShowBabylonInspectorPM"), exports);
|
|
|
18
18
|
__exportStar(require("./HasRedoPM"), exports);
|
|
19
19
|
__exportStar(require("./HasUndoPM"), exports);
|
|
20
20
|
__exportStar(require("./QuestionChallenge"), exports);
|
|
21
|
+
__exportStar(require("./SceneModel"), exports);
|
|
21
22
|
__exportStar(require("./SceneObject"), exports);
|
|
22
23
|
__exportStar(require("./ToolPM"), exports);
|
|
23
24
|
__exportStar(require("./TransformNodePM"), exports);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Babylon, SceneModelRepo, TransformNode } from "../../Entities";
|
|
2
|
+
import { ParametricLine } from "../../ValueObjects";
|
|
3
|
+
export declare class PeelSceneMeshBase {
|
|
4
|
+
private babylon;
|
|
5
|
+
private sceneModelRepo;
|
|
6
|
+
get peeledSceneObjectID(): string | undefined;
|
|
7
|
+
private _sceneObject;
|
|
8
|
+
private _didPeel;
|
|
9
|
+
get didPeel(): boolean;
|
|
10
|
+
private _doPeel;
|
|
11
|
+
private _transformToPeel;
|
|
12
|
+
get peelingTransform(): TransformNode | undefined;
|
|
13
|
+
private _rootPos;
|
|
14
|
+
private _peelPlane;
|
|
15
|
+
private _pickOffset;
|
|
16
|
+
tryInitializePeel: (pickRay: ParametricLine) => void;
|
|
17
|
+
updatePeel: (pickRay: ParametricLine) => void;
|
|
18
|
+
stopPeel: () => void;
|
|
19
|
+
constructor(babylon: Babylon, sceneModelRepo: SceneModelRepo);
|
|
20
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PeelSceneMeshBase = void 0;
|
|
4
|
+
const ValueObjects_1 = require("../../ValueObjects");
|
|
5
|
+
class PeelSceneMeshBase {
|
|
6
|
+
constructor(babylon, sceneModelRepo) {
|
|
7
|
+
this.babylon = babylon;
|
|
8
|
+
this.sceneModelRepo = sceneModelRepo;
|
|
9
|
+
this._didPeel = false;
|
|
10
|
+
this._doPeel = false;
|
|
11
|
+
this._transformToPeel = undefined;
|
|
12
|
+
this._peelPlane = ValueObjects_1.ParametricPlane.XY();
|
|
13
|
+
this._pickOffset = ValueObjects_1.Vector3.Zero();
|
|
14
|
+
this.tryInitializePeel = (pickRay) => {
|
|
15
|
+
var _a, _b, _c, _d;
|
|
16
|
+
this._doPeel = false;
|
|
17
|
+
this._didPeel = false;
|
|
18
|
+
this._transformToPeel = undefined;
|
|
19
|
+
const sceneObjectID = this.babylon.sceneObjectRayPick(pickRay);
|
|
20
|
+
if (!sceneObjectID)
|
|
21
|
+
return;
|
|
22
|
+
const sceneObject = (_b = (_a = this.sceneModelRepo.activeModel) === null || _a === void 0 ? void 0 : _a.getMeshById(sceneObjectID)) === null || _b === void 0 ? void 0 : _b.sceneObject;
|
|
23
|
+
if (!sceneObject)
|
|
24
|
+
return;
|
|
25
|
+
this._sceneObject = sceneObject;
|
|
26
|
+
this._transformToPeel = sceneObject.transform;
|
|
27
|
+
const scenePick = this.babylon.sceneRayPick(pickRay);
|
|
28
|
+
if (!scenePick)
|
|
29
|
+
return;
|
|
30
|
+
const pickPlaneDirection = ValueObjects_1.Vector3.Backward();
|
|
31
|
+
const planePickPos = (_c = scenePick.worldPickPoint) !== null && _c !== void 0 ? _c : ValueObjects_1.Vector3.Zero();
|
|
32
|
+
this._peelPlane = ValueObjects_1.ParametricPlane.FromPointNormal(planePickPos, pickPlaneDirection);
|
|
33
|
+
const pick = (_d = this._peelPlane.intersectLine(pickRay)) !== null && _d !== void 0 ? _d : ValueObjects_1.Vector3.Zero();
|
|
34
|
+
this._rootPos = this._transformToPeel.worldPosition;
|
|
35
|
+
this._pickOffset = ValueObjects_1.Vector3.Subtract(this._rootPos, pick);
|
|
36
|
+
this._doPeel = true;
|
|
37
|
+
};
|
|
38
|
+
this.updatePeel = (pickRay) => {
|
|
39
|
+
var _a;
|
|
40
|
+
if (!this._doPeel)
|
|
41
|
+
return;
|
|
42
|
+
if (!this._transformToPeel)
|
|
43
|
+
return;
|
|
44
|
+
const pick = (_a = this._peelPlane.intersectLine(pickRay)) !== null && _a !== void 0 ? _a : ValueObjects_1.Vector3.Zero();
|
|
45
|
+
this._transformToPeel.worldPosition = ValueObjects_1.Vector3.Add(pick, this._pickOffset);
|
|
46
|
+
this._didPeel = true;
|
|
47
|
+
};
|
|
48
|
+
this.stopPeel = () => {
|
|
49
|
+
this._doPeel = false;
|
|
50
|
+
this._didPeel = false;
|
|
51
|
+
this._transformToPeel = undefined;
|
|
52
|
+
this._rootPos = undefined;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
get peeledSceneObjectID() {
|
|
56
|
+
var _a;
|
|
57
|
+
return (_a = this._sceneObject) === null || _a === void 0 ? void 0 : _a.id;
|
|
58
|
+
}
|
|
59
|
+
get didPeel() {
|
|
60
|
+
return this._didPeel;
|
|
61
|
+
}
|
|
62
|
+
get peelingTransform() {
|
|
63
|
+
return this._transformToPeel;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.PeelSceneMeshBase = PeelSceneMeshBase;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { AppDispatcher, SceneModel, SceneModelRepo, SceneObjectsRepo, SceneRoot } from "../../Entities";
|
|
2
|
+
export declare function makeSetActiveModel(sceneModelRepo: SceneModelRepo, sceneObjectRepo: SceneObjectsRepo, sceneRoot: SceneRoot, appDispatcher: AppDispatcher): (modelID: string) => Promise<SceneModel>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.makeSetActiveModel = void 0;
|
|
13
|
+
const Entities_1 = require("../../Entities");
|
|
14
|
+
function makeSetActiveModel(sceneModelRepo, sceneObjectRepo, sceneRoot, appDispatcher) {
|
|
15
|
+
return function setActiveSceneModel(modelID) {
|
|
16
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
+
let sceneModel = sceneModelRepo.get(modelID);
|
|
18
|
+
if (sceneModel === undefined) {
|
|
19
|
+
sceneModel = Entities_1.makeSceneModel(modelID);
|
|
20
|
+
sceneModelRepo.add(modelID, sceneModel);
|
|
21
|
+
}
|
|
22
|
+
sceneModelRepo.activeModelID = modelID;
|
|
23
|
+
if (sceneModel.state === Entities_1.SceneModelState.LOADING) {
|
|
24
|
+
return Promise.resolve(sceneModel);
|
|
25
|
+
}
|
|
26
|
+
if (sceneModel.state === Entities_1.SceneModelState.READY) {
|
|
27
|
+
setSceneObjectsEnabled(sceneObjectRepo, sceneModel);
|
|
28
|
+
return Promise.resolve(sceneModel);
|
|
29
|
+
}
|
|
30
|
+
sceneModel.error = undefined;
|
|
31
|
+
sceneModel.state = Entities_1.SceneModelState.LOADING;
|
|
32
|
+
sceneModelRepo.isLoadingSceneModel = true;
|
|
33
|
+
const dto = {
|
|
34
|
+
title: "Loading active model and data",
|
|
35
|
+
message: "Loading...",
|
|
36
|
+
};
|
|
37
|
+
const closeSpinner = yield appDispatcher.showSpinner(dto);
|
|
38
|
+
try {
|
|
39
|
+
const dataDTO = yield sceneModelRepo.dataLoader(modelID);
|
|
40
|
+
sceneModel.applyData(dataDTO);
|
|
41
|
+
sceneModel.getAllMeshes().forEach((meshObject) => {
|
|
42
|
+
var _a;
|
|
43
|
+
let so = sceneObjectRepo.get(meshObject.id);
|
|
44
|
+
if (!so) {
|
|
45
|
+
so = Entities_1.makeSceneObject(meshObject.id);
|
|
46
|
+
sceneObjectRepo.add(meshObject.id, so);
|
|
47
|
+
}
|
|
48
|
+
so.label = meshObject.label;
|
|
49
|
+
so.transform.parent = (_a = sceneRoot.sceneObject) === null || _a === void 0 ? void 0 : _a.transform;
|
|
50
|
+
so.notify();
|
|
51
|
+
});
|
|
52
|
+
yield sceneModelRepo.modelLoader(modelID);
|
|
53
|
+
setSceneObjectsEnabled(sceneObjectRepo, sceneModel);
|
|
54
|
+
sceneModel.state = Entities_1.SceneModelState.READY;
|
|
55
|
+
sceneModelRepo.isLoadingSceneModel = false;
|
|
56
|
+
closeSpinner();
|
|
57
|
+
return Promise.resolve(sceneModel);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
const error = e;
|
|
61
|
+
sceneModelRepo.isLoadingSceneModel = false;
|
|
62
|
+
sceneModelRepo.clearActiveModel();
|
|
63
|
+
sceneModel.error = error;
|
|
64
|
+
closeSpinner();
|
|
65
|
+
const alertDTO = {
|
|
66
|
+
title: "Load Error",
|
|
67
|
+
message: `Failed to Load the Model and Data. Error message: ${error.message}`,
|
|
68
|
+
closeButtonLabel: "OK",
|
|
69
|
+
closeCallback: () => {
|
|
70
|
+
// nada
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
appDispatcher.showAlert(alertDTO);
|
|
74
|
+
return Promise.reject(error);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
exports.makeSetActiveModel = makeSetActiveModel;
|
|
80
|
+
function setSceneObjectsEnabled(sceneObjectRepo, activeModel) {
|
|
81
|
+
const allSOs = sceneObjectRepo.getAll();
|
|
82
|
+
allSOs.forEach(so => {
|
|
83
|
+
if (activeModel.hasMesh(so.id)) {
|
|
84
|
+
so.enabled = true;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
so.enabled = false;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeSetupSceneModelFromData = void 0;
|
|
4
|
+
const Entities_1 = require("../../Entities");
|
|
5
|
+
const ValueObjects_1 = require("../../ValueObjects");
|
|
6
|
+
function makeSetupSceneModelFromData(sceneObjectRepo) {
|
|
7
|
+
return function setupSceneModelFromData(sceneModel, data) {
|
|
8
|
+
if (data.version === 1) {
|
|
9
|
+
applyDataV1(sceneModel, data, sceneObjectRepo);
|
|
10
|
+
}
|
|
11
|
+
else if (data.version === 0) {
|
|
12
|
+
const mappedData = mapV0DataToV1(data);
|
|
13
|
+
applyDataV1(sceneModel, mappedData, sceneObjectRepo);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
console.warn("[setupSceneModelFromData] Unsupported version number");
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
exports.makeSetupSceneModelFromData = makeSetupSceneModelFromData;
|
|
21
|
+
function mapV0DataToV1(dataV0) {
|
|
22
|
+
const { bounds_max, bounds_min, defaultPosition, defaultRotation, defaultScale, name, objects: objectsV0, } = dataV0;
|
|
23
|
+
const objects = objectsV0.map((objV0) => {
|
|
24
|
+
return Object.assign(Object.assign({}, objV0), { version: 1 });
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
bounds_max,
|
|
28
|
+
bounds_min,
|
|
29
|
+
defaultPosition,
|
|
30
|
+
defaultRotation,
|
|
31
|
+
defaultScale,
|
|
32
|
+
name,
|
|
33
|
+
version: 1,
|
|
34
|
+
objects,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function applyDataV1(sceneModel, data, sceneObjectRepo) {
|
|
38
|
+
sceneModel.name = data.name;
|
|
39
|
+
sceneModel.bounds_min = ValueObjects_1.Vector3.FromDTO(data.bounds_min);
|
|
40
|
+
sceneModel.bounds_max = ValueObjects_1.Vector3.FromDTO(data.bounds_max);
|
|
41
|
+
sceneModel.defaultPosition = ValueObjects_1.Vector3.FromDTO(data.defaultPosition);
|
|
42
|
+
sceneModel.defaultScale = data.defaultScale;
|
|
43
|
+
sceneModel.defaultRotation = ValueObjects_1.Quaternion.FromDTO(data.defaultRotation);
|
|
44
|
+
const objectsToKeep = [];
|
|
45
|
+
data.objects.forEach((objectDTO) => {
|
|
46
|
+
const existingObj = sceneModel.getObjectById(objectDTO.id);
|
|
47
|
+
if (existingObj) {
|
|
48
|
+
console.log("EXISTING");
|
|
49
|
+
existingObj.applyData(objectDTO);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log("NEW");
|
|
53
|
+
let so = sceneObjectRepo.get(objectDTO.id);
|
|
54
|
+
if (!so) {
|
|
55
|
+
so = Entities_1.makeSceneObject(objectDTO.id);
|
|
56
|
+
sceneObjectRepo.add(objectDTO.id, so);
|
|
57
|
+
}
|
|
58
|
+
const newObj = Entities_1.makeModelMesh(objectDTO, so);
|
|
59
|
+
sceneModel.addObject(newObj);
|
|
60
|
+
}
|
|
61
|
+
objectsToKeep.push(objectDTO.id);
|
|
62
|
+
});
|
|
63
|
+
const allObjects = sceneModel.getAllObjects().map((modelMesh) => {
|
|
64
|
+
return modelMesh.id;
|
|
65
|
+
});
|
|
66
|
+
allObjects.forEach((obj) => {
|
|
67
|
+
if (!objectsToKeep.includes(obj)) {
|
|
68
|
+
sceneModel.removeObject(obj);
|
|
69
|
+
sceneObjectRepo.remove(obj);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Babylon, SceneObjectsRepo, TransformNode } from "../../Entities";
|
|
2
|
+
import { ParametricLine } from "../../ValueObjects";
|
|
3
|
+
export declare class PeelSceneObjectBase {
|
|
4
|
+
private babylon;
|
|
5
|
+
private sceneObjectRepo;
|
|
6
|
+
get peeledSceneObjectID(): string | undefined;
|
|
7
|
+
private _sceneObject;
|
|
8
|
+
private _didPeel;
|
|
9
|
+
get didPeel(): boolean;
|
|
10
|
+
private _doPeel;
|
|
11
|
+
private _transformToPeel;
|
|
12
|
+
get peelingTransform(): TransformNode | undefined;
|
|
13
|
+
private _rootPos;
|
|
14
|
+
private _peelPlane;
|
|
15
|
+
private _pickOffset;
|
|
16
|
+
tryInitializePeel: (pickRay: ParametricLine) => void;
|
|
17
|
+
updatePeel: (pickRay: ParametricLine) => void;
|
|
18
|
+
stopPeel: () => void;
|
|
19
|
+
constructor(babylon: Babylon, sceneObjectRepo: SceneObjectsRepo);
|
|
20
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PeelSceneObjectBase = void 0;
|
|
4
|
+
const ValueObjects_1 = require("../../ValueObjects");
|
|
5
|
+
class PeelSceneObjectBase {
|
|
6
|
+
constructor(babylon, sceneObjectRepo) {
|
|
7
|
+
this.babylon = babylon;
|
|
8
|
+
this.sceneObjectRepo = sceneObjectRepo;
|
|
9
|
+
this._didPeel = false;
|
|
10
|
+
this._doPeel = false;
|
|
11
|
+
this._transformToPeel = undefined;
|
|
12
|
+
this._peelPlane = ValueObjects_1.ParametricPlane.XY();
|
|
13
|
+
this._pickOffset = ValueObjects_1.Vector3.Zero();
|
|
14
|
+
this.tryInitializePeel = (pickRay) => {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
this._doPeel = false;
|
|
17
|
+
this._didPeel = false;
|
|
18
|
+
this._transformToPeel = undefined;
|
|
19
|
+
const sceneObjectID = this.babylon.sceneObjectRayPick(pickRay);
|
|
20
|
+
if (!sceneObjectID)
|
|
21
|
+
return;
|
|
22
|
+
const sceneObject = this.sceneObjectRepo.get(sceneObjectID);
|
|
23
|
+
if (!sceneObject)
|
|
24
|
+
return;
|
|
25
|
+
this._sceneObject = sceneObject;
|
|
26
|
+
this._transformToPeel = sceneObject.transform;
|
|
27
|
+
const scenePick = this.babylon.sceneRayPick(pickRay);
|
|
28
|
+
if (!scenePick)
|
|
29
|
+
return;
|
|
30
|
+
const pickPlaneDirection = ValueObjects_1.Vector3.Backward();
|
|
31
|
+
const planePickPos = (_a = scenePick.worldPickPoint) !== null && _a !== void 0 ? _a : ValueObjects_1.Vector3.Zero();
|
|
32
|
+
this._peelPlane = ValueObjects_1.ParametricPlane.FromPointNormal(planePickPos, pickPlaneDirection);
|
|
33
|
+
const pick = (_b = this._peelPlane.intersectLine(pickRay)) !== null && _b !== void 0 ? _b : ValueObjects_1.Vector3.Zero();
|
|
34
|
+
this._rootPos = this._transformToPeel.worldPosition;
|
|
35
|
+
this._pickOffset = ValueObjects_1.Vector3.Subtract(this._rootPos, pick);
|
|
36
|
+
this._doPeel = true;
|
|
37
|
+
};
|
|
38
|
+
this.updatePeel = (pickRay) => {
|
|
39
|
+
var _a;
|
|
40
|
+
if (!this._doPeel)
|
|
41
|
+
return;
|
|
42
|
+
if (!this._transformToPeel)
|
|
43
|
+
return;
|
|
44
|
+
const pick = (_a = this._peelPlane.intersectLine(pickRay)) !== null && _a !== void 0 ? _a : ValueObjects_1.Vector3.Zero();
|
|
45
|
+
this._transformToPeel.worldPosition = ValueObjects_1.Vector3.Add(pick, this._pickOffset);
|
|
46
|
+
this._didPeel = true;
|
|
47
|
+
};
|
|
48
|
+
this.stopPeel = () => {
|
|
49
|
+
this._doPeel = false;
|
|
50
|
+
this._didPeel = false;
|
|
51
|
+
this._transformToPeel = undefined;
|
|
52
|
+
this._rootPos = undefined;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
get peeledSceneObjectID() {
|
|
56
|
+
var _a;
|
|
57
|
+
return (_a = this._sceneObject) === null || _a === void 0 ? void 0 : _a.id;
|
|
58
|
+
}
|
|
59
|
+
get didPeel() {
|
|
60
|
+
return this._didPeel;
|
|
61
|
+
}
|
|
62
|
+
get peelingTransform() {
|
|
63
|
+
return this._transformToPeel;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.PeelSceneObjectBase = PeelSceneObjectBase;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./PeelSceneObjectBase";
|
|
@@ -0,0 +1,13 @@
|
|
|
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("./PeelSceneObjectBase"), exports);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initializeSceneRoot = void 0;
|
|
4
|
+
const Entities_1 = require("../../Entities");
|
|
5
|
+
function initializeSceneRoot(defaultData, sceneRoot, sceneObjectRepo) {
|
|
6
|
+
sceneRoot.applyDefaultData(defaultData);
|
|
7
|
+
sceneObjectRepo.add(Entities_1.SCENE_ROOT_ID, sceneRoot.sceneObject);
|
|
8
|
+
}
|
|
9
|
+
exports.initializeSceneRoot = initializeSceneRoot;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
export declare type BasicColor = "";
|
|
2
|
+
export interface ColorDTO {
|
|
3
|
+
r: number;
|
|
4
|
+
g: number;
|
|
5
|
+
b: number;
|
|
6
|
+
a: number;
|
|
7
|
+
}
|
|
2
8
|
export declare class Color {
|
|
3
9
|
/**
|
|
4
10
|
* Creates a Color from RGBA values
|
|
@@ -17,6 +23,12 @@ export declare class Color {
|
|
|
17
23
|
* @returns The Color
|
|
18
24
|
*/
|
|
19
25
|
static RGB(r: number, g: number, b: number): Color;
|
|
26
|
+
/**
|
|
27
|
+
*
|
|
28
|
+
* @returns Creates a Color from a DTO
|
|
29
|
+
* @param data Data Transfer Object
|
|
30
|
+
*/
|
|
31
|
+
static FromDTO(data: ColorDTO): Color;
|
|
20
32
|
/**
|
|
21
33
|
* Creates a color from a Hex value
|
|
22
34
|
* @param hex The Hex string. Example '808080'
|
|
@@ -60,6 +72,11 @@ export declare class Color {
|
|
|
60
72
|
* Returns the Color values as an array [r,g,b,a]
|
|
61
73
|
*/
|
|
62
74
|
get array(): [number, number, number, number];
|
|
75
|
+
/**
|
|
76
|
+
* Returns the Color values as a hex
|
|
77
|
+
*/
|
|
78
|
+
get hex(): string;
|
|
79
|
+
get dto(): ColorDTO;
|
|
63
80
|
private clampVal;
|
|
64
81
|
private constructor();
|
|
65
82
|
}
|
|
@@ -29,6 +29,14 @@ class Color {
|
|
|
29
29
|
static RGB(r, g, b) {
|
|
30
30
|
return new Color(r, g, b, 255);
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @returns Creates a Color from a DTO
|
|
35
|
+
* @param data Data Transfer Object
|
|
36
|
+
*/
|
|
37
|
+
static FromDTO(data) {
|
|
38
|
+
return new Color(data.r, data.g, data.b, data.a);
|
|
39
|
+
}
|
|
32
40
|
/**
|
|
33
41
|
* Creates a color from a Hex value
|
|
34
42
|
* @param hex The Hex string. Example '808080'
|
|
@@ -114,6 +122,29 @@ class Color {
|
|
|
114
122
|
get array() {
|
|
115
123
|
return [this.r, this.g, this.b, this.a];
|
|
116
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Returns the Color values as a hex
|
|
127
|
+
*/
|
|
128
|
+
get hex() {
|
|
129
|
+
let r = this.r.toString(16);
|
|
130
|
+
let g = this.g.toString(16);
|
|
131
|
+
let b = this.b.toString(16);
|
|
132
|
+
if (r.length === 1)
|
|
133
|
+
r = "0" + r;
|
|
134
|
+
if (g.length === 1)
|
|
135
|
+
g = "0" + g;
|
|
136
|
+
if (b.length === 1)
|
|
137
|
+
b = "0" + b;
|
|
138
|
+
return "#" + r + g + b;
|
|
139
|
+
}
|
|
140
|
+
get dto() {
|
|
141
|
+
return {
|
|
142
|
+
a: this.a,
|
|
143
|
+
b: this.b,
|
|
144
|
+
g: this.g,
|
|
145
|
+
r: this.r,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
117
148
|
clampVal(val) {
|
|
118
149
|
if (val > 255)
|
|
119
150
|
return 255;
|