@vived/app 2.51.0 → 3.0.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/AppObject/AppObject.d.ts +15 -0
- package/lib/AppObject/AppObject.js +65 -0
- package/lib/AppObject/AppObjectComponent.d.ts +6 -0
- package/lib/AppObject/AppObjectComponent.js +2 -0
- package/lib/AppObject/AppObjectEntity.d.ts +16 -0
- package/lib/AppObject/AppObjectEntity.js +40 -0
- package/lib/AppObject/AppObjectEntityRepo.d.ts +15 -0
- package/lib/AppObject/AppObjectEntityRepo.js +54 -0
- package/lib/AppObject/AppObjectPM.d.ts +15 -0
- package/lib/AppObject/AppObjectPM.js +38 -0
- package/lib/AppObject/AppObjectRepo.d.ts +19 -0
- package/lib/AppObject/AppObjectRepo.js +95 -0
- package/lib/AppObject/AppObjectUC.d.ts +8 -0
- package/lib/AppObject/AppObjectUC.js +17 -0
- package/lib/AppObject/IsEnabledPM.d.ts +11 -0
- package/lib/AppObject/IsEnabledPM.js +29 -0
- package/lib/AppObject/index.d.ts +7 -0
- package/lib/AppObject/index.js +19 -0
- package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModel.d.ts +42 -0
- package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModel.js +99 -0
- package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModelRepo.d.ts +12 -0
- package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModelRepo.js +45 -0
- package/lib/AppObjectComponents/ChannelModel/index.d.ts +2 -0
- package/lib/AppObjectComponents/ChannelModel/index.js +14 -0
- package/lib/AppObjectComponents/Hideable/Entities/Hideable.d.ts +10 -0
- package/lib/AppObjectComponents/Hideable/Entities/Hideable.js +31 -0
- package/lib/AppObjectComponents/Hideable/PresentationManagers/IsHiddenPM.d.ts +12 -0
- package/lib/AppObjectComponents/Hideable/PresentationManagers/IsHiddenPM.js +42 -0
- package/lib/AppObjectComponents/Hideable/index.d.ts +2 -0
- package/lib/AppObjectComponents/Hideable/index.js +14 -0
- package/lib/AppObjectComponents/Label/Entities/Label.d.ts +17 -0
- package/lib/AppObjectComponents/Label/Entities/Label.js +58 -0
- package/lib/AppObjectComponents/Label/PresentationManagers/LabelPM.d.ts +19 -0
- package/lib/AppObjectComponents/Label/PresentationManagers/LabelPM.js +62 -0
- package/lib/AppObjectComponents/Label/index.d.ts +2 -0
- package/lib/AppObjectComponents/Label/index.js +14 -0
- package/lib/AppObjectComponents/Mesh/Entities/Mesh.d.ts +21 -0
- package/lib/AppObjectComponents/Mesh/Entities/Mesh.js +45 -0
- package/lib/AppObjectComponents/Mesh/index.d.ts +1 -0
- package/lib/{UseCases/SceneObjects → AppObjectComponents/Mesh}/index.js +1 -1
- package/lib/AppObjectComponents/OverlayColor/Entities/OverlayColor.d.ts +25 -0
- package/lib/AppObjectComponents/OverlayColor/Entities/OverlayColor.js +59 -0
- package/lib/AppObjectComponents/OverlayColor/PresentationManagers/OverlayColorPM.d.ts +13 -0
- package/lib/AppObjectComponents/OverlayColor/PresentationManagers/OverlayColorPM.js +42 -0
- package/lib/AppObjectComponents/OverlayColor/index.d.ts +2 -0
- package/lib/AppObjectComponents/OverlayColor/index.js +14 -0
- package/lib/AppObjectComponents/Transform3D/Entities/Transform3D.d.ts +44 -0
- package/lib/AppObjectComponents/Transform3D/Entities/Transform3D.js +221 -0
- package/lib/AppObjectComponents/Transform3D/PresentationManagers/CanBeStuckPM.d.ts +12 -0
- package/lib/AppObjectComponents/Transform3D/PresentationManagers/CanBeStuckPM.js +45 -0
- package/lib/AppObjectComponents/Transform3D/PresentationManagers/Transform3DPM.d.ts +19 -0
- package/lib/AppObjectComponents/Transform3D/PresentationManagers/Transform3DPM.js +59 -0
- package/lib/AppObjectComponents/Transform3D/UseCases/PeelTransform3D.d.ts +20 -0
- package/lib/AppObjectComponents/Transform3D/UseCases/PeelTransform3D.js +67 -0
- package/lib/AppObjectComponents/Transform3D/UseCases/StickTransform3D.d.ts +14 -0
- package/lib/AppObjectComponents/Transform3D/UseCases/StickTransform3D.js +45 -0
- package/lib/AppObjectComponents/Transform3D/UseCases/getStickUC.d.ts +3 -0
- package/lib/AppObjectComponents/Transform3D/UseCases/getStickUC.js +8 -0
- package/lib/AppObjectComponents/Transform3D/index.d.ts +5 -0
- package/lib/AppObjectComponents/Transform3D/index.js +17 -0
- package/lib/AppObjectComponents/index.d.ts +6 -0
- package/lib/AppObjectComponents/index.js +18 -0
- package/lib/Entities/ObserverList.d.ts +1 -0
- package/lib/Entities/ObserverList.js +3 -0
- package/lib/Entities/SceneModel.d.ts +1 -1
- package/lib/Entities/SceneModelMesh.d.ts +3 -44
- package/lib/Entities/SceneModelMesh.js +7 -114
- package/lib/Types/ChannelModelData.d.ts +68 -0
- package/lib/Types/ChannelModelData.js +21 -0
- package/lib/Types/EaseFn.d.ts +1 -0
- package/lib/Types/EaseFn.js +2 -0
- package/lib/Types/index.d.ts +2 -0
- package/lib/{UseCases/SceneObject → Types}/index.js +2 -1
- package/lib/UseCases/SceneModel/index.d.ts +0 -3
- package/lib/UseCases/SceneModel/index.js +0 -3
- package/lib/UseCases/SceneModel/loadNewModel.d.ts +2 -2
- package/lib/UseCases/SceneModel/loadNewModel.js +15 -17
- package/lib/UseCases/index.d.ts +1 -1
- package/lib/UseCases/index.js +1 -1
- package/lib/UseCases/setupStandardAppObjects.d.ts +2 -0
- package/lib/UseCases/setupStandardAppObjects.js +10 -0
- package/lib/ValueObjects/Quaternion.d.ts +1 -0
- package/lib/ValueObjects/Quaternion.js +21 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.js +4 -1
- package/package.json +1 -1
- package/lib/Entities/MemoizedBoolean.d.ts +0 -8
- package/lib/Entities/MemoizedBoolean.js +0 -22
- package/lib/Entities/MemoizedColor.d.ts +0 -9
- package/lib/Entities/MemoizedColor.js +0 -23
- package/lib/Entities/MemoizedNumber.d.ts +0 -8
- package/lib/Entities/MemoizedNumber.js +0 -22
- package/lib/Entities/MemoizedQuaternion.d.ts +0 -9
- package/lib/Entities/MemoizedQuaternion.js +0 -23
- package/lib/Entities/MemoizedString.d.ts +0 -8
- package/lib/Entities/MemoizedString.js +0 -22
- package/lib/Entities/MemoizedVector2.d.ts +0 -9
- package/lib/Entities/MemoizedVector2.js +0 -23
- package/lib/Entities/MemoizedVector3.d.ts +0 -9
- package/lib/Entities/MemoizedVector3.js +0 -23
- package/lib/Entities/ModelMesh.d.ts +0 -53
- package/lib/Entities/ModelMesh.js +0 -106
- package/lib/Entities/SceneModelObject.d.ts +0 -40
- package/lib/Entities/SceneModelObject.js +0 -77
- package/lib/PresentationManagers/SceneModel/SceneMeshOverlayPM.d.ts +0 -15
- package/lib/PresentationManagers/SceneModel/SceneMeshOverlayPM.js +0 -34
- package/lib/UseCases/SceneModel/PeelSceneMeshBase.d.ts +0 -20
- package/lib/UseCases/SceneModel/PeelSceneMeshBase.js +0 -66
- package/lib/UseCases/SceneModel/SerializeActiveModel.d.ts +0 -18
- package/lib/UseCases/SceneModel/SerializeActiveModel.js +0 -74
- package/lib/UseCases/SceneModel/SetMeshesEnabledHook.d.ts +0 -7
- package/lib/UseCases/SceneModel/SetMeshesEnabledHook.js +0 -22
- package/lib/UseCases/SceneModel/SetSceneModelMeshOverlayColor.d.ts +0 -2
- package/lib/UseCases/SceneModel/SetSceneModelMeshOverlayColor.js +0 -13
- package/lib/UseCases/SceneModel/setActiveSceneModel.d.ts +0 -2
- package/lib/UseCases/SceneModel/setActiveSceneModel.js +0 -90
- package/lib/UseCases/SceneModel/setupSceneModelFromData.d.ts +0 -2
- package/lib/UseCases/SceneModel/setupSceneModelFromData.js +0 -72
- package/lib/UseCases/SceneObject/PeelSceneObjectBase.d.ts +0 -20
- package/lib/UseCases/SceneObject/PeelSceneObjectBase.js +0 -66
- package/lib/UseCases/SceneObject/index.d.ts +0 -1
- package/lib/UseCases/SceneObjects/PeelSceneObject.d.ts +0 -18
- package/lib/UseCases/SceneObjects/PeelSceneObject.js +0 -61
- package/lib/UseCases/SceneObjects/index.d.ts +0 -1
- package/lib/UseCases/SceneRoot/initializeSceneRoot.d.ts +0 -2
- package/lib/UseCases/SceneRoot/initializeSceneRoot.js +0 -9
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ObservableEntity } from "../Entities";
|
|
2
|
+
import { AppObjectComponent } from "./AppObjectComponent";
|
|
3
|
+
import { AppObjectRepo } from "./AppObjectRepo";
|
|
4
|
+
export declare abstract class AppObject extends ObservableEntity {
|
|
5
|
+
abstract readonly id: string;
|
|
6
|
+
abstract get enabled(): boolean;
|
|
7
|
+
abstract set enabled(val: boolean);
|
|
8
|
+
abstract hasComponent(type: string): boolean;
|
|
9
|
+
abstract addComponent(component: AppObjectComponent): void;
|
|
10
|
+
abstract getComponent<T extends AppObjectComponent>(type: string): T | undefined;
|
|
11
|
+
abstract removeComponent(type: string): void;
|
|
12
|
+
abstract allComponents(): AppObjectComponent[];
|
|
13
|
+
abstract dispose(): void;
|
|
14
|
+
}
|
|
15
|
+
export declare function makeAppObject(id: string, repo: AppObjectRepo): AppObject;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeAppObject = exports.AppObject = void 0;
|
|
4
|
+
const Entities_1 = require("../Entities");
|
|
5
|
+
class AppObject extends Entities_1.ObservableEntity {
|
|
6
|
+
}
|
|
7
|
+
exports.AppObject = AppObject;
|
|
8
|
+
function makeAppObject(id, repo) {
|
|
9
|
+
return new AppObjectImp(id, repo);
|
|
10
|
+
}
|
|
11
|
+
exports.makeAppObject = makeAppObject;
|
|
12
|
+
class AppObjectImp extends AppObject {
|
|
13
|
+
constructor(id, repo) {
|
|
14
|
+
super();
|
|
15
|
+
this.repo = repo;
|
|
16
|
+
this.memoizedEnabled = new Entities_1.MemoizedBoolean(true, this.notify);
|
|
17
|
+
this.componentLookup = new Map();
|
|
18
|
+
this.dispose = () => {
|
|
19
|
+
const components = Array.from(this.componentLookup.values());
|
|
20
|
+
this.componentLookup.clear();
|
|
21
|
+
components.forEach(c => c.dispose());
|
|
22
|
+
if (this.repo.has(this.id)) {
|
|
23
|
+
this.repo.remove(this.id);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
this.id = id;
|
|
27
|
+
this.repo.add(this);
|
|
28
|
+
}
|
|
29
|
+
get enabled() {
|
|
30
|
+
return this.memoizedEnabled.val;
|
|
31
|
+
}
|
|
32
|
+
set enabled(val) {
|
|
33
|
+
this.memoizedEnabled.val = val;
|
|
34
|
+
}
|
|
35
|
+
hasComponent(type) {
|
|
36
|
+
return this.componentLookup.has(type);
|
|
37
|
+
}
|
|
38
|
+
addComponent(component) {
|
|
39
|
+
const currentComponent = this.componentLookup.get(component.type);
|
|
40
|
+
if (currentComponent) {
|
|
41
|
+
console.warn(`[AppObject] Component ${component.type} is being replaced on ${this.id}`);
|
|
42
|
+
currentComponent.dispose();
|
|
43
|
+
}
|
|
44
|
+
this.componentLookup.set(component.type, component);
|
|
45
|
+
this.notify();
|
|
46
|
+
}
|
|
47
|
+
getComponent(type) {
|
|
48
|
+
if (this.componentLookup.has(type)) {
|
|
49
|
+
return this.componentLookup.get(type);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
removeComponent(type) {
|
|
56
|
+
const component = this.componentLookup.get(type);
|
|
57
|
+
if (!component)
|
|
58
|
+
return;
|
|
59
|
+
this.componentLookup.delete(type);
|
|
60
|
+
this.notify();
|
|
61
|
+
}
|
|
62
|
+
allComponents() {
|
|
63
|
+
return Array.from(this.componentLookup.values());
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AppObject } from "./AppObject";
|
|
2
|
+
import { AppObjectComponent } from "./AppObjectComponent";
|
|
3
|
+
export declare type EntityObserver = () => void;
|
|
4
|
+
export declare class AppObjectEntity implements AppObjectComponent {
|
|
5
|
+
readonly type: string;
|
|
6
|
+
readonly appObject: AppObject;
|
|
7
|
+
private onDisposeObserverList;
|
|
8
|
+
addOnDisposeObserver: (observer: EntityObserver) => void;
|
|
9
|
+
removeOnDisposeObserver: (observer: EntityObserver) => void;
|
|
10
|
+
private onChangeObserverList;
|
|
11
|
+
addChangeObserver: (observer: EntityObserver) => void;
|
|
12
|
+
removeChangeObserver: (observer: EntityObserver) => void;
|
|
13
|
+
notifyOnChange: () => void;
|
|
14
|
+
dispose(): void;
|
|
15
|
+
constructor(appObject: AppObject, type: string);
|
|
16
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppObjectEntity = void 0;
|
|
4
|
+
const Entities_1 = require("../Entities");
|
|
5
|
+
class AppObjectEntity {
|
|
6
|
+
constructor(appObject, type) {
|
|
7
|
+
this.onDisposeObserverList = new Entities_1.ObserverList();
|
|
8
|
+
this.addOnDisposeObserver = (observer) => {
|
|
9
|
+
this.onDisposeObserverList.add(observer);
|
|
10
|
+
};
|
|
11
|
+
this.removeOnDisposeObserver = (observer) => {
|
|
12
|
+
this.onDisposeObserverList.remove(observer);
|
|
13
|
+
};
|
|
14
|
+
this.onChangeObserverList = new Entities_1.ObserverList();
|
|
15
|
+
this.addChangeObserver = (observer) => {
|
|
16
|
+
this.onChangeObserverList.add(observer);
|
|
17
|
+
};
|
|
18
|
+
this.removeChangeObserver = (observer) => {
|
|
19
|
+
this.onChangeObserverList.remove(observer);
|
|
20
|
+
};
|
|
21
|
+
this.notifyOnChange = () => {
|
|
22
|
+
this.onChangeObserverList.notify();
|
|
23
|
+
};
|
|
24
|
+
this.appObject = appObject;
|
|
25
|
+
this.type = type;
|
|
26
|
+
appObject.addComponent(this);
|
|
27
|
+
this.addChangeObserver(appObject.notify);
|
|
28
|
+
}
|
|
29
|
+
dispose() {
|
|
30
|
+
this.removeChangeObserver(this.appObject.notify);
|
|
31
|
+
this.onDisposeObserverList.notify();
|
|
32
|
+
this.onChangeObserverList.clear();
|
|
33
|
+
this.onDisposeObserverList.clear();
|
|
34
|
+
if (this.appObject.getComponent(this.type) === this) {
|
|
35
|
+
this.appObject.removeComponent(this.type);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
;
|
|
39
|
+
}
|
|
40
|
+
exports.AppObjectEntity = AppObjectEntity;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AppObjectEntity } from "./AppObjectEntity";
|
|
2
|
+
export declare abstract class AppObjectEntityRepo<T extends AppObjectEntity> extends AppObjectEntity {
|
|
3
|
+
private entityLookup;
|
|
4
|
+
private onEntityAddedObservers;
|
|
5
|
+
addEntityAddedObserver: (observer: (addedEntity: T) => void) => void;
|
|
6
|
+
removeEntityAddedObserver: (observer: (addedEntity: T) => void) => void;
|
|
7
|
+
private onEntityRemovedObservers;
|
|
8
|
+
addEntityRemovedObserver: (observer: (removedEntity: T) => void) => void;
|
|
9
|
+
removeEntityRemovedObserver: (observer: (removedEntity: T) => void) => void;
|
|
10
|
+
hasForAppObject: (appObjectID: string) => boolean;
|
|
11
|
+
add: (entity: T) => void;
|
|
12
|
+
removeForAppObject: (id: string) => void;
|
|
13
|
+
getForAppObject: (appObjectID: string) => T | undefined;
|
|
14
|
+
getAll: () => T[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppObjectEntityRepo = void 0;
|
|
4
|
+
const Entities_1 = require("../Entities");
|
|
5
|
+
const AppObjectEntity_1 = require("./AppObjectEntity");
|
|
6
|
+
class AppObjectEntityRepo extends AppObjectEntity_1.AppObjectEntity {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.entityLookup = new Map();
|
|
10
|
+
this.onEntityAddedObservers = new Entities_1.ObserverList();
|
|
11
|
+
this.addEntityAddedObserver = (observer) => {
|
|
12
|
+
this.onEntityAddedObservers.add(observer);
|
|
13
|
+
};
|
|
14
|
+
this.removeEntityAddedObserver = (observer) => {
|
|
15
|
+
this.onEntityAddedObservers.remove(observer);
|
|
16
|
+
};
|
|
17
|
+
this.onEntityRemovedObservers = new Entities_1.ObserverList();
|
|
18
|
+
this.addEntityRemovedObserver = (observer) => {
|
|
19
|
+
this.onEntityRemovedObservers.add(observer);
|
|
20
|
+
};
|
|
21
|
+
this.removeEntityRemovedObserver = (observer) => {
|
|
22
|
+
this.onEntityRemovedObservers.remove(observer);
|
|
23
|
+
};
|
|
24
|
+
this.hasForAppObject = (appObjectID) => {
|
|
25
|
+
return this.entityLookup.has(appObjectID);
|
|
26
|
+
};
|
|
27
|
+
this.add = (entity) => {
|
|
28
|
+
const existing = this.entityLookup.get(entity.appObject.id);
|
|
29
|
+
if (existing) {
|
|
30
|
+
existing.removeChangeObserver(this.notifyOnChange);
|
|
31
|
+
}
|
|
32
|
+
this.entityLookup.set(entity.appObject.id, entity);
|
|
33
|
+
entity.addChangeObserver(this.notifyOnChange);
|
|
34
|
+
this.notifyOnChange();
|
|
35
|
+
this.onEntityAddedObservers.notify(entity);
|
|
36
|
+
};
|
|
37
|
+
this.removeForAppObject = (id) => {
|
|
38
|
+
const existing = this.entityLookup.get(id);
|
|
39
|
+
if (!existing)
|
|
40
|
+
return;
|
|
41
|
+
this.entityLookup.delete(id);
|
|
42
|
+
existing.removeChangeObserver(this.notifyOnChange);
|
|
43
|
+
this.notifyOnChange();
|
|
44
|
+
this.onEntityRemovedObservers.notify(existing);
|
|
45
|
+
};
|
|
46
|
+
this.getForAppObject = (appObjectID) => {
|
|
47
|
+
return this.entityLookup.get(appObjectID);
|
|
48
|
+
};
|
|
49
|
+
this.getAll = () => {
|
|
50
|
+
return Array.from(this.entityLookup.values());
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.AppObjectEntityRepo = AppObjectEntityRepo;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AppObject } from "./AppObject";
|
|
2
|
+
import { AppObjectComponent } from "./AppObjectComponent";
|
|
3
|
+
export declare abstract class AppObjectPM<T> implements AppObjectComponent {
|
|
4
|
+
readonly type: string;
|
|
5
|
+
readonly appObject: AppObject;
|
|
6
|
+
abstract vmsAreEqual(a: T, b: T): boolean;
|
|
7
|
+
private _lastVM?;
|
|
8
|
+
get lastVM(): T | undefined;
|
|
9
|
+
private observerList;
|
|
10
|
+
addView: (updateView: (vm: T) => void) => void;
|
|
11
|
+
removeView: (updateView: (vm: T) => void) => void;
|
|
12
|
+
doUpdateView: (vm: T) => void;
|
|
13
|
+
dispose(): void;
|
|
14
|
+
constructor(appObject: AppObject, type: string);
|
|
15
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppObjectPM = void 0;
|
|
4
|
+
const Entities_1 = require("../Entities");
|
|
5
|
+
class AppObjectPM {
|
|
6
|
+
constructor(appObject, type) {
|
|
7
|
+
this.observerList = new Entities_1.ObserverList();
|
|
8
|
+
this.addView = (updateView) => {
|
|
9
|
+
this.observerList.add(updateView);
|
|
10
|
+
if (this._lastVM) {
|
|
11
|
+
updateView(this._lastVM);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
this.removeView = (updateView) => {
|
|
15
|
+
this.observerList.remove(updateView);
|
|
16
|
+
};
|
|
17
|
+
this.doUpdateView = (vm) => {
|
|
18
|
+
if (this._lastVM && this.vmsAreEqual(this._lastVM, vm)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
this._lastVM = vm;
|
|
22
|
+
this.observerList.notify(vm);
|
|
23
|
+
};
|
|
24
|
+
this.type = type;
|
|
25
|
+
this.appObject = appObject;
|
|
26
|
+
appObject.addComponent(this);
|
|
27
|
+
}
|
|
28
|
+
get lastVM() {
|
|
29
|
+
return this._lastVM;
|
|
30
|
+
}
|
|
31
|
+
dispose() {
|
|
32
|
+
this.observerList.clear();
|
|
33
|
+
if (this.appObject.getComponent(this.type) === this) {
|
|
34
|
+
this.appObject.removeComponent(this.type);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.AppObjectPM = AppObjectPM;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ObservableEntity } from "../Entities";
|
|
2
|
+
import { AppObject } from "./AppObject";
|
|
3
|
+
import { AppObjectComponent } from "./AppObjectComponent";
|
|
4
|
+
export declare abstract class AppObjectRepo extends ObservableEntity {
|
|
5
|
+
abstract has(appObjectID: string): boolean;
|
|
6
|
+
abstract add(appObject: AppObject): void;
|
|
7
|
+
abstract remove(appObjectID: string): void;
|
|
8
|
+
abstract get(appObjectID: string): AppObject | undefined;
|
|
9
|
+
abstract getOrCreate(appObjectID: string): AppObject;
|
|
10
|
+
abstract getAll(): AppObject[];
|
|
11
|
+
abstract getAppObjectComponent<T extends AppObjectComponent>(appObjectID: string, type: string): T | undefined;
|
|
12
|
+
abstract getAllAppObjectsWithComponent(componentType: string): AppObject[];
|
|
13
|
+
abstract getAllComponents<T extends AppObjectComponent>(type: string): T[];
|
|
14
|
+
abstract addAppObjectAddedObserver: (observer: (addedEntity: AppObject) => void) => void;
|
|
15
|
+
abstract removeAppObjectAddedObserver: (observer: (addedEntity: AppObject) => void) => void;
|
|
16
|
+
abstract addAppObjectRemovedObserver: (observer: (addedEntity: AppObject) => void) => void;
|
|
17
|
+
abstract removeaddAppObjectRemovedObserver: (observer: (addedEntity: AppObject) => void) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function makeAppObjectRepo(): AppObjectRepo;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeAppObjectRepo = exports.AppObjectRepo = void 0;
|
|
4
|
+
const Entities_1 = require("../Entities");
|
|
5
|
+
const AppObject_1 = require("./AppObject");
|
|
6
|
+
class AppObjectRepo extends Entities_1.ObservableEntity {
|
|
7
|
+
}
|
|
8
|
+
exports.AppObjectRepo = AppObjectRepo;
|
|
9
|
+
function makeAppObjectRepo() {
|
|
10
|
+
return new AppObjectRepoImp();
|
|
11
|
+
}
|
|
12
|
+
exports.makeAppObjectRepo = makeAppObjectRepo;
|
|
13
|
+
class AppObjectRepoImp extends AppObjectRepo {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.appObjectLookup = new Map();
|
|
17
|
+
this.onAppObjectAddedObserver = new Entities_1.ObserverList();
|
|
18
|
+
this.addAppObjectAddedObserver = (observer) => {
|
|
19
|
+
this.onAppObjectAddedObserver.add(observer);
|
|
20
|
+
};
|
|
21
|
+
this.removeAppObjectAddedObserver = (observer) => {
|
|
22
|
+
this.onAppObjectAddedObserver.remove(observer);
|
|
23
|
+
};
|
|
24
|
+
this.onAppObjectRemovedObservers = new Entities_1.ObserverList();
|
|
25
|
+
this.addAppObjectRemovedObserver = (observer) => {
|
|
26
|
+
this.onAppObjectRemovedObservers.add(observer);
|
|
27
|
+
};
|
|
28
|
+
this.removeaddAppObjectRemovedObserver = (observer) => {
|
|
29
|
+
this.onAppObjectRemovedObservers.remove(observer);
|
|
30
|
+
};
|
|
31
|
+
this.has = (id) => {
|
|
32
|
+
return this.appObjectLookup.has(id);
|
|
33
|
+
};
|
|
34
|
+
this.add = (appObject) => {
|
|
35
|
+
const existing = this.appObjectLookup.get(appObject.id);
|
|
36
|
+
if (existing) {
|
|
37
|
+
existing.removeObserver(this.notify);
|
|
38
|
+
}
|
|
39
|
+
this.appObjectLookup.set(appObject.id, appObject);
|
|
40
|
+
appObject.addObserver(this.notify);
|
|
41
|
+
this.notify();
|
|
42
|
+
this.onAppObjectAddedObserver.notify(appObject);
|
|
43
|
+
};
|
|
44
|
+
this.remove = (id) => {
|
|
45
|
+
const existing = this.appObjectLookup.get(id);
|
|
46
|
+
if (!existing)
|
|
47
|
+
return;
|
|
48
|
+
this.appObjectLookup.delete(id);
|
|
49
|
+
existing.removeObserver(this.notify);
|
|
50
|
+
this.notify();
|
|
51
|
+
this.onAppObjectRemovedObservers.notify(existing);
|
|
52
|
+
};
|
|
53
|
+
this.get = (id) => {
|
|
54
|
+
return this.appObjectLookup.get(id);
|
|
55
|
+
};
|
|
56
|
+
this.getOrCreate = (id) => {
|
|
57
|
+
const existing = this.appObjectLookup.get(id);
|
|
58
|
+
if (!existing) {
|
|
59
|
+
return AppObject_1.makeAppObject(id, this);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
return existing;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
this.getAll = () => {
|
|
66
|
+
return Array.from(this.appObjectLookup.values());
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
getAllAppObjectsWithComponent(componentType) {
|
|
70
|
+
const rArray = [];
|
|
71
|
+
this.appObjectLookup.forEach(appObj => {
|
|
72
|
+
if (appObj.hasComponent(componentType)) {
|
|
73
|
+
rArray.push(appObj);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return rArray;
|
|
77
|
+
}
|
|
78
|
+
getAllComponents(type) {
|
|
79
|
+
const rArray = [];
|
|
80
|
+
this.appObjectLookup.forEach(appObj => {
|
|
81
|
+
const aoEntity = appObj.getComponent(type);
|
|
82
|
+
if (aoEntity) {
|
|
83
|
+
rArray.push(aoEntity);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return rArray;
|
|
87
|
+
}
|
|
88
|
+
getAppObjectComponent(id, entityType) {
|
|
89
|
+
const ao = this.appObjectLookup.get(id);
|
|
90
|
+
if (!ao) {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
return ao.getComponent(entityType);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AppObject } from "./AppObject";
|
|
2
|
+
import { AppObjectComponent } from "./AppObjectComponent";
|
|
3
|
+
export declare class AppObjectUC implements AppObjectComponent {
|
|
4
|
+
readonly type: string;
|
|
5
|
+
readonly appObject: AppObject;
|
|
6
|
+
dispose(): void;
|
|
7
|
+
constructor(appObject: AppObject, type: string);
|
|
8
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppObjectUC = void 0;
|
|
4
|
+
class AppObjectUC {
|
|
5
|
+
constructor(appObject, type) {
|
|
6
|
+
this.appObject = appObject;
|
|
7
|
+
this.type = type;
|
|
8
|
+
appObject.addComponent(this);
|
|
9
|
+
}
|
|
10
|
+
dispose() {
|
|
11
|
+
if (this.appObject.getComponent(this.type) === this) {
|
|
12
|
+
this.appObject.removeComponent(this.type);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
;
|
|
16
|
+
}
|
|
17
|
+
exports.AppObjectUC = AppObjectUC;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObject } from "./AppObject";
|
|
2
|
+
import { AppObjectPM } from "./AppObjectPM";
|
|
3
|
+
import { AppObjectRepo } from "./AppObjectRepo";
|
|
4
|
+
export declare class IsEnabledPM extends AppObjectPM<boolean> {
|
|
5
|
+
static readonly type = "IsEnabledPM";
|
|
6
|
+
onEnabledChange: () => void;
|
|
7
|
+
dispose: () => void;
|
|
8
|
+
vmsAreEqual(a: boolean, b: boolean): boolean;
|
|
9
|
+
constructor(appObject: AppObject);
|
|
10
|
+
static getForID(appObjID: string, appObjects: AppObjectRepo): IsEnabledPM | undefined;
|
|
11
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IsEnabledPM = void 0;
|
|
4
|
+
const AppObjectPM_1 = require("./AppObjectPM");
|
|
5
|
+
class IsEnabledPM extends AppObjectPM_1.AppObjectPM {
|
|
6
|
+
constructor(appObject) {
|
|
7
|
+
super(appObject, IsEnabledPM.type);
|
|
8
|
+
this.onEnabledChange = () => {
|
|
9
|
+
this.doUpdateView(this.appObject.enabled);
|
|
10
|
+
};
|
|
11
|
+
this.dispose = () => {
|
|
12
|
+
this.appObject.removeObserver(this.onEnabledChange);
|
|
13
|
+
};
|
|
14
|
+
appObject.addObserver(this.onEnabledChange);
|
|
15
|
+
this.onEnabledChange();
|
|
16
|
+
}
|
|
17
|
+
vmsAreEqual(a, b) {
|
|
18
|
+
return a === b;
|
|
19
|
+
}
|
|
20
|
+
static getForID(appObjID, appObjects) {
|
|
21
|
+
const appObj = appObjects.get(appObjID);
|
|
22
|
+
if (appObj === undefined) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return appObj.getComponent(IsEnabledPM.type);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.IsEnabledPM = IsEnabledPM;
|
|
29
|
+
IsEnabledPM.type = "IsEnabledPM";
|
|
@@ -0,0 +1,19 @@
|
|
|
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("./AppObject"), exports);
|
|
14
|
+
__exportStar(require("./AppObjectEntity"), exports);
|
|
15
|
+
__exportStar(require("./AppObjectEntityRepo"), exports);
|
|
16
|
+
__exportStar(require("./AppObjectPM"), exports);
|
|
17
|
+
__exportStar(require("./AppObjectRepo"), exports);
|
|
18
|
+
__exportStar(require("./AppObjectUC"), exports);
|
|
19
|
+
__exportStar(require("./IsEnabledPM"), exports);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AppObject, AppObjectEntity } from "../../../AppObject";
|
|
2
|
+
import { Quaternion, Vector3 } from "../../../ValueObjects";
|
|
3
|
+
export declare enum ChannelModelState {
|
|
4
|
+
INIT = "Initialized",
|
|
5
|
+
LOADING = "Loading",
|
|
6
|
+
READY = "Ready",
|
|
7
|
+
ERROR = "Error"
|
|
8
|
+
}
|
|
9
|
+
export declare class ChannelModel extends AppObjectEntity {
|
|
10
|
+
static readonly type = "CHANNEL_MODEL";
|
|
11
|
+
static addIfMissing(appObj: AppObject): ChannelModel;
|
|
12
|
+
static get(appObj: AppObject): ChannelModel | undefined;
|
|
13
|
+
private _name;
|
|
14
|
+
get name(): string;
|
|
15
|
+
set name(name: string);
|
|
16
|
+
private _boundsMin;
|
|
17
|
+
get bounds_min(): Vector3;
|
|
18
|
+
set bounds_min(bounds_min: Vector3);
|
|
19
|
+
private _boundsMax;
|
|
20
|
+
get bounds_max(): Vector3;
|
|
21
|
+
set bounds_max(bounds_max: Vector3);
|
|
22
|
+
private _defaultPosition;
|
|
23
|
+
get defaultPosition(): Vector3;
|
|
24
|
+
set defaultPosition(position: Vector3);
|
|
25
|
+
private _defaultRotation;
|
|
26
|
+
get defaultRotation(): Quaternion;
|
|
27
|
+
set defaultRotation(rotation: Quaternion);
|
|
28
|
+
private _defaultScale;
|
|
29
|
+
get defaultScale(): number;
|
|
30
|
+
set defaultScale(scale: number);
|
|
31
|
+
private _state;
|
|
32
|
+
get state(): ChannelModelState;
|
|
33
|
+
set state(val: ChannelModelState);
|
|
34
|
+
private _error;
|
|
35
|
+
get error(): Error | undefined;
|
|
36
|
+
set error(val: Error | undefined);
|
|
37
|
+
private _meshList;
|
|
38
|
+
get meshList(): string[];
|
|
39
|
+
set meshList(val: string[]);
|
|
40
|
+
dispose: () => void;
|
|
41
|
+
constructor(appObject: AppObject);
|
|
42
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChannelModel = exports.ChannelModelState = void 0;
|
|
4
|
+
const AppObject_1 = require("../../../AppObject");
|
|
5
|
+
const Entities_1 = require("../../../Entities");
|
|
6
|
+
const ValueObjects_1 = require("../../../ValueObjects");
|
|
7
|
+
var ChannelModelState;
|
|
8
|
+
(function (ChannelModelState) {
|
|
9
|
+
ChannelModelState["INIT"] = "Initialized";
|
|
10
|
+
ChannelModelState["LOADING"] = "Loading";
|
|
11
|
+
ChannelModelState["READY"] = "Ready";
|
|
12
|
+
ChannelModelState["ERROR"] = "Error";
|
|
13
|
+
})(ChannelModelState = exports.ChannelModelState || (exports.ChannelModelState = {}));
|
|
14
|
+
class ChannelModel extends AppObject_1.AppObjectEntity {
|
|
15
|
+
constructor(appObject) {
|
|
16
|
+
super(appObject, ChannelModel.type);
|
|
17
|
+
this._name = new Entities_1.MemoizedString("", this.notifyOnChange);
|
|
18
|
+
this._boundsMin = new Entities_1.MemoizedVector3(ValueObjects_1.Vector3.Zero(), this.notifyOnChange);
|
|
19
|
+
this._boundsMax = new Entities_1.MemoizedVector3(ValueObjects_1.Vector3.Zero(), this.notifyOnChange);
|
|
20
|
+
this._defaultPosition = new Entities_1.MemoizedVector3(ValueObjects_1.Vector3.Zero(), this.notifyOnChange);
|
|
21
|
+
this._defaultRotation = new Entities_1.MemoizedQuaternion(ValueObjects_1.Quaternion.Identity(), this.notifyOnChange);
|
|
22
|
+
this._defaultScale = new Entities_1.MemoizedNumber(1, this.notifyOnChange);
|
|
23
|
+
this._state = new Entities_1.MemoizedString(ChannelModelState.INIT, this.notifyOnChange);
|
|
24
|
+
this._meshList = [];
|
|
25
|
+
this.dispose = () => {
|
|
26
|
+
super.dispose();
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
static addIfMissing(appObj) {
|
|
30
|
+
const existing = appObj.getComponent(this.type);
|
|
31
|
+
if (existing) {
|
|
32
|
+
return existing;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return new ChannelModel(appObj);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
static get(appObj) {
|
|
39
|
+
return appObj.getComponent(this.type);
|
|
40
|
+
}
|
|
41
|
+
get name() {
|
|
42
|
+
return this._name.val;
|
|
43
|
+
}
|
|
44
|
+
set name(name) {
|
|
45
|
+
this._name.val = name;
|
|
46
|
+
}
|
|
47
|
+
get bounds_min() {
|
|
48
|
+
return this._boundsMin.val;
|
|
49
|
+
}
|
|
50
|
+
set bounds_min(bounds_min) {
|
|
51
|
+
this._boundsMin.val = bounds_min;
|
|
52
|
+
}
|
|
53
|
+
get bounds_max() {
|
|
54
|
+
return this._boundsMax.val;
|
|
55
|
+
}
|
|
56
|
+
set bounds_max(bounds_max) {
|
|
57
|
+
this._boundsMax.val = bounds_max;
|
|
58
|
+
}
|
|
59
|
+
get defaultPosition() {
|
|
60
|
+
return this._defaultPosition.val;
|
|
61
|
+
}
|
|
62
|
+
set defaultPosition(position) {
|
|
63
|
+
this._defaultPosition.val = position;
|
|
64
|
+
}
|
|
65
|
+
get defaultRotation() {
|
|
66
|
+
return this._defaultRotation.val;
|
|
67
|
+
}
|
|
68
|
+
set defaultRotation(rotation) {
|
|
69
|
+
this._defaultRotation.val = rotation;
|
|
70
|
+
}
|
|
71
|
+
get defaultScale() {
|
|
72
|
+
return this._defaultScale.val;
|
|
73
|
+
}
|
|
74
|
+
set defaultScale(scale) {
|
|
75
|
+
this._defaultScale.val = scale;
|
|
76
|
+
}
|
|
77
|
+
get state() {
|
|
78
|
+
return this._state.val;
|
|
79
|
+
}
|
|
80
|
+
set state(val) {
|
|
81
|
+
this._state.val = val;
|
|
82
|
+
}
|
|
83
|
+
get error() {
|
|
84
|
+
return this._error;
|
|
85
|
+
}
|
|
86
|
+
set error(val) {
|
|
87
|
+
this._error = val;
|
|
88
|
+
this._state.val = ChannelModelState.ERROR;
|
|
89
|
+
}
|
|
90
|
+
get meshList() {
|
|
91
|
+
return [...this._meshList];
|
|
92
|
+
}
|
|
93
|
+
set meshList(val) {
|
|
94
|
+
this._meshList = [...val];
|
|
95
|
+
this.notifyOnChange();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.ChannelModel = ChannelModel;
|
|
99
|
+
ChannelModel.type = "CHANNEL_MODEL";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppObject, AppObjectEntityRepo, AppObjectRepo } from "../../../AppObject";
|
|
2
|
+
import { ChannelModel } from "./ChannelModel";
|
|
3
|
+
export declare class ChannelModelRepo extends AppObjectEntityRepo<ChannelModel> {
|
|
4
|
+
static readonly type = "CHANNEL_MODEL_REPO";
|
|
5
|
+
static get(appObjects: AppObjectRepo): ChannelModelRepo | undefined;
|
|
6
|
+
static addToAO(appObj: AppObject): ChannelModelRepo;
|
|
7
|
+
private memoizedIsLoading;
|
|
8
|
+
get isLoadingChannelModel(): boolean;
|
|
9
|
+
set isLoadingChannelModel(val: boolean);
|
|
10
|
+
makeIfMissing(appObject: AppObject): ChannelModel;
|
|
11
|
+
constructor(appObject: AppObject);
|
|
12
|
+
}
|