elation-engine 0.9.122 → 0.9.123

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "elation-engine",
3
3
  "description": "WebGL/WebVR engine written in Javascript",
4
- "version": "0.9.122",
4
+ "version": "0.9.123",
5
5
  "main": "",
6
6
  "author": "James Baicoianu",
7
7
  "license": "MIT",
package/scripts/assets.js CHANGED
@@ -80,11 +80,14 @@ elation.require(['utils.workerpool', 'engine.external.three.three', 'engine.exte
80
80
  }
81
81
  },
82
82
  initTextureLoaders: function(rendersystem, libpath) {
83
+ this.rendersystem = rendersystem;
83
84
  let renderer = rendersystem.renderer;
85
+ /*
84
86
  let basisloader = new THREE.BasisTextureLoader();
85
87
  basisloader.setTranscoderPath(libpath);
86
88
  basisloader.detectSupport(renderer);
87
89
  this.basisloader = basisloader;
90
+ */
88
91
 
89
92
  this.ktx2loader = new THREE.KTX2Loader();
90
93
  this.ktx2loader.setTranscoderPath(libpath);
@@ -94,7 +97,6 @@ elation.require(['utils.workerpool', 'engine.external.three.three', 'engine.exte
94
97
  pmremGenerator.compileEquirectangularShader();
95
98
  this.pmremGenerator = pmremGenerator;
96
99
 
97
- this.rendersystem = rendersystem;
98
100
  },
99
101
  loadAssetPack: function(url, baseurl) {
100
102
  this.assetroot = new elation.engine.assets.pack({name: url, src: url, baseurl: baseurl});
@@ -178,10 +178,13 @@ elation.require([
178
178
  renderer.getViewport(oldviewport);
179
179
  renderer.setViewport(viewport);
180
180
  renderer.setRenderTarget(rendertarget);
181
+ let isXR = renderer.xr.enabled;
182
+ renderer.xr.enabled = false;
181
183
  renderer.render(scene, camera);
182
184
  renderer.readRenderTargetPixels(rendertarget, 0, 0, size, size, pixeldata);
183
185
  renderer.setRenderTarget(oldrendertarget);
184
186
  renderer.setViewport(oldviewport);
187
+ renderer.xr.enabled = isXR;
185
188
 
186
189
  texture.encoding = oldencoding;
187
190
 
@@ -1476,7 +1479,10 @@ console.log('toggle render mode: ' + this.rendermode + ' => ' + mode, passidx, l
1476
1479
  img = resized.toDataURL('image/jpeg');
1477
1480
  } else if (format == 'png') {
1478
1481
  img = resized.toDataURL('image/png');
1479
- };
1482
+ } else if (format == 'rgba') {
1483
+ let pixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
1484
+ img = pixels.data;
1485
+ }
1480
1486
  if (img) {
1481
1487
  resolve(img);
1482
1488
  } else {
@@ -1529,7 +1529,9 @@ elation.component.add("engine.things.generic", function() {
1529
1529
  }
1530
1530
  return orient;
1531
1531
  }
1532
- this.worldToLocalOrientation = function(orient) {
1532
+ this.worldToLocalOrientation = (function() {
1533
+ const worldorient = new THREE.Quaternion();
1534
+ return function(orient) {
1533
1535
  if (!orient) orient = new THREE.Quaternion();
1534
1536
  /*
1535
1537
  var n = this.parent;
@@ -1541,10 +1543,21 @@ elation.component.add("engine.things.generic", function() {
1541
1543
  return orient.multiply(worldorient);
1542
1544
  */
1543
1545
  // FIXME - this is cheating!
1544
- var tmpquat = new THREE.Quaternion();
1545
- return orient.multiply(tmpquat.copy(this.objects.dynamics.orientationWorld).inverse());
1546
-
1547
- }
1546
+ //var tmpquat = new THREE.Quaternion();
1547
+ //return orient.multiply(tmpquat.copy(this.objects.dynamics.orientationWorld).invert());
1548
+ if (!orient) orient = new THREE.Quaternion();
1549
+
1550
+ var n = this.parent;
1551
+ worldorient.copy(this.orientation);
1552
+
1553
+ while (n && n.orientation) {
1554
+ worldorient.premultiply(n.orientation);
1555
+ n = n.parent;
1556
+ }
1557
+
1558
+ return orient.multiply(worldorient.invert());
1559
+ }
1560
+ })();
1548
1561
  this.getWorldPosition = function(target) {
1549
1562
  if (!target) target = new THREE.Vector3();
1550
1563
  if (this.objects['3d'].matrixWorldNeedsUpdate) {
@@ -77,6 +77,7 @@ elation.require(['engine.things.generic', 'engine.things.camera', 'engine.things
77
77
  this.viewmatrix = new THREE.Matrix4();
78
78
 
79
79
  this.gravityVector = new THREE.Vector3();
80
+ this.lastjumptime = 0;
80
81
 
81
82
  elation.events.add(this.engine, 'engine_frame', elation.bind(this, this.engine_frame));
82
83
  elation.events.add(this.engine, 'engine_frame', elation.bind(this, this.handleTargeting));
@@ -206,7 +207,7 @@ elation.require(['engine.things.generic', 'engine.things.camera', 'engine.things
206
207
  // The hardcoded offset is also specific to my own personal set-up, and helps to keep leap motion and tracked controllers in sync
207
208
  this.tracker = this.head.spawn('objecttracker', null, {player: this, position: [0, -.05, -.185]});
208
209
  this.camera = this.head.spawn('camera', this.name + '_camera', { position: [0,0,0], mass: 0.1, player_id: this.properties.player_id } );
209
- this.camera.objects['3d'].add(this.ears);
210
+ this.head.objects['3d'].add(this.ears);
210
211
 
211
212
  //var camhelper = new THREE.CameraHelper(this.camera.camera);
212
213
  //this.engine.systems.world.scene['world-3d'].add(camhelper);
@@ -332,7 +333,7 @@ elation.require(['engine.things.generic', 'engine.things.camera', 'engine.things
332
333
  this.frictionForce.update(this.properties.movefriction);
333
334
  if (this.controlstate['jump']) {
334
335
  this.jumpForce.update(new THREE.Vector3(0, this.jumpstrength, 0));
335
- console.log('jump up!', this.jumpForce.force.toArray());
336
+ //console.log('jump up!', this.jumpForce.force.toArray());
336
337
  setTimeout(elation.bind(this, function() {
337
338
  this.jumpForce.update(new THREE.Vector3(0, 0, 0));
338
339
  }), this.jumptime);
@@ -640,7 +641,13 @@ elation.require(['engine.things.generic', 'engine.things.camera', 'engine.things
640
641
  }
641
642
  this.handleJump = function(ev) {
642
643
  var keydown = ev.value;
643
- if (!keydown) {
644
+ if (keydown) {
645
+ if (ev.timeStamp - this.lastjumptime < 250) {
646
+ console.log('toggle flying');
647
+ this.toggle_flying();
648
+ }
649
+ this.lastjumptime = ev.timeStamp;
650
+ } else {
644
651
  this.jumpForce.update(new THREE.Vector3(0, 0, 0));
645
652
  }
646
653
  }