/
Input.js
84 lines (61 loc) · 1.94 KB
/
Input.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
export function AttachNumberInputs(viewInfo) {
var inputs = document.getElementsByClassName("numberinput");
var info = viewInfo;
for (const input of inputs) {
input.value = info[input.id];
input.onchange = function(event) {
info[input.id] = input.value;
};
}
}
export function AttachKeyInput(keyTracker) {
keyTracker.testKey = function(key) {
if (this[key] === undefined) {
return false;
} else {
return this[key];
}
}
window.onkeydown = function(event) {
keyTracker[event.key] = true;
}
window.onkeyup = function(event) {
keyTracker[event.key] = false;
}
}
export function AttachMouseInput(viewInfo, element) {
var isMouseDown = false;
element.onmousedown = function(event) {
isMouseDown = true;
}
element.onmouseup = function(event) {
isMouseDown = false;
}
element.onmouseleave = function(event) {
isMouseDown = false;
}
element.onmousemove = function(event) {
if (isMouseDown) {
var movement = vec3.create();
vec3.set(movement, event.movementX * -0.003, event.movementY * 0.003, 0);
if (event.shiftKey) {
viewInfo.moveCamera(movement);
} else {
vec3.scale(movement, movement, -0.5);
viewInfo.rotateCamera(movement);
}
}
}
element.onwheel = function(event) {
if (event.ctrlKey || event.shiftKey) {
//move camera foward
var movement = vec3.create();
vec3.set(movement, 0, 0, (event.deltaY + event.deltaX) * -0.01);
viewInfo.moveCamera(movement);
} else {
var movement = vec2.create();
vec2.set(movement, event.deltaX * -0.001, event.deltaY * 0.001);
viewInfo.rotateCamera(movement);
}
}
}