@vived/app 2.43.0 → 2.45.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.
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { ObservableEntity } from "./ObservableEntity";
|
|
2
2
|
export declare class ObservableEntityRepo<T extends ObservableEntity> extends ObservableEntity {
|
|
3
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;
|
|
4
10
|
has: (id: string) => boolean;
|
|
5
11
|
add: (id: string, entity: T) => void;
|
|
6
12
|
remove: (id: string) => void;
|
|
@@ -2,10 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ObservableEntityRepo = void 0;
|
|
4
4
|
const ObservableEntity_1 = require("./ObservableEntity");
|
|
5
|
+
const ObserverList_1 = require("./ObserverList");
|
|
5
6
|
class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
|
|
6
7
|
constructor() {
|
|
7
8
|
super(...arguments);
|
|
8
9
|
this.entityLookup = new Map();
|
|
10
|
+
this.onEntityAddedObservers = new ObserverList_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 ObserverList_1.ObserverList();
|
|
18
|
+
this.addEntityRemovedObserver = (observer) => {
|
|
19
|
+
this.onEntityRemovedObservers.add(observer);
|
|
20
|
+
};
|
|
21
|
+
this.removeEntityRemovedObserver = (observer) => {
|
|
22
|
+
this.onEntityRemovedObservers.remove(observer);
|
|
23
|
+
};
|
|
9
24
|
this.has = (id) => {
|
|
10
25
|
return this.entityLookup.has(id);
|
|
11
26
|
};
|
|
@@ -17,6 +32,7 @@ class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
|
|
|
17
32
|
this.entityLookup.set(id, entity);
|
|
18
33
|
entity.addObserver(this.notify);
|
|
19
34
|
this.notify();
|
|
35
|
+
this.onEntityAddedObservers.notify(entity);
|
|
20
36
|
};
|
|
21
37
|
this.remove = (id) => {
|
|
22
38
|
const existing = this.entityLookup.get(id);
|
|
@@ -25,12 +41,14 @@ class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
|
|
|
25
41
|
this.entityLookup.delete(id);
|
|
26
42
|
existing.removeObserver(this.notify);
|
|
27
43
|
this.notify();
|
|
44
|
+
this.onEntityRemovedObservers.notify(existing);
|
|
28
45
|
};
|
|
29
46
|
this.clear = () => {
|
|
30
47
|
if (this.entityLookup.size === 0)
|
|
31
48
|
return;
|
|
32
49
|
this.entityLookup.forEach((entity) => {
|
|
33
50
|
entity.removeObserver(this.notify);
|
|
51
|
+
this.onEntityRemovedObservers.notify(entity);
|
|
34
52
|
});
|
|
35
53
|
this.entityLookup.clear();
|
|
36
54
|
this.notify();
|
|
@@ -47,11 +65,13 @@ class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
|
|
|
47
65
|
}
|
|
48
66
|
this.entityLookup.forEach((entity) => {
|
|
49
67
|
entity.removeObserver(this.notify);
|
|
68
|
+
this.onEntityRemovedObservers.notify(entity);
|
|
50
69
|
});
|
|
51
70
|
this.entityLookup.clear();
|
|
52
71
|
entities.forEach((e) => {
|
|
53
72
|
this.entityLookup.set(e.id, e.entity);
|
|
54
73
|
e.entity.addObserver(this.notify);
|
|
74
|
+
this.onEntityAddedObservers.notify(e.entity);
|
|
55
75
|
});
|
|
56
76
|
this.notify();
|
|
57
77
|
};
|
|
@@ -6,6 +6,8 @@ export declare abstract class SceneObject extends ObservableEntity {
|
|
|
6
6
|
abstract set label(label: string);
|
|
7
7
|
abstract get shown(): boolean;
|
|
8
8
|
abstract set shown(shown: boolean);
|
|
9
|
+
abstract get enabled(): boolean;
|
|
10
|
+
abstract set enabled(enabled: boolean);
|
|
9
11
|
abstract get canBeStuck(): boolean;
|
|
10
12
|
abstract stick(durationMS: number, easeFn: (val: number) => number, onStickComplete?: () => void): void;
|
|
11
13
|
abstract transform: TransformNode;
|
|
@@ -18,6 +18,7 @@ class SceneObjectImp extends SceneObject {
|
|
|
18
18
|
super();
|
|
19
19
|
this.memoizedLabel = new MemoizedString_1.MemoizedString("", this.notify);
|
|
20
20
|
this.memoizedShown = new MemoizedBoolean_1.MemoizedBoolean(true, this.notify);
|
|
21
|
+
this.memoizedEnabled = new MemoizedBoolean_1.MemoizedBoolean(true, this.notify);
|
|
21
22
|
this.transform = TransformNode_1.makeTransformNode();
|
|
22
23
|
this.stick = (durationMS, easeFn, onStickComplete) => {
|
|
23
24
|
if (!this.canBeStuck) {
|
|
@@ -42,6 +43,12 @@ class SceneObjectImp extends SceneObject {
|
|
|
42
43
|
set shown(enabled) {
|
|
43
44
|
this.memoizedShown.val = enabled;
|
|
44
45
|
}
|
|
46
|
+
get enabled() {
|
|
47
|
+
return this.memoizedEnabled.val;
|
|
48
|
+
}
|
|
49
|
+
set enabled(enabled) {
|
|
50
|
+
this.memoizedEnabled.val = enabled;
|
|
51
|
+
}
|
|
45
52
|
get canBeStuck() {
|
|
46
53
|
if (ValueObjects_1.Vector3.Equal(this.transform.localPosition, ValueObjects_1.Vector3.Zero())) {
|
|
47
54
|
return false;
|
|
@@ -24,7 +24,7 @@ function makeSetActiveModel(sceneModelRepo, sceneObjectRepo, sceneRoot, appDispa
|
|
|
24
24
|
return Promise.resolve(sceneModel);
|
|
25
25
|
}
|
|
26
26
|
if (sceneModel.state === Entities_1.SceneModelState.READY) {
|
|
27
|
-
|
|
27
|
+
setSceneObjectsEnabled(sceneObjectRepo, sceneModel);
|
|
28
28
|
return Promise.resolve(sceneModel);
|
|
29
29
|
}
|
|
30
30
|
sceneModel.error = undefined;
|
|
@@ -49,6 +49,7 @@ function makeSetActiveModel(sceneModelRepo, sceneObjectRepo, sceneRoot, appDispa
|
|
|
49
49
|
so.notify();
|
|
50
50
|
});
|
|
51
51
|
yield sceneModelRepo.modelLoader(modelID);
|
|
52
|
+
setSceneObjectsEnabled(sceneObjectRepo, sceneModel);
|
|
52
53
|
sceneModel.state = Entities_1.SceneModelState.READY;
|
|
53
54
|
sceneModelRepo.isLoadingSceneModel = false;
|
|
54
55
|
closeSpinner();
|
|
@@ -75,3 +76,14 @@ function makeSetActiveModel(sceneModelRepo, sceneObjectRepo, sceneRoot, appDispa
|
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
78
|
exports.makeSetActiveModel = makeSetActiveModel;
|
|
79
|
+
function setSceneObjectsEnabled(sceneObjectRepo, activeModel) {
|
|
80
|
+
const allSOs = sceneObjectRepo.getAll();
|
|
81
|
+
allSOs.forEach(so => {
|
|
82
|
+
if (activeModel.hasObject(so.id)) {
|
|
83
|
+
so.enabled = true;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
so.enabled = false;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|