@vived/app 2.45.0 → 2.46.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/ModelMesh.d.ts +53 -0
- package/lib/Entities/ModelMesh.js +106 -0
- package/lib/Entities/SceneModel.d.ts +7 -7
- package/lib/Entities/SceneModel.js +16 -14
- package/lib/Entities/SceneModelMesh.d.ts +65 -0
- package/lib/Entities/SceneModelMesh.js +159 -0
- package/lib/Entities/SceneObject.d.ts +1 -4
- package/lib/Entities/SceneObject.js +0 -17
- package/lib/Entities/SceneRoot.d.ts +19 -59
- package/lib/Entities/SceneRoot.js +94 -26
- package/lib/Entities/index.d.ts +1 -1
- package/lib/Entities/index.js +1 -1
- package/lib/PresentationManagers/SceneObject/SceneObjectPM.d.ts +17 -0
- package/lib/PresentationManagers/SceneObject/SceneObjectPM.js +40 -0
- package/lib/PresentationManagers/SceneObject/index.d.ts +1 -0
- package/lib/PresentationManagers/SceneObject/index.js +13 -0
- 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/SerializeActiveModel.d.ts +18 -0
- package/lib/UseCases/SceneModel/SerializeActiveModel.js +74 -0
- package/lib/UseCases/SceneModel/SetMeshesEnabledHook.d.ts +7 -0
- package/lib/UseCases/SceneModel/SetMeshesEnabledHook.js +22 -0
- package/lib/UseCases/SceneModel/index.d.ts +4 -2
- package/lib/UseCases/SceneModel/index.js +3 -1
- package/lib/UseCases/SceneModel/loadNewModel.d.ts +2 -0
- package/lib/UseCases/SceneModel/loadNewModel.js +84 -0
- package/lib/UseCases/SceneModel/setActiveSceneModel.js +4 -3
- package/lib/UseCases/SceneModel/setupSceneModelFromData.d.ts +2 -0
- package/lib/UseCases/SceneModel/setupSceneModelFromData.js +72 -0
- package/lib/UseCases/SceneObjects/PeelSceneObject.d.ts +18 -0
- package/lib/UseCases/SceneObjects/PeelSceneObject.js +61 -0
- package/lib/UseCases/SceneObjects/index.d.ts +1 -0
- package/lib/UseCases/SceneObjects/index.js +13 -0
- package/lib/UseCases/SceneRoot/SerializeSceneRoot.d.ts +15 -0
- package/lib/UseCases/SceneRoot/SerializeSceneRoot.js +26 -7
- package/lib/UseCases/SceneRoot/index.d.ts +1 -0
- package/lib/UseCases/SceneRoot/index.js +1 -0
- package/lib/UseCases/SceneRoot/initializeSceneRoot.d.ts +2 -0
- package/lib/UseCases/SceneRoot/initializeSceneRoot.js +9 -0
- package/lib/UseCases/SceneRoot/setupSceneRoot.d.ts +2 -0
- package/lib/UseCases/SceneRoot/setupSceneRoot.js +11 -0
- package/lib/UseCases/index.d.ts +1 -1
- package/lib/UseCases/index.js +1 -1
- package/lib/ValueObjects/Vector3.d.ts +7 -10
- package/lib/ValueObjects/Vector3.js +1 -0
- package/package.json +1 -1
|
@@ -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,18 @@
|
|
|
1
|
+
import { Babylon, SceneObject, SceneObjectsRepo } from "../../Entities";
|
|
2
|
+
import { ParametricLine } from "../../ValueObjects";
|
|
3
|
+
export declare class PeelSceneObject {
|
|
4
|
+
private babylon;
|
|
5
|
+
private sceneObjectRepo;
|
|
6
|
+
private _didPeel;
|
|
7
|
+
get didPeel(): boolean;
|
|
8
|
+
private _peelingSceneObject;
|
|
9
|
+
get peelingSceneObject(): SceneObject | undefined;
|
|
10
|
+
private _peelPlane;
|
|
11
|
+
private _rootPos;
|
|
12
|
+
private _allowPeel;
|
|
13
|
+
private _pickOffset;
|
|
14
|
+
tryInitializePeel: (pickRay: ParametricLine) => void;
|
|
15
|
+
updatePeel: (pickRay: ParametricLine) => void;
|
|
16
|
+
stopPeel: () => void;
|
|
17
|
+
constructor(babylon: Babylon, sceneObjectRepo: SceneObjectsRepo);
|
|
18
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PeelSceneObject = void 0;
|
|
4
|
+
const ValueObjects_1 = require("../../ValueObjects");
|
|
5
|
+
class PeelSceneObject {
|
|
6
|
+
constructor(babylon, sceneObjectRepo) {
|
|
7
|
+
this.babylon = babylon;
|
|
8
|
+
this.sceneObjectRepo = sceneObjectRepo;
|
|
9
|
+
this._didPeel = false;
|
|
10
|
+
this._peelingSceneObject = undefined;
|
|
11
|
+
this._peelPlane = ValueObjects_1.ParametricPlane.XY();
|
|
12
|
+
this._allowPeel = false;
|
|
13
|
+
this._pickOffset = ValueObjects_1.Vector3.Zero();
|
|
14
|
+
this.tryInitializePeel = (pickRay) => {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
this._allowPeel = false;
|
|
17
|
+
this._didPeel = false;
|
|
18
|
+
this._peelingSceneObject = 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._peelingSceneObject = sceneObject;
|
|
26
|
+
const scenePick = this.babylon.sceneRayPick(pickRay);
|
|
27
|
+
if (!scenePick)
|
|
28
|
+
return;
|
|
29
|
+
const pickPlaneDirection = ValueObjects_1.Vector3.Backward();
|
|
30
|
+
const planePickPos = (_a = scenePick.worldPickPoint) !== null && _a !== void 0 ? _a : ValueObjects_1.Vector3.Zero();
|
|
31
|
+
this._peelPlane = ValueObjects_1.ParametricPlane.FromPointNormal(planePickPos, pickPlaneDirection);
|
|
32
|
+
const pick = (_b = this._peelPlane.intersectLine(pickRay)) !== null && _b !== void 0 ? _b : ValueObjects_1.Vector3.Zero();
|
|
33
|
+
this._rootPos = this._peelingSceneObject.transform.worldPosition;
|
|
34
|
+
this._pickOffset = ValueObjects_1.Vector3.Subtract(this._rootPos, pick);
|
|
35
|
+
this._allowPeel = true;
|
|
36
|
+
};
|
|
37
|
+
this.updatePeel = (pickRay) => {
|
|
38
|
+
var _a;
|
|
39
|
+
if (!this._allowPeel)
|
|
40
|
+
return;
|
|
41
|
+
if (!this._peelingSceneObject)
|
|
42
|
+
return;
|
|
43
|
+
const pick = (_a = this._peelPlane.intersectLine(pickRay)) !== null && _a !== void 0 ? _a : ValueObjects_1.Vector3.Zero();
|
|
44
|
+
this._peelingSceneObject.transform.worldPosition = ValueObjects_1.Vector3.Add(pick, this._pickOffset);
|
|
45
|
+
this._didPeel = true;
|
|
46
|
+
};
|
|
47
|
+
this.stopPeel = () => {
|
|
48
|
+
this._allowPeel = false;
|
|
49
|
+
this._didPeel = false;
|
|
50
|
+
this._peelingSceneObject = undefined;
|
|
51
|
+
this._rootPos = undefined;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
get didPeel() {
|
|
55
|
+
return this._didPeel;
|
|
56
|
+
}
|
|
57
|
+
get peelingSceneObject() {
|
|
58
|
+
return this._peelingSceneObject;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.PeelSceneObject = PeelSceneObject;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./PeelSceneObject";
|
|
@@ -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("./PeelSceneObject"), exports);
|
|
@@ -8,6 +8,7 @@ export declare class SerializeSceneRoot implements SerializedSystem {
|
|
|
8
8
|
getSystemState(): object;
|
|
9
9
|
applySystemState(serializedState: object, version: number, transitionTime: number): void;
|
|
10
10
|
applyDefaultState(transitionDuration: number): void;
|
|
11
|
+
private applyV2Data;
|
|
11
12
|
private applyV1Data;
|
|
12
13
|
constructor(sceneRoot: SceneRoot, stateMachine: StateMachine);
|
|
13
14
|
}
|
|
@@ -16,3 +17,17 @@ export interface SceneRootDataV1 {
|
|
|
16
17
|
rotation: [number, number, number, number];
|
|
17
18
|
scale: [number, number, number];
|
|
18
19
|
}
|
|
20
|
+
export interface SceneRootDataV2 {
|
|
21
|
+
position: {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
z: number;
|
|
25
|
+
};
|
|
26
|
+
rotation: {
|
|
27
|
+
x: number;
|
|
28
|
+
y: number;
|
|
29
|
+
z: number;
|
|
30
|
+
w: number;
|
|
31
|
+
};
|
|
32
|
+
scale: number;
|
|
33
|
+
}
|
|
@@ -5,17 +5,16 @@ const ValueObjects_1 = require("../../ValueObjects");
|
|
|
5
5
|
class SerializeSceneRoot {
|
|
6
6
|
constructor(sceneRoot, stateMachine) {
|
|
7
7
|
this.name = "sceneRoot";
|
|
8
|
-
this.seriliziationVersion =
|
|
8
|
+
this.seriliziationVersion = 2;
|
|
9
9
|
this.sceneRoot = sceneRoot;
|
|
10
10
|
this.stateMachine = stateMachine;
|
|
11
11
|
stateMachine.registerSerializedSystem(this);
|
|
12
12
|
}
|
|
13
13
|
getSystemState() {
|
|
14
|
-
const rootTransform = this.sceneRoot.transform;
|
|
15
14
|
const data = {
|
|
16
|
-
position:
|
|
17
|
-
rotation:
|
|
18
|
-
scale:
|
|
15
|
+
position: this.sceneRoot.position.dto,
|
|
16
|
+
rotation: this.sceneRoot.rotation.dto,
|
|
17
|
+
scale: this.sceneRoot.scale,
|
|
19
18
|
};
|
|
20
19
|
return data;
|
|
21
20
|
}
|
|
@@ -25,6 +24,10 @@ class SerializeSceneRoot {
|
|
|
25
24
|
const castState = serializedState;
|
|
26
25
|
this.applyV1Data(castState, transitionTime);
|
|
27
26
|
}
|
|
27
|
+
else if (version === 2) {
|
|
28
|
+
const castState = serializedState;
|
|
29
|
+
this.applyV2Data(castState, transitionTime);
|
|
30
|
+
}
|
|
28
31
|
else {
|
|
29
32
|
console.warn(`[SerializeSceneRoot] Unsupported version number ${version}. Defaulting`);
|
|
30
33
|
this.applyDefaultState(transitionTime);
|
|
@@ -36,13 +39,29 @@ class SerializeSceneRoot {
|
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
applyDefaultState(transitionDuration) {
|
|
39
|
-
this.sceneRoot.
|
|
42
|
+
this.sceneRoot.lerpToDefault(transitionDuration * 1000, this.stateMachine.transitionEaseFunction);
|
|
43
|
+
}
|
|
44
|
+
applyV2Data(data, transitionTime) {
|
|
45
|
+
if (!this.sceneRoot.sceneObject) {
|
|
46
|
+
console.warn("[SerializeSceneRoot] scene root does not have a scene object");
|
|
47
|
+
return {};
|
|
48
|
+
}
|
|
49
|
+
const pos = ValueObjects_1.Vector3.FromDTO(data.position);
|
|
50
|
+
const rot = ValueObjects_1.Quaternion.FromDTO(data.rotation);
|
|
51
|
+
const scale = new ValueObjects_1.Vector3(data.scale, data.scale, data.scale);
|
|
52
|
+
const rootTransform = this.sceneRoot.sceneObject.transform;
|
|
53
|
+
rootTransform.lerp(transitionTime * 1000, this.stateMachine.transitionEaseFunction, pos, rot, scale);
|
|
40
54
|
}
|
|
41
55
|
applyV1Data(data, transitionTime) {
|
|
56
|
+
if (!this.sceneRoot.sceneObject) {
|
|
57
|
+
console.warn("[SerializeSceneRoot] scene root does not have a scene object");
|
|
58
|
+
return {};
|
|
59
|
+
}
|
|
42
60
|
const pos = ValueObjects_1.Vector3.FromArray(data.position);
|
|
43
61
|
const rot = ValueObjects_1.Quaternion.FromArray(data.rotation);
|
|
44
62
|
const scale = ValueObjects_1.Vector3.FromArray(data.scale);
|
|
45
|
-
|
|
63
|
+
const rootTransform = this.sceneRoot.sceneObject.transform;
|
|
64
|
+
rootTransform.lerp(transitionTime * 1000, this.stateMachine.transitionEaseFunction, pos, rot, scale);
|
|
46
65
|
}
|
|
47
66
|
}
|
|
48
67
|
exports.SerializeSceneRoot = SerializeSceneRoot;
|
|
@@ -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;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setupSceneRoot = void 0;
|
|
4
|
+
const Entities_1 = require("../../Entities");
|
|
5
|
+
function setupSceneRoot(defaultData, sceneRoot, sceneObjectRepo) {
|
|
6
|
+
sceneRoot.applyDefaultData(defaultData);
|
|
7
|
+
const so = Entities_1.makeSceneObject(Entities_1.SCENE_ROOT_ID);
|
|
8
|
+
sceneRoot.sceneObject = so;
|
|
9
|
+
sceneObjectRepo.add(Entities_1.SCENE_ROOT_ID, so);
|
|
10
|
+
}
|
|
11
|
+
exports.setupSceneRoot = setupSceneRoot;
|
package/lib/UseCases/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export * from "./setDevicePreview";
|
|
|
2
2
|
export * from "./Handlers";
|
|
3
3
|
export * from "./QuestionChallenge";
|
|
4
4
|
export * from "./SceneModel";
|
|
5
|
-
export * from "./
|
|
5
|
+
export * from "./SceneObjects";
|
|
6
6
|
export * from "./LerpVector3";
|
|
7
7
|
export * from "./SceneRoot";
|
|
8
8
|
export * from "./HoverLabels/trySetHoverLabel";
|
package/lib/UseCases/index.js
CHANGED
|
@@ -14,7 +14,7 @@ __exportStar(require("./setDevicePreview"), exports);
|
|
|
14
14
|
__exportStar(require("./Handlers"), exports);
|
|
15
15
|
__exportStar(require("./QuestionChallenge"), exports);
|
|
16
16
|
__exportStar(require("./SceneModel"), exports);
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./SceneObjects"), exports);
|
|
18
18
|
__exportStar(require("./LerpVector3"), exports);
|
|
19
19
|
__exportStar(require("./SceneRoot"), exports);
|
|
20
20
|
__exportStar(require("./HoverLabels/trySetHoverLabel"), exports);
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { Matrix } from "./Matrix";
|
|
2
|
+
export interface Vector3DTO {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
z: number;
|
|
6
|
+
}
|
|
2
7
|
export declare class Vector3 {
|
|
3
8
|
/**
|
|
4
9
|
* Creates a zero vector
|
|
@@ -57,11 +62,7 @@ export declare class Vector3 {
|
|
|
57
62
|
* @param dto The Data Transfer Object
|
|
58
63
|
* @returns The Vector
|
|
59
64
|
*/
|
|
60
|
-
static FromDTO(dto:
|
|
61
|
-
x: number;
|
|
62
|
-
y: number;
|
|
63
|
-
z: number;
|
|
64
|
-
}): Vector3;
|
|
65
|
+
static FromDTO(dto: Vector3DTO): Vector3;
|
|
65
66
|
/**
|
|
66
67
|
* Adds Vector B to Vector A
|
|
67
68
|
* @param a Vector A
|
|
@@ -142,10 +143,6 @@ export declare class Vector3 {
|
|
|
142
143
|
/**
|
|
143
144
|
* Get the vector as a Data Transfer Object
|
|
144
145
|
*/
|
|
145
|
-
get dto():
|
|
146
|
-
x: number;
|
|
147
|
-
y: number;
|
|
148
|
-
z: number;
|
|
149
|
-
};
|
|
146
|
+
get dto(): Vector3DTO;
|
|
150
147
|
constructor(x: number, y: number, z: number);
|
|
151
148
|
}
|