Pim Schreurs commited on
Commit
fca8857
·
1 Parent(s): 8194362

Auto-detect the best resolution

Browse files
Files changed (5) hide show
  1. index.html +3 -2
  2. package-lock.json +1 -1
  3. package.json +1 -1
  4. src/Simulation.js +21 -1
  5. 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" checked> low</label>
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": "1.0.0",
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": "1.0.0",
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
- this.renderer.setSize(window.innerWidth, window.innerHeight, Ui.getSelectedPixelSize())
 
 
 
 
 
 
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
- return parseInt(document.querySelector('[name=resolution]:checked').value)
 
 
 
 
 
 
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 () {