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.
- package/css/systems/render.css +5 -1
- package/package.json +1 -1
- package/scripts/assets.js +79 -18
- package/scripts/assetworker.js +1 -1
- package/scripts/external/holoplay.js +1494 -0
- package/scripts/external/octree.js +0 -0
- package/scripts/external/three/CSS3DRenderer.js +46 -43
- package/scripts/external/three/CubemapToEquirectangular.js +1 -1
- package/scripts/external/three/three-extras.js +4 -4
- package/scripts/external/three/three-loaders.js +1 -1
- package/scripts/external/three/three-postprocessing.js +3 -3
- package/scripts/external/three/three-r116dev.js +50930 -0
- package/scripts/external/three/three-spotlighttextures.js +50953 -0
- package/scripts/external/three/three-vrm.js +2 -2
- package/scripts/external/three/three-working.js +35968 -0
- package/scripts/external/three/three.js +37028 -22965
- package/scripts/external/three-mesh-bvh.js +5370 -0
- package/scripts/external/three-old/BVHLoader.js +406 -0
- package/scripts/external/three-old/ColladaLoader.js +5519 -0
- package/scripts/external/three-old/ColladaLoader2.js +1694 -0
- package/scripts/external/three-old/CubemapToEquirectangular.js +188 -0
- package/scripts/external/three-old/DDSLoader.js +269 -0
- package/scripts/external/three-old/FBXLoader-mine.js +5063 -0
- package/scripts/external/three-old/FBXLoader.js +5112 -0
- package/scripts/external/three-old/FlyControls.js +295 -0
- package/scripts/external/three-old/GLTF2Loader.js +2950 -0
- package/scripts/external/three-old/GLTFLoader.js +2213 -0
- package/scripts/external/three-old/JSONLoader.js +435 -0
- package/scripts/external/three-old/MTLLoader.js +533 -0
- package/scripts/external/three-old/OBJLoader-experimental.js +874 -0
- package/scripts/external/three-old/OBJLoader-working.js +727 -0
- package/scripts/external/three-old/OBJLoader.js +723 -0
- package/scripts/external/three-old/OBJMTLLoader.js +440 -0
- package/scripts/external/three-old/OrbitControls.js +592 -0
- package/scripts/external/three-old/PLYLoader.js +517 -0
- package/scripts/external/three-old/TransformControls.js +1100 -0
- package/scripts/external/three-old/VRMLLoader.js +1021 -0
- package/scripts/external/three-old/glTFLoader-combined.js +2513 -0
- package/scripts/external/three-old/nodethree.js +44018 -0
- package/scripts/external/three-old/render/BleachBypassShader.js +64 -0
- package/scripts/external/three-old/render/BloomPass.js +116 -0
- package/scripts/external/three-old/render/CSS3DRenderer.js +310 -0
- package/scripts/external/three-old/render/ClearPass.js +44 -0
- package/scripts/external/three-old/render/ConvolutionShader.js +101 -0
- package/scripts/external/three-old/render/CopyShader.js +46 -0
- package/scripts/external/three-old/render/EffectComposer.js +211 -0
- package/scripts/external/three-old/render/FXAAShader.js +88 -0
- package/scripts/external/three-old/render/FilmPass.js +60 -0
- package/scripts/external/three-old/render/FilmShader.js +104 -0
- package/scripts/external/three-old/render/ManualMSAARenderPass.js +168 -0
- package/scripts/external/three-old/render/MaskPass.js +97 -0
- package/scripts/external/three-old/render/OculusRenderPass.js +84 -0
- package/scripts/external/three-old/render/OculusRiftEffect.js +240 -0
- package/scripts/external/three-old/render/PortalRenderPass.js +166 -0
- package/scripts/external/three-old/render/RecordingPass.js +208 -0
- package/scripts/external/three-old/render/RenderPass.js +57 -0
- package/scripts/external/three-old/render/SSAOShader.js +259 -0
- package/scripts/external/three-old/render/SepiaShader.js +54 -0
- package/scripts/external/three-old/render/ShaderPass.js +66 -0
- package/scripts/external/three-old/render/VREffect.js +482 -0
- package/scripts/external/three-old/shimthree.js +23 -0
- package/scripts/external/three-old/stats.js +6 -0
- package/scripts/external/three-old/three-88dev.js +45004 -0
- package/scripts/external/three-old/three-backgroundoptimization.js +44432 -0
- package/scripts/external/three-old/three-updates.js +44735 -0
- package/scripts/external/three-old/three-working.js +44719 -0
- package/scripts/external/three-old/three.js +44431 -0
- package/scripts/external/three-old/threex.rendererstats.js +66 -0
- package/scripts/external/three-old/tween.js +13 -0
- package/scripts/external/webvr-polyfill-new.js +3497 -0
- package/scripts/external/webvr-polyfill-newest.js +3491 -0
- package/scripts/external/webvr-polyfill-old.js +6337 -0
- package/scripts/geometries.js +2 -2
- package/scripts/math.js +6 -6
- package/scripts/systems/admin.js +1 -1
- package/scripts/systems/controls.js +6 -4
- package/scripts/systems/physics.js +10 -10
- package/scripts/systems/render.js +58 -20
- package/scripts/systems/render2.js +38 -0
- package/scripts/things/camera.js +6 -1
- package/scripts/things/generic-trackedvectors.js +1875 -0
- package/scripts/things/generic.js +3 -4
- package/scripts/things/label2d.js +1 -1
- package/scripts/things/leapmotion.js +6 -6
- package/scripts/things/menu.js +1 -1
- package/scripts/things/player-bak.js +638 -0
- package/scripts/things/player.js +24 -9
- package/scripts/things/skysphere.js +1 -1
- package/scripts/things/terrain.js +1 -1
- package/scripts/things/text.js +1 -1
package/css/systems/render.css
CHANGED
package/package.json
CHANGED
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.
|
|
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.
|
|
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 =
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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
|
},
|
package/scripts/assetworker.js
CHANGED
|
@@ -26,7 +26,7 @@ elation.require([
|
|
|
26
26
|
|
|
27
27
|
var uuid = srcmap[url];
|
|
28
28
|
if (!uuid) {
|
|
29
|
-
srcmap[url] = uuid = THREE.
|
|
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 );
|