elation-engine 0.9.114 → 0.9.115

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.
Files changed (90) hide show
  1. package/css/systems/render.css +5 -1
  2. package/package.json +1 -1
  3. package/scripts/assets.js +79 -18
  4. package/scripts/assetworker.js +1 -1
  5. package/scripts/external/holoplay.js +1494 -0
  6. package/scripts/external/octree.js +0 -0
  7. package/scripts/external/three/CSS3DRenderer.js +46 -43
  8. package/scripts/external/three/CubemapToEquirectangular.js +1 -1
  9. package/scripts/external/three/three-extras.js +4 -4
  10. package/scripts/external/three/three-loaders.js +1 -1
  11. package/scripts/external/three/three-postprocessing.js +3 -3
  12. package/scripts/external/three/three-r116dev.js +50930 -0
  13. package/scripts/external/three/three-spotlighttextures.js +50953 -0
  14. package/scripts/external/three/three-vrm.js +2 -2
  15. package/scripts/external/three/three-working.js +35968 -0
  16. package/scripts/external/three/three.js +37028 -22965
  17. package/scripts/external/three-mesh-bvh.js +5370 -0
  18. package/scripts/external/three-old/BVHLoader.js +406 -0
  19. package/scripts/external/three-old/ColladaLoader.js +5519 -0
  20. package/scripts/external/three-old/ColladaLoader2.js +1694 -0
  21. package/scripts/external/three-old/CubemapToEquirectangular.js +188 -0
  22. package/scripts/external/three-old/DDSLoader.js +269 -0
  23. package/scripts/external/three-old/FBXLoader-mine.js +5063 -0
  24. package/scripts/external/three-old/FBXLoader.js +5112 -0
  25. package/scripts/external/three-old/FlyControls.js +295 -0
  26. package/scripts/external/three-old/GLTF2Loader.js +2950 -0
  27. package/scripts/external/three-old/GLTFLoader.js +2213 -0
  28. package/scripts/external/three-old/JSONLoader.js +435 -0
  29. package/scripts/external/three-old/MTLLoader.js +533 -0
  30. package/scripts/external/three-old/OBJLoader-experimental.js +874 -0
  31. package/scripts/external/three-old/OBJLoader-working.js +727 -0
  32. package/scripts/external/three-old/OBJLoader.js +723 -0
  33. package/scripts/external/three-old/OBJMTLLoader.js +440 -0
  34. package/scripts/external/three-old/OrbitControls.js +592 -0
  35. package/scripts/external/three-old/PLYLoader.js +517 -0
  36. package/scripts/external/three-old/TransformControls.js +1100 -0
  37. package/scripts/external/three-old/VRMLLoader.js +1021 -0
  38. package/scripts/external/three-old/glTFLoader-combined.js +2513 -0
  39. package/scripts/external/three-old/nodethree.js +44018 -0
  40. package/scripts/external/three-old/render/BleachBypassShader.js +64 -0
  41. package/scripts/external/three-old/render/BloomPass.js +116 -0
  42. package/scripts/external/three-old/render/CSS3DRenderer.js +310 -0
  43. package/scripts/external/three-old/render/ClearPass.js +44 -0
  44. package/scripts/external/three-old/render/ConvolutionShader.js +101 -0
  45. package/scripts/external/three-old/render/CopyShader.js +46 -0
  46. package/scripts/external/three-old/render/EffectComposer.js +211 -0
  47. package/scripts/external/three-old/render/FXAAShader.js +88 -0
  48. package/scripts/external/three-old/render/FilmPass.js +60 -0
  49. package/scripts/external/three-old/render/FilmShader.js +104 -0
  50. package/scripts/external/three-old/render/ManualMSAARenderPass.js +168 -0
  51. package/scripts/external/three-old/render/MaskPass.js +97 -0
  52. package/scripts/external/three-old/render/OculusRenderPass.js +84 -0
  53. package/scripts/external/three-old/render/OculusRiftEffect.js +240 -0
  54. package/scripts/external/three-old/render/PortalRenderPass.js +166 -0
  55. package/scripts/external/three-old/render/RecordingPass.js +208 -0
  56. package/scripts/external/three-old/render/RenderPass.js +57 -0
  57. package/scripts/external/three-old/render/SSAOShader.js +259 -0
  58. package/scripts/external/three-old/render/SepiaShader.js +54 -0
  59. package/scripts/external/three-old/render/ShaderPass.js +66 -0
  60. package/scripts/external/three-old/render/VREffect.js +482 -0
  61. package/scripts/external/three-old/shimthree.js +23 -0
  62. package/scripts/external/three-old/stats.js +6 -0
  63. package/scripts/external/three-old/three-88dev.js +45004 -0
  64. package/scripts/external/three-old/three-backgroundoptimization.js +44432 -0
  65. package/scripts/external/three-old/three-updates.js +44735 -0
  66. package/scripts/external/three-old/three-working.js +44719 -0
  67. package/scripts/external/three-old/three.js +44431 -0
  68. package/scripts/external/three-old/threex.rendererstats.js +66 -0
  69. package/scripts/external/three-old/tween.js +13 -0
  70. package/scripts/external/webvr-polyfill-new.js +3497 -0
  71. package/scripts/external/webvr-polyfill-newest.js +3491 -0
  72. package/scripts/external/webvr-polyfill-old.js +6337 -0
  73. package/scripts/geometries.js +2 -2
  74. package/scripts/math.js +6 -6
  75. package/scripts/systems/admin.js +1 -1
  76. package/scripts/systems/controls.js +6 -4
  77. package/scripts/systems/physics.js +10 -10
  78. package/scripts/systems/render.js +58 -20
  79. package/scripts/systems/render2.js +38 -0
  80. package/scripts/things/camera.js +6 -1
  81. package/scripts/things/generic-trackedvectors.js +1875 -0
  82. package/scripts/things/generic.js +3 -4
  83. package/scripts/things/label2d.js +1 -1
  84. package/scripts/things/leapmotion.js +6 -6
  85. package/scripts/things/menu.js +1 -1
  86. package/scripts/things/player-bak.js +638 -0
  87. package/scripts/things/player.js +24 -9
  88. package/scripts/things/skysphere.js +1 -1
  89. package/scripts/things/terrain.js +1 -1
  90. package/scripts/things/text.js +1 -1
@@ -1,8 +1,12 @@
1
+ engine-systems-render-view>canvas {
2
+ position: relative;
3
+ z-index: 1;
4
+ }
1
5
  .engine_systems_render_css3d {
2
6
  position:fixed;
3
7
  top: 0;
4
8
  left: 0;
5
- z-index: -1;
9
+ z-index: 0;
6
10
  }
7
11
  .engine_render_bloom,
8
12
  .engine_render_scale {
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.114",
4
+ "version": "0.9.115",
5
5
  "main": "",
6
6
  "author": "James Baicoianu",
7
7
  "license": "MIT",
package/scripts/assets.js CHANGED
@@ -401,7 +401,7 @@ if (!ENV_IS_BROWSER) return;
401
401
  var texture = new THREE.Texture();
402
402
  var uuid = this.uuidmap[url];
403
403
  if (!uuid) {
404
- uuid = this.uuidmap[url] = THREE.Math.generateUUID();
404
+ uuid = this.uuidmap[url] = THREE.MathUtils.generateUUID();
405
405
  }
406
406
  var img = { uuid: uuid, src: url, toDataURL: function() { return url; } };
407
407
  texture.image = img;
@@ -596,12 +596,14 @@ if (!ENV_IS_BROWSER) return;
596
596
  // FIXME - we switched loader to request Blob responses, make sure Basis textures still load
597
597
  let blob = events[0].target.response;
598
598
  blob.arrayBuffer()
599
- .then(buffer => loader._createTexture(buffer))
599
+ .then(buffer => loader._createTexture([buffer]))
600
600
  .then(texture => this.handleLoadBasis(texture))
601
601
  } else if (imagetype == 'hdr') {
602
602
  let loader = new THREE.RGBELoader();
603
603
  loader.load(fullurl, texture => {
604
604
  this._texture = texture;
605
+ //const envMap = elation.engine.assets.pmremGenerator.fromEquirectangular( texture );
606
+ //this._texture = envMap.texture;
605
607
  this.loaded = true;
606
608
  this.uploaded = false;
607
609
  this.sendLoadEvents();
@@ -820,8 +822,17 @@ if (!ENV_IS_BROWSER) return;
820
822
  var framedelays = [];
821
823
  var framenum = -1;
822
824
  var lastframe = texture;
825
+ //console.log('load gif?', image);
823
826
  gif.load(function() {
824
827
  var canvas = gif.get_canvas();
828
+ /*
829
+ console.log('gif loaded!', canvas);
830
+ document.body.appendChild(newcanvas);
831
+ newcanvas.style.position = 'absolute';
832
+ newcanvas.style.zIndex = 1000;
833
+ newcanvas.style.top = 0;
834
+ newcanvas.style.left = 0;
835
+ */
825
836
 
826
837
  var doGIFFrame = function(isstatic) {
827
838
  framenum = (framenum + 1) % gif.get_length();
@@ -845,6 +856,7 @@ if (!ENV_IS_BROWSER) return;
845
856
  }
846
857
  }
847
858
  if (frame && frame.image) {
859
+ //console.log('gifframe', frame);
848
860
  /*
849
861
  texture.image = frame.image;
850
862
  texture.needsUpdate = true;
@@ -855,6 +867,8 @@ if (!ENV_IS_BROWSER) return;
855
867
  lastframe = frametex;
856
868
  }
857
869
  elation.events.fire({element: texture, type: 'asset_update', data: frametex});
870
+ elation.events.fire({element: texture, type: 'update', data: frametex});
871
+ elation.events.fire({element: this, type: 'asset_update', data: frametex});
858
872
  }
859
873
 
860
874
  if (!isstatic) {
@@ -967,12 +981,13 @@ if (!ENV_IS_BROWSER) return;
967
981
  srgb: true,
968
982
  tex_linear: true,
969
983
  preload: false,
984
+ extratracks: false,
970
985
  hls: null,
971
986
  type: THREE.UnsignedByteType,
972
- format: THREE.RGBFormat,
987
+ format: THREE.RGBAFormat,
973
988
 
974
989
  load: function() {
975
- var video = this.video;
990
+ var video = this.video || this._video;
976
991
  if (!video && this.src) {
977
992
  var url = this.getProxiedURL(this.src);
978
993
  var video = document.createElement('video');
@@ -987,17 +1002,27 @@ if (!ENV_IS_BROWSER) return;
987
1002
  if ('requestVideoFrameCallback' in video) {
988
1003
  video.requestVideoFrameCallback((time, metadata) => this.updateVideoFrame(time, metadata));
989
1004
  }
1005
+ if (this.extratracks) {
1006
+ this.extratracks.forEach(t => {
1007
+ let track = document.createElement('track');
1008
+ for (let k in t) {
1009
+ track[k] = t[k];
1010
+ }
1011
+ video.appendChild(track);
1012
+ console.log('- add track to video', track);
1013
+ });
1014
+ }
990
1015
  }
991
1016
  this._video = video;
992
- let textureFormat = (this.format == THREE.RGBFormat && this.hasalpha ? THREE.RGBAFormat : this.format);
1017
+ let textureFormat = this.format;
993
1018
  if (false && this.sbs3d) {
994
1019
  this._texture = new THREE.SBSVideoTexture(video, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, null, null, textureFormat, this.type);
995
1020
  this._texture.reverse = this.reverse3d;
996
1021
  } else {
997
1022
  this._texture = new THREE.VideoTexture(video, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, null, null, textureFormat, this.type);
998
1023
  }
999
- this._texture.minFilter = THREE.LinearFilter;
1000
- this._texture.magFilter = THREE.LinearFilter;
1024
+ //this._texture.minFilter = THREE.LinearFilter;
1025
+ //this._texture.magFilter = THREE.LinearFilter;
1001
1026
  this._texture.encoding = (this.srgb ? THREE.sRGBEncoding : THREE.LinearEncoding);
1002
1027
 
1003
1028
  elation.events.add(video, 'loadeddata', elation.bind(this, this.handleLoad));
@@ -1029,8 +1054,8 @@ if (!ENV_IS_BROWSER) return;
1029
1054
  // If autoplay failed, retry with muted video
1030
1055
  var strerr = err.toString();
1031
1056
  if (strerr.indexOf('NotAllowedError') == 0) {
1032
- video.muted = true;
1033
- video.play().catch(elation.bind(this, this.handleAutoplayError));
1057
+ //video.muted = true;
1058
+ //video.play().catch((e) => console.log('huh what', e));
1034
1059
  } else if (strerr.indexOf('NotSupportedError') == 0 && this.hls !== false) {
1035
1060
  this.initHLS();
1036
1061
  }
@@ -1053,7 +1078,7 @@ if (!ENV_IS_BROWSER) return;
1053
1078
  elation.events.fire({element: this, type: 'asset_load_progress', data: progress});
1054
1079
  },
1055
1080
  handleError: function(ev) {
1056
- //console.log('video uh oh!', ev);
1081
+ console.log('video error!', ev);
1057
1082
  //this._texture = false;
1058
1083
  //console.log('Video failed to load, try HLS', this._video.error, ev);
1059
1084
  /*
@@ -1091,23 +1116,47 @@ if (!ENV_IS_BROWSER) return;
1091
1116
  initHLS: function() {
1092
1117
  if (typeof Hls != 'function') {
1093
1118
  elation.file.get('js', 'https://cdn.jsdelivr.net/npm/hls.js@latest', elation.bind(this, this.initHLS));
1119
+ //elation.file.get('js', 'https://baicoianu.com/~bai/janusweb/test/hls-modified.js', elation.bind(this, this.initHLS));
1094
1120
  return;
1095
1121
  }
1096
1122
  let hlsConfig = {
1097
1123
  debug: false,
1098
- maxBufferLength: 10,
1099
- maxMaxBufferLength: 60,
1124
+ //maxBufferLength: 10,
1125
+ maxBufferLength: 30,
1126
+ //capLevelOnFPSDrop: true,
1127
+ //fpsDroppedMonitoringThreshold: .05,
1128
+ maxBufferSize: 500 * 1024 * 1024,
1129
+ /*
1100
1130
  xhrSetup: function (xhr,url) {
1101
1131
  //xhr.withCredentials = true; // do send cookie
1102
1132
  xhr.setRequestHeader("Access-Control-Allow-Headers","Content-Type, Accept, X-Requested-With");
1103
1133
  xhr.setRequestHeader("Access-Control-Allow-Origin",document.location.origin);
1104
1134
  xhr.setRequestHeader("Access-Control-Allow-Credentials","true");
1105
1135
  },
1136
+ */
1137
+ xhrSetup: undefined,
1138
+ progressive: false,
1139
+ fetchSetup: function(context, initParams) {
1140
+ //initParams.credentials = 'include';
1141
+ return new Request(context.url, initParams);
1142
+
1143
+ },
1106
1144
  };
1145
+ console.log('set up hls', hlsConfig);
1107
1146
  var hls = new Hls(hlsConfig);
1108
1147
 
1148
+ let mediaErrorCount = 0,
1149
+ lastErrorTime = null,
1150
+ errorTimer = setInterval(() => {
1151
+ if (lastErrorTime) {
1152
+ let timeSinceError = Date.now() - lastErrorTime;
1153
+ if (mediaErrorCount > 0 && timeSinceError >= 10000) {
1154
+ mediaErrorCount--;
1155
+ }
1156
+ }
1157
+ }, 10000);
1109
1158
  hls.on(Hls.Events.ERROR, (event, data) => {
1110
- console.log('HLS.Events.ERROR: ', event, data);
1159
+ console.log('HLS.Events.ERROR: ', event, data, mediaErrorCount);
1111
1160
  if (data.fatal) {
1112
1161
  switch (data.type) {
1113
1162
  case Hls.ErrorTypes.NETWORK_ERROR:
@@ -1124,8 +1173,17 @@ if (!ENV_IS_BROWSER) return;
1124
1173
  }
1125
1174
  //} else if (data.details === 'internalException' && data.type === 'otherError' && isMobile()) {
1126
1175
  // this.hlsDropHighestLevel();
1127
- } else if (data.details == 'bufferStalledError') {
1176
+ } else if (data.type == Hls.ErrorTypes.MEDIA_ERROR) {
1128
1177
  //hls.recoverMediaError();
1178
+ lastErrorTime = Date.now();
1179
+ mediaErrorCount++;
1180
+ if (mediaErrorCount > 4 && hls.currentLevel > 0) {
1181
+ // after 4 media errors, try stepping down to the next lowest level
1182
+ let newlevel = hls.currentLevel - 1;
1183
+ console.warn(`Stepping HLS level down from ${hls.currentLevel} to ${newlevel}`, hls);
1184
+ hls.currentLevel = newlevel;
1185
+ mediaErrorCount = 0;
1186
+ }
1129
1187
  }
1130
1188
  });
1131
1189
 
@@ -1310,6 +1368,7 @@ if (!ENV_IS_BROWSER) return;
1310
1368
  return m;
1311
1369
  },
1312
1370
  assignTextures: function(group, args) {
1371
+ return;
1313
1372
  var minFilter = (this.tex_linear && this.tex_linear != 'false' ? THREE.LinearMipMapLinearFilter : THREE.NearestFilter);
1314
1373
  var magFilter = (this.tex_linear && this.tex_linear != 'false' ? THREE.LinearFilter : THREE.NearestFilter);
1315
1374
 
@@ -1502,7 +1561,7 @@ if (!ENV_IS_BROWSER) return;
1502
1561
  complete: function(object) {
1503
1562
  this.removePlaceholders();
1504
1563
  this._model.userData.loaded = true;
1505
- //this._model.add(scene);
1564
+ //this._model.add(object);
1506
1565
  this.fillGroup(this._model, object, false);
1507
1566
 
1508
1567
  this.extractTextures(object);
@@ -1580,7 +1639,7 @@ if (!ENV_IS_BROWSER) return;
1580
1639
  var tex = material[texname];
1581
1640
  if (tex) { // && tex.image instanceof HTMLImageElement) {
1582
1641
  var img = tex.image;
1583
- var src = img.originalSrc || img.src;
1642
+ var src = img.originalSrc || img.src || img.data;
1584
1643
  if (!src) return;
1585
1644
  if (!textures[src]) {
1586
1645
  //elation.engine.assets.loadJSON([{"assettype": "image", name: src, "src": src}], this.baseurl);
@@ -1805,7 +1864,7 @@ if (!ENV_IS_BROWSER) return;
1805
1864
  }),
1806
1865
  });
1807
1866
  },
1808
- loadJSON: function(json) {
1867
+ loadJSON: function(json, replaceExisting=false) {
1809
1868
  //this.json = json;
1810
1869
  elation.events.fire({element: this, type: 'asset_load_processing'});
1811
1870
  var baseurl = (this.baseurl && this.baseurl.length > 0 ? this.baseurl : this.getBaseURL());
@@ -1815,7 +1874,7 @@ if (!ENV_IS_BROWSER) return;
1815
1874
  assetdef.baseurl = baseurl;
1816
1875
  assetdef.assetpack = this;
1817
1876
  var existing = elation.utils.arrayget(this.assetmap, assetdef.assettype + '.' + assetdef.name); //elation.engine.assets.find(assetdef.assettype, assetdef.name, true);
1818
- if (!existing) {
1877
+ if (!existing || replaceExisting) {
1819
1878
  var asset = elation.engine.assets.get(assetdef);
1820
1879
  this.assets.push(asset);
1821
1880
  if (!this.assetmap[asset.assettype]) this.assetmap[asset.assettype] = {};
@@ -2141,6 +2200,7 @@ if (!ENV_IS_BROWSER) return;
2141
2200
 
2142
2201
  let starttime = new Date().getTime();
2143
2202
  lasttime = starttime;
2203
+
2144
2204
  setInterval(() => {
2145
2205
  let d = new Date();
2146
2206
  let now = d.getTime();
@@ -2158,6 +2218,7 @@ if (!ENV_IS_BROWSER) return;
2158
2218
  lasttime = now;
2159
2219
  }
2160
2220
  }, 16);
2221
+
2161
2222
  }
2162
2223
  //this.load();
2163
2224
  },
@@ -26,7 +26,7 @@ elation.require([
26
26
 
27
27
  var uuid = srcmap[url];
28
28
  if (!uuid) {
29
- srcmap[url] = uuid = THREE.Math.generateUUID();
29
+ srcmap[url] = uuid = THREE.MathUtils.generateUUID();
30
30
  }
31
31
  var img = { uuid: uuid, src: url, toDataURL: function() { return url; } };
32
32
  scope.manager.itemStart( url );