awacke1 commited on
Commit
1d626f8
·
verified ·
1 Parent(s): 1abb14b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -24
app.py CHANGED
@@ -11,8 +11,11 @@ def load_aframe_and_extras():
11
  let score = 0;
12
  let selectedEntity = null;
13
  let velocity = {x: 0, y: 0, z: 0};
 
14
  let maxSpeed = 0.5;
15
  let accel = 0.02;
 
 
16
 
17
  AFRAME.registerComponent('draggable', {
18
  init: function () {
@@ -112,63 +115,75 @@ def load_aframe_and_extras():
112
 
113
  function flyCamera(action) {
114
  var rig = document.querySelector('#rig');
115
- var rot = rig.getAttribute('rotation');
116
- var rSpeed = 2;
117
 
118
  switch(action) {
119
  case 'moveLeft':
120
- velocity.x = Math.max(velocity.x - accel, -maxSpeed);
 
 
 
 
121
  break;
122
  case 'moveRight':
123
- velocity.x = Math.min(velocity.x + accel, maxSpeed);
 
 
 
 
124
  break;
125
- case 'moveUp':
126
- velocity.y = Math.min(velocity.y + accel, maxSpeed);
127
  break;
128
- case 'moveDown':
129
- velocity.y = Math.max(velocity.y - accel, -maxSpeed);
130
  break;
131
- case 'panLeft':
132
- rot.y += rSpeed;
133
  break;
134
- case 'panRight':
135
- rot.y -= rSpeed;
136
  break;
137
  case 'forward':
138
  var cam = document.querySelector('[camera]');
139
  var dir = new THREE.Vector3();
140
  cam.object3D.getWorldDirection(dir);
141
- var pos = rig.getAttribute('position');
142
  pos.x += dir.x * 0.1;
143
  pos.y += dir.y * 0.1;
144
  pos.z += dir.z * 0.1;
145
- rig.setAttribute('position', pos);
146
  break;
147
  case 'backward':
148
  var cam = document.querySelector('[camera]');
149
  var dir = new THREE.Vector3();
150
  cam.object3D.getWorldDirection(dir);
151
- var pos = rig.getAttribute('position');
152
  pos.x -= dir.x * 0.1;
153
  pos.y -= dir.y * 0.1;
154
  pos.z -= dir.z * 0.1;
155
- rig.setAttribute('position', pos);
156
  break;
157
  case 'stop':
158
  velocity = {x: 0, y: 0, z: 0};
 
159
  moveCamera('center');
160
  break;
161
  }
162
- rig.setAttribute('rotation', rot);
163
  }
164
 
165
  function updateCameraPosition() {
166
  var rig = document.querySelector('#rig');
167
  var pos = rig.getAttribute('position');
 
 
168
  pos.x += velocity.x;
169
- pos.y = Math.max(1, pos.y + velocity.y); // Prevent camera from going below y=1
170
  pos.z += velocity.z;
 
 
 
 
 
171
  rig.setAttribute('position', pos);
 
172
  requestAnimationFrame(updateCameraPosition);
173
  }
174
 
@@ -202,12 +217,12 @@ def load_aframe_and_extras():
202
  case '7': moveCamera('angle2'); break;
203
  case '8': moveCamera('angle3'); break;
204
  case '9': moveCamera('angle4'); break;
205
- case 'q': flyCamera('moveLeft'); break;
206
- case 'e': flyCamera('moveRight'); break;
207
- case 'z': flyCamera('moveUp'); break;
208
- case 'c': flyCamera('moveDown'); break;
209
- case 'a': flyCamera('panLeft'); break;
210
- case 'd': flyCamera('panRight'); break;
211
  case 'w': flyCamera('forward'); break;
212
  case 'x': flyCamera('backward'); break;
213
  case 's': flyCamera('stop'); break;
 
11
  let score = 0;
12
  let selectedEntity = null;
13
  let velocity = {x: 0, y: 0, z: 0};
14
+ let rotVelocity = {x: 0, y: 0, z: 0};
15
  let maxSpeed = 0.5;
16
  let accel = 0.02;
17
+ let maxRotSpeed = 2;
18
+ let rotAccel = 0.1;
19
 
20
  AFRAME.registerComponent('draggable', {
21
  init: function () {
 
115
 
116
  function flyCamera(action) {
117
  var rig = document.querySelector('#rig');
118
+ var pos = rig.getAttribute('position');
 
119
 
120
  switch(action) {
121
  case 'moveLeft':
122
+ var leftDir = new THREE.Vector3(-1, 0, 0);
123
+ leftDir.applyQuaternion(rig.object3D.quaternion);
124
+ pos.x += leftDir.x * 0.1;
125
+ pos.y += leftDir.y * 0.1;
126
+ pos.z += leftDir.z * 0.1;
127
  break;
128
  case 'moveRight':
129
+ var rightDir = new THREE.Vector3(1, 0, 0);
130
+ rightDir.applyQuaternion(rig.object3D.quaternion);
131
+ pos.x += rightDir.x * 0.1;
132
+ pos.y += rightDir.y * 0.1;
133
+ pos.z += rightDir.z * 0.1;
134
  break;
135
+ case 'rotateCCW':
136
+ rotVelocity.y = Math.min(rotVelocity.y + rotAccel, maxRotSpeed);
137
  break;
138
+ case 'rotateCW':
139
+ rotVelocity.y = Math.max(rotVelocity.y - rotAccel, -maxRotSpeed);
140
  break;
141
+ case 'rollCCW':
142
+ rotVelocity.z = Math.min(rotVelocity.z + rotAccel, maxRotSpeed);
143
  break;
144
+ case 'rollCW':
145
+ rotVelocity.z = Math.max(rotVelocity.z - rotAccel, -maxRotSpeed);
146
  break;
147
  case 'forward':
148
  var cam = document.querySelector('[camera]');
149
  var dir = new THREE.Vector3();
150
  cam.object3D.getWorldDirection(dir);
 
151
  pos.x += dir.x * 0.1;
152
  pos.y += dir.y * 0.1;
153
  pos.z += dir.z * 0.1;
 
154
  break;
155
  case 'backward':
156
  var cam = document.querySelector('[camera]');
157
  var dir = new THREE.Vector3();
158
  cam.object3D.getWorldDirection(dir);
 
159
  pos.x -= dir.x * 0.1;
160
  pos.y -= dir.y * 0.1;
161
  pos.z -= dir.z * 0.1;
 
162
  break;
163
  case 'stop':
164
  velocity = {x: 0, y: 0, z: 0};
165
+ rotVelocity = {x: 0, y: 0, z: 0};
166
  moveCamera('center');
167
  break;
168
  }
169
+ rig.setAttribute('position', pos);
170
  }
171
 
172
  function updateCameraPosition() {
173
  var rig = document.querySelector('#rig');
174
  var pos = rig.getAttribute('position');
175
+ var rot = rig.getAttribute('rotation');
176
+
177
  pos.x += velocity.x;
178
+ pos.y = Math.max(1, pos.y + velocity.y);
179
  pos.z += velocity.z;
180
+
181
+ rot.x += rotVelocity.x;
182
+ rot.y += rotVelocity.y;
183
+ rot.z += rotVelocity.z;
184
+
185
  rig.setAttribute('position', pos);
186
+ rig.setAttribute('rotation', rot);
187
  requestAnimationFrame(updateCameraPosition);
188
  }
189
 
 
217
  case '7': moveCamera('angle2'); break;
218
  case '8': moveCamera('angle3'); break;
219
  case '9': moveCamera('angle4'); break;
220
+ case 'q': flyCamera('rotateCCW'); break;
221
+ case 'e': flyCamera('rotateCW'); break;
222
+ case 'z': flyCamera('rollCCW'); break;
223
+ case 'c': flyCamera('rollCW'); break;
224
+ case 'a': flyCamera('moveLeft'); break;
225
+ case 'd': flyCamera('moveRight'); break;
226
  case 'w': flyCamera('forward'); break;
227
  case 'x': flyCamera('backward'); break;
228
  case 's': flyCamera('stop'); break;