Spaces:
Sleeping
Sleeping
Pim Schreurs commited on
Commit ·
fca8857
1
Parent(s): 8194362
Auto-detect the best resolution
Browse files- index.html +3 -2
- package-lock.json +1 -1
- package.json +1 -1
- src/Simulation.js +21 -1
- src/Ui.js +11 -1
index.html
CHANGED
|
@@ -12,7 +12,8 @@
|
|
| 12 |
padding:0;
|
| 13 |
margin:0;
|
| 14 |
font-weight:bold;
|
| 15 |
-
overflow:hidden;
|
|
|
|
| 16 |
|
| 17 |
font-family: Monospace;
|
| 18 |
font-size: 12px;
|
|
@@ -172,7 +173,7 @@
|
|
| 172 |
|
| 173 |
<div id="resolution">
|
| 174 |
<h3>Resolution</h3>
|
| 175 |
-
<label><input type="radio" name="resolution" value="4"
|
| 176 |
<label><input type="radio" name="resolution" value="2"> medium</label>
|
| 177 |
<label><input type="radio" name="resolution" value="1"> high</label>
|
| 178 |
</div>
|
|
|
|
| 12 |
padding:0;
|
| 13 |
margin:0;
|
| 14 |
font-weight:bold;
|
| 15 |
+
overflow: hidden;
|
| 16 |
+
height: 120vh;
|
| 17 |
|
| 18 |
font-family: Monospace;
|
| 19 |
font-size: 12px;
|
|
|
|
| 173 |
|
| 174 |
<div id="resolution">
|
| 175 |
<h3>Resolution</h3>
|
| 176 |
+
<label><input type="radio" name="resolution" value="4"> low</label>
|
| 177 |
<label><input type="radio" name="resolution" value="2"> medium</label>
|
| 178 |
<label><input type="radio" name="resolution" value="1"> high</label>
|
| 179 |
</div>
|
package-lock.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"name": "interstellar-demo",
|
| 3 |
-
"version": "
|
| 4 |
"lockfileVersion": 1,
|
| 5 |
"requires": true,
|
| 6 |
"dependencies": {
|
|
|
|
| 1 |
{
|
| 2 |
"name": "interstellar-demo",
|
| 3 |
+
"version": "2.0.0",
|
| 4 |
"lockfileVersion": 1,
|
| 5 |
"requires": true,
|
| 6 |
"dependencies": {
|
package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"name": "interstellar-demo",
|
| 3 |
-
"version": "
|
| 4 |
"description": "Interstellar wormhole & blackhole simulator",
|
| 5 |
"scripts": {
|
| 6 |
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
|
|
|
|
| 1 |
{
|
| 2 |
"name": "interstellar-demo",
|
| 3 |
+
"version": "2.0.0",
|
| 4 |
"description": "Interstellar wormhole & blackhole simulator",
|
| 5 |
"scripts": {
|
| 6 |
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
|
src/Simulation.js
CHANGED
|
@@ -91,7 +91,13 @@ class Simulation {
|
|
| 91 |
false
|
| 92 |
)
|
| 93 |
|
| 94 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
|
| 96 |
window.addEventListener('wheel', e => {
|
| 97 |
e.preventDefault()
|
|
@@ -187,6 +193,20 @@ class Simulation {
|
|
| 187 |
this.renderer.render()
|
| 188 |
}
|
| 189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
}
|
| 191 |
|
| 192 |
export default new Simulation()
|
|
|
|
| 91 |
false
|
| 92 |
)
|
| 93 |
|
| 94 |
+
let pixelSize = Ui.getSelectedPixelSize()
|
| 95 |
+
if (!pixelSize) {
|
| 96 |
+
pixelSize = this.getSuggestedPixelSize()
|
| 97 |
+
Ui.setPixelSize(pixelSize)
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
this.renderer.setSize(window.innerWidth, window.innerHeight, pixelSize)
|
| 101 |
|
| 102 |
window.addEventListener('wheel', e => {
|
| 103 |
e.preventDefault()
|
|
|
|
| 193 |
this.renderer.render()
|
| 194 |
}
|
| 195 |
|
| 196 |
+
getSuggestedPixelSize () {
|
| 197 |
+
const pixelCount = window.innerWidth * window.innerHeight
|
| 198 |
+
let pixelSize = 4
|
| 199 |
+
while (pixelSize > 1) {
|
| 200 |
+
if (pixelCount / (pixelSize * pixelSize) < 512 * 512) {
|
| 201 |
+
pixelSize /= 2
|
| 202 |
+
}
|
| 203 |
+
else {
|
| 204 |
+
break
|
| 205 |
+
}
|
| 206 |
+
}
|
| 207 |
+
return pixelSize
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
}
|
| 211 |
|
| 212 |
export default new Simulation()
|
src/Ui.js
CHANGED
|
@@ -41,8 +41,18 @@ class UiController {
|
|
| 41 |
}, false)
|
| 42 |
}
|
| 43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
getSelectedPixelSize () {
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
}
|
| 47 |
|
| 48 |
showWebGLError () {
|
|
|
|
| 41 |
}, false)
|
| 42 |
}
|
| 43 |
|
| 44 |
+
setPixelSize (value) {
|
| 45 |
+
document.querySelector(`[name=resolution][value="${value}"]`).checked = true
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
getSelectedPixelSize () {
|
| 49 |
+
const element = document.querySelector('[name=resolution]:checked')
|
| 50 |
+
|
| 51 |
+
if (!element) {
|
| 52 |
+
return null
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
return parseInt(element.value)
|
| 56 |
}
|
| 57 |
|
| 58 |
showWebGLError () {
|