@vived/app 4.1.0 → 4.2.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/Components/Babylon/Mocks/MockPixelToSceneRayUC.d.ts +5 -0
- package/lib/Components/Babylon/Mocks/MockPixelToSceneRayUC.js +11 -0
- package/lib/Components/Babylon/Mocks/MockSceneRayPickUC.d.ts +5 -0
- package/lib/Components/Babylon/Mocks/MockSceneRayPickUC.js +11 -0
- package/lib/Components/Selection/Controller/MouseHoverOnAppObject.d.ts +11 -0
- package/lib/Components/Selection/Controller/MouseHoverOnAppObject.js +42 -0
- package/lib/Components/Selection/Controller/MousePressOnAppObject.d.ts +18 -0
- package/lib/Components/Selection/Controller/MousePressOnAppObject.js +81 -0
- package/lib/Components/Selection/Controller/MouseSelectAppObject.d.ts +11 -0
- package/lib/Components/Selection/Controller/MouseSelectAppObject.js +46 -0
- package/lib/Components/Selection/Controller/StylusHoverOnAppObject.d.ts +11 -0
- package/lib/Components/Selection/Controller/StylusHoverOnAppObject.js +42 -0
- package/lib/Components/Selection/Controller/StylusPressOnAppObject.d.ts +18 -0
- package/lib/Components/Selection/Controller/StylusPressOnAppObject.js +77 -0
- package/lib/Components/Selection/Controller/StylusSelectAppObject.d.ts +11 -0
- package/lib/Components/Selection/Controller/StylusSelectAppObject.js +44 -0
- package/lib/Components/Selection/Controller/TapToSelectAppObject.d.ts +16 -0
- package/lib/Components/Selection/Controller/TapToSelectAppObject.js +69 -0
- package/lib/Components/Selection/Controller/TouchPressOnAppObject.d.ts +18 -0
- package/lib/Components/Selection/Controller/TouchPressOnAppObject.js +78 -0
- package/lib/Components/Selection/Controller/index.d.ts +8 -0
- package/lib/Components/Selection/Controller/index.js +20 -0
- package/lib/Components/Selection/Entities/Selectable.d.ts +15 -0
- package/lib/Components/Selection/Entities/Selectable.js +48 -0
- package/lib/Components/Selection/Entities/Selection.d.ts +18 -0
- package/lib/Components/Selection/Entities/Selection.js +122 -0
- package/lib/Components/Selection/Entities/index.d.ts +2 -0
- package/lib/Components/Selection/Entities/index.js +14 -0
- package/lib/Components/Selection/PM/SelectableStatePM.d.ts +16 -0
- package/lib/Components/Selection/PM/SelectableStatePM.js +51 -0
- package/lib/Components/Selection/PM/SelectedObjectPM.d.ts +6 -0
- package/lib/Components/Selection/PM/SelectedObjectPM.js +41 -0
- package/lib/Components/Selection/PM/index.d.ts +2 -0
- package/lib/Components/Selection/PM/index.js +14 -0
- package/lib/Components/Selection/UC/HoverAppObjectUC.d.ts +11 -0
- package/lib/Components/Selection/UC/HoverAppObjectUC.js +59 -0
- package/lib/Components/Selection/UC/PressAppObjectUC.d.ts +11 -0
- package/lib/Components/Selection/UC/PressAppObjectUC.js +60 -0
- package/lib/Components/Selection/UC/SelectAppObjectUC.d.ts +11 -0
- package/lib/Components/Selection/UC/SelectAppObjectUC.js +59 -0
- package/lib/Components/Selection/UC/index.d.ts +3 -0
- package/lib/Components/Selection/UC/index.js +15 -0
- package/lib/Components/Selection/index.d.ts +4 -0
- package/lib/Components/Selection/index.js +16 -0
- package/lib/Components/index.d.ts +1 -0
- package/lib/Components/index.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
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("./MouseHoverOnAppObject"), exports);
|
|
14
|
+
__exportStar(require("./MousePressOnAppObject"), exports);
|
|
15
|
+
__exportStar(require("./MouseSelectAppObject"), exports);
|
|
16
|
+
__exportStar(require("./TapToSelectAppObject"), exports);
|
|
17
|
+
__exportStar(require("./TouchPressOnAppObject"), exports);
|
|
18
|
+
__exportStar(require("./StylusHoverOnAppObject"), exports);
|
|
19
|
+
__exportStar(require("./StylusPressOnAppObject"), exports);
|
|
20
|
+
__exportStar(require("./StylusSelectAppObject"), exports);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AppObject } from "../../../AppObject/AppObject";
|
|
2
|
+
import { AppObjectEntity } from "../../../AppObject/AppObjectEntity";
|
|
3
|
+
import { Selection } from "./Selection";
|
|
4
|
+
export declare abstract class Selectable extends AppObjectEntity {
|
|
5
|
+
static readonly type = "SELECTABLE_ENTITY";
|
|
6
|
+
abstract inSelection: Selection | undefined;
|
|
7
|
+
abstract get hovered(): boolean;
|
|
8
|
+
abstract set hovered(val: boolean);
|
|
9
|
+
abstract get pressed(): boolean;
|
|
10
|
+
abstract set pressed(val: boolean);
|
|
11
|
+
abstract get selected(): boolean;
|
|
12
|
+
abstract set selected(val: boolean);
|
|
13
|
+
static get(appObj: AppObject): Selectable | undefined;
|
|
14
|
+
}
|
|
15
|
+
export declare function makeSelectable(appObj: AppObject): Selectable;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeSelectable = exports.Selectable = void 0;
|
|
4
|
+
const AppObjectEntity_1 = require("../../../AppObject/AppObjectEntity");
|
|
5
|
+
const MemoizedBoolean_1 = require("../../../Entities/MemoizedBoolean");
|
|
6
|
+
class Selectable extends AppObjectEntity_1.AppObjectEntity {
|
|
7
|
+
static get(appObj) {
|
|
8
|
+
return appObj.getComponent(this.type);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.Selectable = Selectable;
|
|
12
|
+
Selectable.type = "SELECTABLE_ENTITY";
|
|
13
|
+
function makeSelectable(appObj) {
|
|
14
|
+
return new SelectableImp(appObj);
|
|
15
|
+
}
|
|
16
|
+
exports.makeSelectable = makeSelectable;
|
|
17
|
+
class SelectableImp extends Selectable {
|
|
18
|
+
constructor(appObject) {
|
|
19
|
+
super(appObject, Selectable.type);
|
|
20
|
+
this.memoizedHovered = new MemoizedBoolean_1.MemoizedBoolean(false, this.notifyOnChange);
|
|
21
|
+
this.memoizedPressed = new MemoizedBoolean_1.MemoizedBoolean(false, this.notifyOnChange);
|
|
22
|
+
this.memoizedSelected = new MemoizedBoolean_1.MemoizedBoolean(false, this.notifyOnChange);
|
|
23
|
+
}
|
|
24
|
+
dispose() {
|
|
25
|
+
super.dispose();
|
|
26
|
+
if (this.inSelection) {
|
|
27
|
+
this.inSelection.removeSelectable(this);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
get hovered() {
|
|
31
|
+
return this.memoizedHovered.val;
|
|
32
|
+
}
|
|
33
|
+
set hovered(val) {
|
|
34
|
+
this.memoizedHovered.val = val;
|
|
35
|
+
}
|
|
36
|
+
get pressed() {
|
|
37
|
+
return this.memoizedPressed.val;
|
|
38
|
+
}
|
|
39
|
+
set pressed(val) {
|
|
40
|
+
this.memoizedPressed.val = val;
|
|
41
|
+
}
|
|
42
|
+
get selected() {
|
|
43
|
+
return this.memoizedSelected.val;
|
|
44
|
+
}
|
|
45
|
+
set selected(val) {
|
|
46
|
+
this.memoizedSelected.val = val;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AppObject } from "../../../AppObject/AppObject";
|
|
2
|
+
import { AppObjectEntity } from "../../../AppObject/AppObjectEntity";
|
|
3
|
+
import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
|
|
4
|
+
import { Selectable } from "./Selectable";
|
|
5
|
+
export declare abstract class Selection extends AppObjectEntity {
|
|
6
|
+
static readonly type = "SELECTION_ENTITY";
|
|
7
|
+
abstract get pressedObjectId(): string | null;
|
|
8
|
+
abstract set pressedObjectId(val: string | null);
|
|
9
|
+
abstract get selectedObjectId(): string | null;
|
|
10
|
+
abstract set selectedObjectId(val: string | null);
|
|
11
|
+
abstract get hoveredObjectId(): string | null;
|
|
12
|
+
abstract set hoveredObjectId(val: string | null);
|
|
13
|
+
abstract removeSelectable(selectable: Selectable): void;
|
|
14
|
+
abstract addSelectable(selectable: Selectable): void;
|
|
15
|
+
abstract hasSelectable(id: string): boolean;
|
|
16
|
+
static get(appObjects: AppObjectRepo): Selection | undefined;
|
|
17
|
+
}
|
|
18
|
+
export declare function makeSelection(appObj: AppObject): Selection;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeSelection = exports.Selection = void 0;
|
|
4
|
+
const AppObject_1 = require("../../../AppObject");
|
|
5
|
+
const AppObjectEntity_1 = require("../../../AppObject/AppObjectEntity");
|
|
6
|
+
class Selection extends AppObjectEntity_1.AppObjectEntity {
|
|
7
|
+
static get(appObjects) {
|
|
8
|
+
return AppObject_1.getSingletonComponent(Selection.type, appObjects);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.Selection = Selection;
|
|
12
|
+
Selection.type = "SELECTION_ENTITY";
|
|
13
|
+
function makeSelection(appObj) {
|
|
14
|
+
return new SelectionImp(appObj);
|
|
15
|
+
}
|
|
16
|
+
exports.makeSelection = makeSelection;
|
|
17
|
+
class SelectionImp extends Selection {
|
|
18
|
+
constructor(appObj) {
|
|
19
|
+
super(appObj, Selection.type);
|
|
20
|
+
this.selectableLookup = new Map();
|
|
21
|
+
this._pressed = null;
|
|
22
|
+
this._selected = null;
|
|
23
|
+
this._hovered = null;
|
|
24
|
+
}
|
|
25
|
+
get pressedObjectId() {
|
|
26
|
+
return this._pressed;
|
|
27
|
+
}
|
|
28
|
+
set pressedObjectId(val) {
|
|
29
|
+
let finalVal = null;
|
|
30
|
+
if (val !== null && this.selectableLookup.has(val)) {
|
|
31
|
+
finalVal = val;
|
|
32
|
+
}
|
|
33
|
+
if (this._pressed === finalVal)
|
|
34
|
+
return;
|
|
35
|
+
const prevPressed = this._pressed;
|
|
36
|
+
this._pressed = finalVal;
|
|
37
|
+
if (prevPressed !== null) {
|
|
38
|
+
const selectable = this.selectableLookup.get(prevPressed);
|
|
39
|
+
if (selectable)
|
|
40
|
+
selectable.pressed = false;
|
|
41
|
+
}
|
|
42
|
+
if (this._pressed !== null) {
|
|
43
|
+
const selectable = this.selectableLookup.get(this._pressed);
|
|
44
|
+
if (selectable)
|
|
45
|
+
selectable.pressed = true;
|
|
46
|
+
}
|
|
47
|
+
this.notifyOnChange();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
get selectedObjectId() {
|
|
51
|
+
return this._selected;
|
|
52
|
+
}
|
|
53
|
+
set selectedObjectId(val) {
|
|
54
|
+
let finalVal = null;
|
|
55
|
+
if (val !== null && this.selectableLookup.has(val)) {
|
|
56
|
+
finalVal = val;
|
|
57
|
+
}
|
|
58
|
+
if (this._selected === finalVal)
|
|
59
|
+
return;
|
|
60
|
+
const prevPressed = this._selected;
|
|
61
|
+
this._selected = finalVal;
|
|
62
|
+
if (prevPressed !== null) {
|
|
63
|
+
const selectable = this.selectableLookup.get(prevPressed);
|
|
64
|
+
if (selectable)
|
|
65
|
+
selectable.selected = false;
|
|
66
|
+
}
|
|
67
|
+
if (this._selected !== null) {
|
|
68
|
+
const selectable = this.selectableLookup.get(this._selected);
|
|
69
|
+
if (selectable)
|
|
70
|
+
selectable.selected = true;
|
|
71
|
+
}
|
|
72
|
+
this.notifyOnChange();
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
get hoveredObjectId() {
|
|
76
|
+
return this._hovered;
|
|
77
|
+
}
|
|
78
|
+
set hoveredObjectId(val) {
|
|
79
|
+
let finalVal = null;
|
|
80
|
+
if (val !== null && this.selectableLookup.has(val)) {
|
|
81
|
+
finalVal = val;
|
|
82
|
+
}
|
|
83
|
+
if (this._hovered === finalVal)
|
|
84
|
+
return;
|
|
85
|
+
const prevPressed = this._hovered;
|
|
86
|
+
this._hovered = finalVal;
|
|
87
|
+
if (prevPressed !== null) {
|
|
88
|
+
const selectable = this.selectableLookup.get(prevPressed);
|
|
89
|
+
if (selectable)
|
|
90
|
+
selectable.hovered = false;
|
|
91
|
+
}
|
|
92
|
+
if (this._hovered !== null) {
|
|
93
|
+
const selectable = this.selectableLookup.get(this._hovered);
|
|
94
|
+
if (selectable)
|
|
95
|
+
selectable.hovered = true;
|
|
96
|
+
}
|
|
97
|
+
this.notifyOnChange();
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
removeSelectable(selectable) {
|
|
101
|
+
const id = selectable.appObject.id;
|
|
102
|
+
if (!this.selectableLookup.has(id))
|
|
103
|
+
return;
|
|
104
|
+
this.selectableLookup.delete(id);
|
|
105
|
+
if (this._pressed === id) {
|
|
106
|
+
this.pressedObjectId = null;
|
|
107
|
+
}
|
|
108
|
+
if (this._hovered === id) {
|
|
109
|
+
this.hoveredObjectId = null;
|
|
110
|
+
}
|
|
111
|
+
if (this._selected === id) {
|
|
112
|
+
this.selectedObjectId = null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
addSelectable(selectable) {
|
|
116
|
+
selectable.inSelection = this;
|
|
117
|
+
this.selectableLookup.set(selectable.appObject.id, selectable);
|
|
118
|
+
}
|
|
119
|
+
hasSelectable(id) {
|
|
120
|
+
return this.selectableLookup.has(id);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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("./Selectable"), exports);
|
|
14
|
+
__exportStar(require("./Selection"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AppObject } from "../../../AppObject/AppObject";
|
|
2
|
+
import { AppObjectPM } from "../../../AppObject/AppObjectPM";
|
|
3
|
+
export interface SelectableStateVM {
|
|
4
|
+
isSelected: boolean;
|
|
5
|
+
isPressed: boolean;
|
|
6
|
+
isHovered: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class SelectableStatePM extends AppObjectPM<SelectableStateVM> {
|
|
9
|
+
static readonly type = "SelectableStatePM";
|
|
10
|
+
private selectable?;
|
|
11
|
+
onSelectionChange: () => void;
|
|
12
|
+
vmsAreEqual(a: SelectableStateVM, b: SelectableStateVM): boolean;
|
|
13
|
+
dispose: () => void;
|
|
14
|
+
constructor(appObject: AppObject);
|
|
15
|
+
static defaultVM: SelectableStateVM;
|
|
16
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SelectableStatePM = void 0;
|
|
4
|
+
const AppObjectPM_1 = require("../../../AppObject/AppObjectPM");
|
|
5
|
+
const Selectable_1 = require("../Entities/Selectable");
|
|
6
|
+
class SelectableStatePM extends AppObjectPM_1.AppObjectPM {
|
|
7
|
+
constructor(appObject) {
|
|
8
|
+
super(appObject, SelectableStatePM.type);
|
|
9
|
+
this.onSelectionChange = () => {
|
|
10
|
+
if (!this.selectable)
|
|
11
|
+
return;
|
|
12
|
+
const vm = {
|
|
13
|
+
isHovered: this.selectable.hovered,
|
|
14
|
+
isPressed: this.selectable.pressed,
|
|
15
|
+
isSelected: this.selectable.selected,
|
|
16
|
+
};
|
|
17
|
+
this.doUpdateView(vm);
|
|
18
|
+
};
|
|
19
|
+
this.dispose = () => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
super.dispose();
|
|
22
|
+
(_a = this.selectable) === null || _a === void 0 ? void 0 : _a.removeChangeObserver(this.onSelectionChange);
|
|
23
|
+
(_b = this.selectable) === null || _b === void 0 ? void 0 : _b.removeOnDisposeObserver(this.dispose);
|
|
24
|
+
};
|
|
25
|
+
this.selectable = Selectable_1.Selectable.get(appObject);
|
|
26
|
+
if (!this.selectable) {
|
|
27
|
+
console.warn("[SelectablePM] App Object does not have a Selectable Entity");
|
|
28
|
+
this.dispose();
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.selectable.addChangeObserver(this.onSelectionChange);
|
|
32
|
+
this.selectable.addOnDisposeObserver(this.dispose);
|
|
33
|
+
this.onSelectionChange();
|
|
34
|
+
}
|
|
35
|
+
vmsAreEqual(a, b) {
|
|
36
|
+
if (a.isHovered !== b.isHovered)
|
|
37
|
+
return false;
|
|
38
|
+
if (a.isPressed !== b.isPressed)
|
|
39
|
+
return false;
|
|
40
|
+
if (a.isSelected !== b.isSelected)
|
|
41
|
+
return false;
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.SelectableStatePM = SelectableStatePM;
|
|
46
|
+
SelectableStatePM.type = "SelectableStatePM";
|
|
47
|
+
SelectableStatePM.defaultVM = {
|
|
48
|
+
isHovered: false,
|
|
49
|
+
isPressed: false,
|
|
50
|
+
isSelected: false,
|
|
51
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AppObject } from "../../../AppObject/AppObject";
|
|
2
|
+
import { AppObjectPM } from "../../../AppObject/AppObjectPM";
|
|
3
|
+
export declare abstract class SelectedObjectPM extends AppObjectPM<string | null> {
|
|
4
|
+
static readonly type = "SelectedObjectPM";
|
|
5
|
+
}
|
|
6
|
+
export declare function makeSelectedObjectPM(appObj: AppObject): SelectedObjectPM;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeSelectedObjectPM = exports.SelectedObjectPM = void 0;
|
|
4
|
+
const AppObjectPM_1 = require("../../../AppObject/AppObjectPM");
|
|
5
|
+
const Selection_1 = require("../Entities/Selection");
|
|
6
|
+
class SelectedObjectPM extends AppObjectPM_1.AppObjectPM {
|
|
7
|
+
}
|
|
8
|
+
exports.SelectedObjectPM = SelectedObjectPM;
|
|
9
|
+
SelectedObjectPM.type = "SelectedObjectPM";
|
|
10
|
+
function makeSelectedObjectPM(appObj) {
|
|
11
|
+
return new SelectedObjectPMImp(appObj);
|
|
12
|
+
}
|
|
13
|
+
exports.makeSelectedObjectPM = makeSelectedObjectPM;
|
|
14
|
+
class SelectedObjectPMImp extends SelectedObjectPM {
|
|
15
|
+
constructor(appObject) {
|
|
16
|
+
super(appObject, SelectedObjectPM.type);
|
|
17
|
+
this.onSelectionChange = () => {
|
|
18
|
+
if (!this.selection)
|
|
19
|
+
return;
|
|
20
|
+
this.doUpdateView(this.selection.selectedObjectId);
|
|
21
|
+
};
|
|
22
|
+
this.dispose = () => {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
super.dispose();
|
|
25
|
+
(_a = this.selection) === null || _a === void 0 ? void 0 : _a.removeChangeObserver(this.onSelectionChange);
|
|
26
|
+
(_b = this.selection) === null || _b === void 0 ? void 0 : _b.removeOnDisposeObserver(this.dispose);
|
|
27
|
+
};
|
|
28
|
+
this.selection = appObject.getComponent(Selection_1.Selection.type);
|
|
29
|
+
if (!this.selection) {
|
|
30
|
+
console.warn("[SelectedObjectPM] App Object does not have a Selection Entity");
|
|
31
|
+
this.dispose();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.selection.addChangeObserver(this.onSelectionChange);
|
|
35
|
+
this.selection.addOnDisposeObserver(this.dispose);
|
|
36
|
+
this.onSelectionChange();
|
|
37
|
+
}
|
|
38
|
+
vmsAreEqual(a, b) {
|
|
39
|
+
return a === b;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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("./SelectableStatePM"), exports);
|
|
14
|
+
__exportStar(require("./SelectedObjectPM"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObject } from "../../../AppObject/AppObject";
|
|
2
|
+
import { AppObjectUC } from "../../../AppObject/AppObjectUC";
|
|
3
|
+
import { ParametricLine } from "../../../ValueObjects/ParametricLine";
|
|
4
|
+
export declare abstract class HoverAppObjectUC extends AppObjectUC {
|
|
5
|
+
static readonly type = "HoverAppObjectUC";
|
|
6
|
+
abstract allowHover(): boolean;
|
|
7
|
+
abstract allowTryHover(): boolean;
|
|
8
|
+
abstract hoverSceneObject: (id: string, isHovered: boolean) => void;
|
|
9
|
+
abstract tryHoverSceneObject: (ray: ParametricLine) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function makeHoverAppObject(appObject: AppObject): HoverAppObjectUC;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeHoverAppObject = exports.HoverAppObjectUC = void 0;
|
|
4
|
+
const AppObjectUC_1 = require("../../../AppObject/AppObjectUC");
|
|
5
|
+
const Babylon_1 = require("../../Babylon");
|
|
6
|
+
const Selectable_1 = require("../Entities/Selectable");
|
|
7
|
+
const Selection_1 = require("../Entities/Selection");
|
|
8
|
+
class HoverAppObjectUC extends AppObjectUC_1.AppObjectUC {
|
|
9
|
+
}
|
|
10
|
+
exports.HoverAppObjectUC = HoverAppObjectUC;
|
|
11
|
+
HoverAppObjectUC.type = "HoverAppObjectUC";
|
|
12
|
+
function makeHoverAppObject(appObject) {
|
|
13
|
+
return new HoverAppObjectUCImp(appObject);
|
|
14
|
+
}
|
|
15
|
+
exports.makeHoverAppObject = makeHoverAppObject;
|
|
16
|
+
class HoverAppObjectUCImp extends HoverAppObjectUC {
|
|
17
|
+
constructor(appObject) {
|
|
18
|
+
super(appObject, HoverAppObjectUC.type);
|
|
19
|
+
this.allowHover = () => {
|
|
20
|
+
return true;
|
|
21
|
+
};
|
|
22
|
+
this.allowTryHover = () => {
|
|
23
|
+
return true;
|
|
24
|
+
};
|
|
25
|
+
this.tryHoverSceneObject = (ray) => {
|
|
26
|
+
if (!this.selection)
|
|
27
|
+
return;
|
|
28
|
+
if (!this.allowTryHover())
|
|
29
|
+
return;
|
|
30
|
+
const rayPick = Babylon_1.sceneRayPick(ray, this.appObjects);
|
|
31
|
+
if (!(rayPick === null || rayPick === void 0 ? void 0 : rayPick.appObjectID)) {
|
|
32
|
+
this.selection.hoveredObjectId = null;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const selectable = this.appObjects.getAppObjectComponent(rayPick.appObjectID, Selectable_1.Selectable.type);
|
|
36
|
+
if (!selectable) {
|
|
37
|
+
this.selection.hoveredObjectId = null;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.selection.hoveredObjectId = rayPick.appObjectID;
|
|
41
|
+
};
|
|
42
|
+
this.hoverSceneObject = (id, isHovered) => {
|
|
43
|
+
if (!this.selection)
|
|
44
|
+
return;
|
|
45
|
+
if (!this.allowHover())
|
|
46
|
+
return;
|
|
47
|
+
if (isHovered) {
|
|
48
|
+
this.selection.hoveredObjectId = id;
|
|
49
|
+
}
|
|
50
|
+
else if (id === this.selection.hoveredObjectId) {
|
|
51
|
+
this.selection.hoveredObjectId = null;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
this.selection = appObject.getComponent(Selection_1.Selection.type);
|
|
55
|
+
if (!this.selection) {
|
|
56
|
+
console.warn("HoverAppObjectUCImp has been added to an App Object that does not have a Selection Entity. Add an Entity before adding the UC");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObject } from "../../../AppObject/AppObject";
|
|
2
|
+
import { AppObjectUC } from "../../../AppObject/AppObjectUC";
|
|
3
|
+
import { ParametricLine } from "../../../ValueObjects/ParametricLine";
|
|
4
|
+
export declare abstract class PressAppObjectUC extends AppObjectUC {
|
|
5
|
+
static readonly type = "PressAppObjectUC";
|
|
6
|
+
abstract allowPress(): boolean;
|
|
7
|
+
abstract allowTryPress(): boolean;
|
|
8
|
+
abstract pressSceneObject: (id: string | null, isPressed: boolean) => void;
|
|
9
|
+
abstract tryPressSceneObject: (ray: ParametricLine) => string | null;
|
|
10
|
+
}
|
|
11
|
+
export declare function makePressAppObject(appObject: AppObject): PressAppObjectUC;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makePressAppObject = exports.PressAppObjectUC = void 0;
|
|
4
|
+
const AppObjectUC_1 = require("../../../AppObject/AppObjectUC");
|
|
5
|
+
const Babylon_1 = require("../../Babylon");
|
|
6
|
+
const Selectable_1 = require("../Entities/Selectable");
|
|
7
|
+
const Selection_1 = require("../Entities/Selection");
|
|
8
|
+
class PressAppObjectUC extends AppObjectUC_1.AppObjectUC {
|
|
9
|
+
}
|
|
10
|
+
exports.PressAppObjectUC = PressAppObjectUC;
|
|
11
|
+
PressAppObjectUC.type = "PressAppObjectUC";
|
|
12
|
+
function makePressAppObject(appObject) {
|
|
13
|
+
return new PressAppObjectUCImp(appObject);
|
|
14
|
+
}
|
|
15
|
+
exports.makePressAppObject = makePressAppObject;
|
|
16
|
+
class PressAppObjectUCImp extends PressAppObjectUC {
|
|
17
|
+
constructor(appObject) {
|
|
18
|
+
super(appObject, PressAppObjectUC.type);
|
|
19
|
+
this.allowPress = () => {
|
|
20
|
+
return true;
|
|
21
|
+
};
|
|
22
|
+
this.allowTryPress = () => {
|
|
23
|
+
return true;
|
|
24
|
+
};
|
|
25
|
+
this.tryPressSceneObject = (ray) => {
|
|
26
|
+
if (!this.selection)
|
|
27
|
+
return null;
|
|
28
|
+
if (!this.allowTryPress())
|
|
29
|
+
return null;
|
|
30
|
+
const rayPick = Babylon_1.sceneRayPick(ray, this.appObjects);
|
|
31
|
+
if (!(rayPick === null || rayPick === void 0 ? void 0 : rayPick.appObjectID)) {
|
|
32
|
+
this.selection.pressedObjectId = null;
|
|
33
|
+
return this.selection.pressedObjectId;
|
|
34
|
+
}
|
|
35
|
+
const selectable = this.appObjects.getAppObjectComponent(rayPick.appObjectID, Selectable_1.Selectable.type);
|
|
36
|
+
if (!selectable) {
|
|
37
|
+
this.selection.pressedObjectId = null;
|
|
38
|
+
return this.selection.pressedObjectId;
|
|
39
|
+
}
|
|
40
|
+
this.selection.pressedObjectId = rayPick.appObjectID;
|
|
41
|
+
return this.selection.pressedObjectId;
|
|
42
|
+
};
|
|
43
|
+
this.pressSceneObject = (id, isPressed) => {
|
|
44
|
+
if (!this.selection)
|
|
45
|
+
return;
|
|
46
|
+
if (!this.allowPress())
|
|
47
|
+
return;
|
|
48
|
+
if (isPressed) {
|
|
49
|
+
this.selection.pressedObjectId = id;
|
|
50
|
+
}
|
|
51
|
+
else if (id === this.selection.pressedObjectId) {
|
|
52
|
+
this.selection.pressedObjectId = null;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
this.selection = appObject.getComponent(Selection_1.Selection.type);
|
|
56
|
+
if (!this.selection) {
|
|
57
|
+
console.warn("PressAppObjectUCImp has been added to an App Object that does not have a Selection Entity. Add an Entity before adding the UC");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObject } from "../../../AppObject/AppObject";
|
|
2
|
+
import { AppObjectUC } from "../../../AppObject/AppObjectUC";
|
|
3
|
+
import { ParametricLine } from "../../../ValueObjects/ParametricLine";
|
|
4
|
+
export declare abstract class SelectAppObjectUC extends AppObjectUC {
|
|
5
|
+
static readonly type = "SelectAppObjectUC";
|
|
6
|
+
abstract allowSelect(): boolean;
|
|
7
|
+
abstract allowTrySelect(): boolean;
|
|
8
|
+
abstract selectSceneObject: (id: string, isSelected: boolean) => void;
|
|
9
|
+
abstract trySelectSceneObject: (ray: ParametricLine) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function makeSelectAppObject(appObject: AppObject): SelectAppObjectUC;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeSelectAppObject = exports.SelectAppObjectUC = void 0;
|
|
4
|
+
const AppObjectUC_1 = require("../../../AppObject/AppObjectUC");
|
|
5
|
+
const Babylon_1 = require("../../Babylon");
|
|
6
|
+
const Selectable_1 = require("../Entities/Selectable");
|
|
7
|
+
const Selection_1 = require("../Entities/Selection");
|
|
8
|
+
class SelectAppObjectUC extends AppObjectUC_1.AppObjectUC {
|
|
9
|
+
}
|
|
10
|
+
exports.SelectAppObjectUC = SelectAppObjectUC;
|
|
11
|
+
SelectAppObjectUC.type = "SelectAppObjectUC";
|
|
12
|
+
function makeSelectAppObject(appObject) {
|
|
13
|
+
return new SelectAppObjectUCImp(appObject);
|
|
14
|
+
}
|
|
15
|
+
exports.makeSelectAppObject = makeSelectAppObject;
|
|
16
|
+
class SelectAppObjectUCImp extends SelectAppObjectUC {
|
|
17
|
+
constructor(appObject) {
|
|
18
|
+
super(appObject, SelectAppObjectUC.type);
|
|
19
|
+
this.allowSelect = () => {
|
|
20
|
+
return true;
|
|
21
|
+
};
|
|
22
|
+
this.allowTrySelect = () => {
|
|
23
|
+
return true;
|
|
24
|
+
};
|
|
25
|
+
this.trySelectSceneObject = (ray) => {
|
|
26
|
+
if (!this.selection)
|
|
27
|
+
return;
|
|
28
|
+
if (!this.allowTrySelect())
|
|
29
|
+
return;
|
|
30
|
+
const rayPick = Babylon_1.sceneRayPick(ray, this.appObjects);
|
|
31
|
+
if (!(rayPick === null || rayPick === void 0 ? void 0 : rayPick.appObjectID)) {
|
|
32
|
+
this.selection.selectedObjectId = null;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const selectable = this.appObjects.getAppObjectComponent(rayPick.appObjectID, Selectable_1.Selectable.type);
|
|
36
|
+
if (!selectable) {
|
|
37
|
+
this.selection.selectedObjectId = null;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.selection.selectedObjectId = rayPick.appObjectID;
|
|
41
|
+
};
|
|
42
|
+
this.selectSceneObject = (id, isSelected) => {
|
|
43
|
+
if (!this.selection)
|
|
44
|
+
return;
|
|
45
|
+
if (!this.allowSelect())
|
|
46
|
+
return;
|
|
47
|
+
if (isSelected) {
|
|
48
|
+
this.selection.selectedObjectId = id;
|
|
49
|
+
}
|
|
50
|
+
else if (id === this.selection.selectedObjectId) {
|
|
51
|
+
this.selection.selectedObjectId = null;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
this.selection = appObject.getComponent(Selection_1.Selection.type);
|
|
55
|
+
if (!this.selection) {
|
|
56
|
+
console.warn("SelectAppObjectUCImp has been added to an App Object that does not have a Selection Entity. Add an Entity before adding the UC");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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("./HoverAppObjectUC"), exports);
|
|
14
|
+
__exportStar(require("./PressAppObjectUC"), exports);
|
|
15
|
+
__exportStar(require("./SelectAppObjectUC"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
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("./Entities"), exports);
|
|
14
|
+
__exportStar(require("./UC"), exports);
|
|
15
|
+
__exportStar(require("./PM"), exports);
|
|
16
|
+
__exportStar(require("./Controller"), exports);
|
package/lib/Components/index.js
CHANGED