-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
154 lines (137 loc) · 4.39 KB
/
index.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
// PRE
// obtains all obj files
// !!!
function fetchObjs(){
var files = ["head", "teapot", "teddy"];
var objList = document.getElementById("obj-list");
document.getElementById("item-rendered").innerHTML = files[0];
files.forEach(function (i){
objList.innerHTML += "<div class='dropdown-item choice'>" + i + "</div>";
});
}
// control tooltips
var tooltips = {
"reflectance": "how reflective the object is",
"shadows": "toggle object shadows on/off",
"highlights": "toggle object highlights on/off"
}
window.onmouseover = function(event) {
if(event.target.matches('.has-tooltip')){
let key = event.target.innerHTML;
event.target.innerHTML = "<span class='tooltiptext'>" + tooltips[key] + "</span>" + key;
}
}
// keyEvents
// !!!
var keyEvents = new Map();
keyEvents.set("W", "camera back"); // writing "position" because its the longest word, fix as needed
keyEvents.set("S", "camera forwards");
keyEvents.set("A", "rotate camera");
keyEvents.set("D", "rotate camera");
keyEvents.set("spc", "rotate camera");
keyEvents.set("Q", "rotate camera");
keyEvents.set("up", "rotate object");
keyEvents.set("down", "rotate object");
keyEvents.set("left", "rotate object");
keyEvents.set("right", "rotate object");
keyEvents.set("shift Q", "stop rendering");
function getLegend(){
console.log(keyEvents);
var leg = document.getElementById("legend");
keyEvents.forEach(function (key, value) {
leg.innerHTML +=
"<div class='legend-entry'> \
<div class='highlight key'>" + value + "</div> \
<div class='secondary description'>" + key + "</div> \
</div>";
});
}
// ACTIONS
function togglePanel() {
var togglePanelBtn = document.getElementById('toggle-panel');
var clopen = togglePanelBtn.className;
var controlPanel = document.getElementById("control-panel");
var panelState = controlPanel.className;
var contentList = document.querySelectorAll('#control-panel > *:not(#bottom-controls)');
if(clopen.includes("closed")){
togglePanelBtn.className = clopen.replace("closed", "opened");
controlPanel.className = panelState.replace("compact", "expanded");
contentList.forEach(function(i) {
if(!(i.id == "#bottom-controls")){
i.style.marginBottom = "6%";
}
if(i.classList.contains("hidden")){
i.className = i.className.replace("hidden", "shown");
}
});
} else if (clopen.includes("opened")){
togglePanelBtn.className = clopen.replace("opened", "closed");
controlPanel.className = panelState.replace("expanded", "compact");
contentList.forEach(function(i) {
if(!(i.id == "#bottom-controls")){
i.style.marginBottom = "3%";
}
if(i.classList.contains("shown")){
i.className = i.className.replace("shown", "hidden");
}
});
}
}
function showDropdown() {
document.getElementById("obj-list").classList.toggle("shown");
}
// Close the dropdown if the user clicks outside of it
window.onclick = function(event) {
var dropdownList = document.getElementById("obj-list");
if (!event.target.matches('.dropdown-item')) {
if (!event.target.matches('#item-rendered') && !event.target.matches('.dropdown-icon')) {
if (dropdownList.classList.contains('shown')) {
dropdownList.classList.remove('shown');
}
}
} else if (!event.target.matches('#dropdown-item-main')) {
swapObject(event.target.innerHTML);
if (dropdownList.classList.contains('shown')) {
dropdownList.classList.remove('shown');
}
}
}
// changes obj to be rendered
// !!!
// @henry
function swapObject(name){
var previous = document.getElementById("item-rendered").innerHTML;
document.getElementById("item-rendered").innerHTML = name;
// now acutally swap the objects
}
// reflectance parameter stuff
// !!!
function setReflectanceParameter(){
var rp = document.getElementById("reflectance-slider").value;
}
// !!!
function toggleShadows(){
var shadowState = document.getElementById("shadow-toggle").checked;
// now toggle shadow
}
// !!!
function toggleHighlights(){
var highlightState = document.getElementById("shadow-toggle").checked;
// now toggle highlights
}
// Full screen handling
function toggleFS(){
document.getElementById("control-panel").classList.toggle("fs");
document.querySelectorAll('.fs-icon').forEach(function (i){
i.classList.toggle("hidden");
});
}
// mobile begging
function prettyPrettyPlease(){
let cats = document.getElementsByClassName("hidden cat");
if (cats.length > 0){
cats[0].classList.remove("hidden");
} else {
window.open('https://github.com/econaxis/renderer/');
}
}