@vived/app 2.8.0 → 2.8.1
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.d.ts +14 -0
- package/lib/Entities/Babylon.js +18 -0
- package/lib/Entities/MouseInput.d.ts +15 -0
- package/lib/Entities/MouseInput.js +109 -0
- package/lib/Entities/MouseSceneInput.d.ts +5 -14
- package/lib/Entities/MouseSceneInput.js +6 -24
- package/lib/Entities/index.d.ts +1 -1
- package/lib/Entities/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,30 @@
|
|
|
1
|
+
import { ParametricLine, Vector3 } from ".";
|
|
2
|
+
import { Vector2 } from "./Vector2";
|
|
1
3
|
export declare type OnBabylonChange = () => void;
|
|
4
|
+
export interface ScenePick {
|
|
5
|
+
mouseRay: ParametricLine;
|
|
6
|
+
hit: boolean;
|
|
7
|
+
worldPickPoint?: Vector3;
|
|
8
|
+
objectPickMeta?: object;
|
|
9
|
+
}
|
|
10
|
+
export declare type ScenePicker = (pixelPos: Vector2) => ScenePick;
|
|
11
|
+
export declare type SceneRayer = (pixelPos: Vector2) => ParametricLine;
|
|
2
12
|
export interface Babylon {
|
|
3
13
|
engine: unknown;
|
|
4
14
|
scene: unknown;
|
|
5
15
|
workingCanvas?: HTMLCanvasElement;
|
|
6
16
|
showInspector: boolean;
|
|
7
17
|
renderCanvas?: HTMLCanvasElement;
|
|
18
|
+
scenePick: (pixelPos: Vector2) => ScenePick;
|
|
19
|
+
sceneRay: (pixelPos: Vector2) => ParametricLine;
|
|
8
20
|
updateCanvasSize: () => void;
|
|
9
21
|
submitRenderCanvas: (canvas: HTMLCanvasElement) => void;
|
|
10
22
|
clearRenderCanvas: () => void;
|
|
11
23
|
registerResizeEnging: (resizeEngine: () => void) => void;
|
|
12
24
|
registerStartRendering: (startRendering: (canvas: HTMLCanvasElement) => void) => void;
|
|
13
25
|
registerStopRendering: (stopRendering: (canvas: HTMLCanvasElement) => void) => void;
|
|
26
|
+
registerScenePicker: (picker: ScenePicker) => void;
|
|
27
|
+
registerSceneRayer: (rayer: SceneRayer) => void;
|
|
14
28
|
addObserver: (observer: OnBabylonChange) => void;
|
|
15
29
|
removeObserver: (observer: OnBabylonChange) => void;
|
|
16
30
|
}
|
package/lib/Entities/Babylon.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeBabylon = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
4
5
|
const MemoizedBoolean_1 = require("./MemoizedBoolean");
|
|
5
6
|
const MemoizedVector2_1 = require("./MemoizedVector2");
|
|
6
7
|
const ObserverList_1 = require("./ObserverList");
|
|
@@ -11,6 +12,17 @@ function makeBabylon() {
|
|
|
11
12
|
exports.makeBabylon = makeBabylon;
|
|
12
13
|
class BabylonImp {
|
|
13
14
|
constructor() {
|
|
15
|
+
this.scenePick = () => {
|
|
16
|
+
console.warn("orignal scene picker");
|
|
17
|
+
return {
|
|
18
|
+
mouseRay: _1.ParametricLine.Forward(),
|
|
19
|
+
hit: false,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
this.sceneRay = () => {
|
|
23
|
+
console.warn("orignal scene ray");
|
|
24
|
+
return _1.ParametricLine.Forward();
|
|
25
|
+
};
|
|
14
26
|
this.observers = new ObserverList_1.ObserverList();
|
|
15
27
|
this.updateCanvasSize = () => {
|
|
16
28
|
if (!this.workingCanvas)
|
|
@@ -60,6 +72,12 @@ class BabylonImp {
|
|
|
60
72
|
this.removeObserver = (observer) => {
|
|
61
73
|
this.observers.remove(observer);
|
|
62
74
|
};
|
|
75
|
+
this.registerScenePicker = (picker) => {
|
|
76
|
+
this.scenePick = picker;
|
|
77
|
+
};
|
|
78
|
+
this.registerSceneRayer = (rayer) => {
|
|
79
|
+
this.sceneRay = rayer;
|
|
80
|
+
};
|
|
63
81
|
this.memoizedShowInspector = new MemoizedBoolean_1.MemoizedBoolean(false, this.observers.notify);
|
|
64
82
|
this.memoizedCanvasSize = new MemoizedVector2_1.MemoizedVector2(Vector2_1.Vector2.One(), this.observers.notify);
|
|
65
83
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface MouseController {
|
|
2
|
+
onClick?: (e: MouseEvent) => void;
|
|
3
|
+
onDown?: (e: MouseEvent) => void;
|
|
4
|
+
onUp?: (e: MouseEvent) => void;
|
|
5
|
+
onMove?: (e: MouseEvent) => void;
|
|
6
|
+
onWheel?: (e: WheelEvent) => void;
|
|
7
|
+
}
|
|
8
|
+
export interface MouseInput {
|
|
9
|
+
eventElement: HTMLElement | undefined;
|
|
10
|
+
setEventElement: (eventElement: HTMLElement) => void;
|
|
11
|
+
clearInputElement: () => void;
|
|
12
|
+
registerController: (controller: MouseController) => void;
|
|
13
|
+
removeController: (controller: MouseController) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function makeMouseSceneInput(): MouseInput;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeMouseSceneInput = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
function makeMouseSceneInput() {
|
|
6
|
+
return new MouseInputImp();
|
|
7
|
+
}
|
|
8
|
+
exports.makeMouseSceneInput = makeMouseSceneInput;
|
|
9
|
+
class MouseInputImp {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.controllers = [];
|
|
12
|
+
this.maxClickMovement = 5; // pixels
|
|
13
|
+
this._eventElement = undefined;
|
|
14
|
+
this.setEventElement = (eventElement) => {
|
|
15
|
+
if (this._eventElement)
|
|
16
|
+
this.clearInputElement();
|
|
17
|
+
eventElement.addEventListener("mousedown", this.onMouseDown);
|
|
18
|
+
eventElement.addEventListener("mouseup", this.onMouseUp);
|
|
19
|
+
eventElement.addEventListener("mousemove", this.onMouseMove);
|
|
20
|
+
eventElement.addEventListener("mouseout", this.onMouseOut);
|
|
21
|
+
eventElement.addEventListener("wheel", this.onWheel);
|
|
22
|
+
this._eventElement = eventElement;
|
|
23
|
+
};
|
|
24
|
+
this.clearInputElement = () => {
|
|
25
|
+
if (!this._eventElement)
|
|
26
|
+
return;
|
|
27
|
+
this._eventElement.removeEventListener("mousedown", this.onMouseDown);
|
|
28
|
+
this._eventElement.removeEventListener("mouseup", this.onMouseUp);
|
|
29
|
+
this._eventElement.removeEventListener("mousemove", this.onMouseMove);
|
|
30
|
+
this._eventElement.removeEventListener("mouseout", this.onMouseOut);
|
|
31
|
+
this._eventElement.removeEventListener("wheel", this.onWheel);
|
|
32
|
+
this._eventElement = undefined;
|
|
33
|
+
};
|
|
34
|
+
this.registerController = (controller) => {
|
|
35
|
+
this.controllers.push(controller);
|
|
36
|
+
};
|
|
37
|
+
this.removeController = (controller) => {
|
|
38
|
+
const index = this.controllers.indexOf(controller);
|
|
39
|
+
if (index >= 0) {
|
|
40
|
+
this.controllers.splice(index, 1);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
this.onMouseDown = (e) => {
|
|
44
|
+
const mousePos = new _1.Vector2(e.offsetX, e.offsetY);
|
|
45
|
+
this.controllers.forEach((c) => {
|
|
46
|
+
if (c.onDown) {
|
|
47
|
+
c.onDown(e);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
this.pressEvent = e;
|
|
51
|
+
};
|
|
52
|
+
this.onMouseUp = (e) => {
|
|
53
|
+
this.controllers.forEach((c) => {
|
|
54
|
+
if (c.onUp) {
|
|
55
|
+
c.onUp(e);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
if (!this.pressEvent)
|
|
59
|
+
return;
|
|
60
|
+
const deltaX = this.pressEvent.screenX - e.screenX;
|
|
61
|
+
const deltaY = this.pressEvent.screenY - e.screenY;
|
|
62
|
+
const delta = new _1.Vector2(deltaX, deltaY);
|
|
63
|
+
if (delta.magnitued < this.maxClickMovement) {
|
|
64
|
+
this.controllers.forEach((c) => {
|
|
65
|
+
if (c.onClick) {
|
|
66
|
+
c.onClick(e);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
this.pressEvent = undefined;
|
|
71
|
+
};
|
|
72
|
+
this.onMouseMove = (e) => {
|
|
73
|
+
this.controllers.forEach((c) => {
|
|
74
|
+
if (c.onMove) {
|
|
75
|
+
c.onMove(e);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
if (!this.pressEvent)
|
|
79
|
+
return;
|
|
80
|
+
const deltaX = this.pressEvent.screenX - e.screenX;
|
|
81
|
+
const deltaY = this.pressEvent.screenY - e.screenY;
|
|
82
|
+
const delta = new _1.Vector2(deltaX, deltaY);
|
|
83
|
+
if (delta.magnitued > this.maxClickMovement) {
|
|
84
|
+
this.pressEvent = undefined;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
this.onMouseOut = (e) => {
|
|
88
|
+
if (!this.pressEvent)
|
|
89
|
+
return;
|
|
90
|
+
const mousePos = new _1.Vector2(e.offsetX, e.offsetY);
|
|
91
|
+
this.controllers.forEach((c) => {
|
|
92
|
+
if (c.onUp) {
|
|
93
|
+
c.onUp(e);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
this.pressEvent = undefined;
|
|
97
|
+
};
|
|
98
|
+
this.onWheel = (e) => {
|
|
99
|
+
this.controllers.forEach((c) => {
|
|
100
|
+
if (c.onWheel) {
|
|
101
|
+
c.onWheel(e);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
get eventElement() {
|
|
107
|
+
return this._eventElement;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
|
-
import { ParametricLine, Vector2, Vector3 } from ".";
|
|
2
1
|
export interface MouseController {
|
|
3
|
-
onClick?: (e: MouseEvent
|
|
4
|
-
onDown?: (e: MouseEvent
|
|
5
|
-
onUp?: (e: MouseEvent
|
|
6
|
-
onMove?: (e: MouseEvent
|
|
7
|
-
onWheel?: (e: WheelEvent
|
|
2
|
+
onClick?: (e: MouseEvent) => void;
|
|
3
|
+
onDown?: (e: MouseEvent) => void;
|
|
4
|
+
onUp?: (e: MouseEvent) => void;
|
|
5
|
+
onMove?: (e: MouseEvent) => void;
|
|
6
|
+
onWheel?: (e: WheelEvent) => void;
|
|
8
7
|
}
|
|
9
|
-
export interface ScenePick {
|
|
10
|
-
mouseRay: ParametricLine;
|
|
11
|
-
hit: boolean;
|
|
12
|
-
worldPickPoint?: Vector3;
|
|
13
|
-
objectPickMeta?: object;
|
|
14
|
-
}
|
|
15
|
-
export declare type ScenePicker = (mousePos: Vector2) => ScenePick;
|
|
16
8
|
export interface MouseSceneInput {
|
|
17
9
|
eventElement: HTMLElement | undefined;
|
|
18
10
|
setEventElement: (eventElement: HTMLElement) => void;
|
|
19
11
|
clearInputElement: () => void;
|
|
20
|
-
registerScenePicker: (picker: ScenePicker) => void;
|
|
21
12
|
registerController: (controller: MouseController) => void;
|
|
22
13
|
removeController: (controller: MouseController) => void;
|
|
23
14
|
}
|
|
@@ -9,13 +9,6 @@ exports.makeMouseSceneInput = makeMouseSceneInput;
|
|
|
9
9
|
class MouseSceneInputImp {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.controllers = [];
|
|
12
|
-
this.scenePicker = (mousePos) => {
|
|
13
|
-
console.log("orignal scene picker");
|
|
14
|
-
return {
|
|
15
|
-
mouseRay: _1.ParametricLine.Forward(),
|
|
16
|
-
hit: false,
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
12
|
this.maxClickMovement = 5; // pixels
|
|
20
13
|
this._eventElement = undefined;
|
|
21
14
|
this.setEventElement = (eventElement) => {
|
|
@@ -47,25 +40,19 @@ class MouseSceneInputImp {
|
|
|
47
40
|
this.controllers.splice(index, 1);
|
|
48
41
|
}
|
|
49
42
|
};
|
|
50
|
-
this.registerScenePicker = (picker) => {
|
|
51
|
-
this.scenePicker = picker;
|
|
52
|
-
};
|
|
53
43
|
this.onMouseDown = (e) => {
|
|
54
44
|
const mousePos = new _1.Vector2(e.offsetX, e.offsetY);
|
|
55
|
-
const pick = this.scenePicker(mousePos);
|
|
56
45
|
this.controllers.forEach((c) => {
|
|
57
46
|
if (c.onDown) {
|
|
58
|
-
c.onDown(e
|
|
47
|
+
c.onDown(e);
|
|
59
48
|
}
|
|
60
49
|
});
|
|
61
50
|
this.pressEvent = e;
|
|
62
51
|
};
|
|
63
52
|
this.onMouseUp = (e) => {
|
|
64
|
-
const mousePos = new _1.Vector2(e.offsetX, e.offsetY);
|
|
65
|
-
const pick = this.scenePicker(mousePos);
|
|
66
53
|
this.controllers.forEach((c) => {
|
|
67
54
|
if (c.onUp) {
|
|
68
|
-
c.onUp(e
|
|
55
|
+
c.onUp(e);
|
|
69
56
|
}
|
|
70
57
|
});
|
|
71
58
|
if (!this.pressEvent)
|
|
@@ -76,18 +63,16 @@ class MouseSceneInputImp {
|
|
|
76
63
|
if (delta.magnitued < this.maxClickMovement) {
|
|
77
64
|
this.controllers.forEach((c) => {
|
|
78
65
|
if (c.onClick) {
|
|
79
|
-
c.onClick(e
|
|
66
|
+
c.onClick(e);
|
|
80
67
|
}
|
|
81
68
|
});
|
|
82
69
|
}
|
|
83
70
|
this.pressEvent = undefined;
|
|
84
71
|
};
|
|
85
72
|
this.onMouseMove = (e) => {
|
|
86
|
-
const mousePos = new _1.Vector2(e.offsetX, e.offsetY);
|
|
87
|
-
const pick = this.scenePicker(mousePos);
|
|
88
73
|
this.controllers.forEach((c) => {
|
|
89
74
|
if (c.onMove) {
|
|
90
|
-
c.onMove(e
|
|
75
|
+
c.onMove(e);
|
|
91
76
|
}
|
|
92
77
|
});
|
|
93
78
|
if (!this.pressEvent)
|
|
@@ -103,20 +88,17 @@ class MouseSceneInputImp {
|
|
|
103
88
|
if (!this.pressEvent)
|
|
104
89
|
return;
|
|
105
90
|
const mousePos = new _1.Vector2(e.offsetX, e.offsetY);
|
|
106
|
-
const pick = this.scenePicker(mousePos);
|
|
107
91
|
this.controllers.forEach((c) => {
|
|
108
92
|
if (c.onUp) {
|
|
109
|
-
c.onUp(e
|
|
93
|
+
c.onUp(e);
|
|
110
94
|
}
|
|
111
95
|
});
|
|
112
96
|
this.pressEvent = undefined;
|
|
113
97
|
};
|
|
114
98
|
this.onWheel = (e) => {
|
|
115
|
-
const mousePos = new _1.Vector2(e.offsetX, e.offsetY);
|
|
116
|
-
const pick = this.scenePicker(mousePos);
|
|
117
99
|
this.controllers.forEach((c) => {
|
|
118
100
|
if (c.onWheel) {
|
|
119
|
-
c.onWheel(e
|
|
101
|
+
c.onWheel(e);
|
|
120
102
|
}
|
|
121
103
|
});
|
|
122
104
|
};
|
package/lib/Entities/index.d.ts
CHANGED
package/lib/Entities/index.js
CHANGED
|
@@ -29,4 +29,4 @@ __exportStar(require("./StateMachine"), exports);
|
|
|
29
29
|
__exportStar(require("./UndoRedo"), exports);
|
|
30
30
|
__exportStar(require("./Vector2"), exports);
|
|
31
31
|
__exportStar(require("./Vector3"), exports);
|
|
32
|
-
__exportStar(require("./
|
|
32
|
+
__exportStar(require("./MouseInput"), exports);
|