elation-engine 0.9.113 → 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 +103 -20
- package/scripts/assetworker.js +18 -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 +1553 -392
- package/scripts/external/three/three-icosa.js +2575 -0
- package/scripts/external/three/three-loaders.js +925 -133
- 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 +38532 -24087
- 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 +28 -10
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
elation.require(['utils.workerpool', 'engine.external.three.three', 'engine.external.libgif', 'engine.external.textdecoder-polyfill', 'engine.external.three.three-loaders', 'engine.external.three.three-vrm'], function() {
|
|
1
|
+
elation.require(['utils.workerpool', 'engine.external.three.three', 'engine.external.libgif', 'engine.external.textdecoder-polyfill', 'engine.external.three.three-loaders', 'engine.external.three.three-vrm', 'engine.external.three.three-icosa'], function() {
|
|
2
2
|
|
|
3
3
|
THREE.Cache.enabled = true;
|
|
4
4
|
|
|
@@ -86,6 +86,10 @@ elation.require(['utils.workerpool', 'engine.external.three.three', 'engine.exte
|
|
|
86
86
|
basisloader.detectSupport(renderer);
|
|
87
87
|
this.basisloader = basisloader;
|
|
88
88
|
|
|
89
|
+
this.ktx2loader = new THREE.KTX2Loader();
|
|
90
|
+
this.ktx2loader.setTranscoderPath(libpath);
|
|
91
|
+
this.ktx2loader.detectSupport(renderer);
|
|
92
|
+
|
|
89
93
|
let pmremGenerator = new THREE.PMREMGenerator( renderer );
|
|
90
94
|
pmremGenerator.compileEquirectangularShader();
|
|
91
95
|
this.pmremGenerator = pmremGenerator;
|
|
@@ -397,7 +401,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
397
401
|
var texture = new THREE.Texture();
|
|
398
402
|
var uuid = this.uuidmap[url];
|
|
399
403
|
if (!uuid) {
|
|
400
|
-
uuid = this.uuidmap[url] = THREE.
|
|
404
|
+
uuid = this.uuidmap[url] = THREE.MathUtils.generateUUID();
|
|
401
405
|
}
|
|
402
406
|
var img = { uuid: uuid, src: url, toDataURL: function() { return url; } };
|
|
403
407
|
texture.image = img;
|
|
@@ -592,8 +596,18 @@ if (!ENV_IS_BROWSER) return;
|
|
|
592
596
|
// FIXME - we switched loader to request Blob responses, make sure Basis textures still load
|
|
593
597
|
let blob = events[0].target.response;
|
|
594
598
|
blob.arrayBuffer()
|
|
595
|
-
.then(buffer => loader._createTexture(buffer))
|
|
599
|
+
.then(buffer => loader._createTexture([buffer]))
|
|
596
600
|
.then(texture => this.handleLoadBasis(texture))
|
|
601
|
+
} else if (imagetype == 'hdr') {
|
|
602
|
+
let loader = new THREE.RGBELoader();
|
|
603
|
+
loader.load(fullurl, texture => {
|
|
604
|
+
this._texture = texture;
|
|
605
|
+
//const envMap = elation.engine.assets.pmremGenerator.fromEquirectangular( texture );
|
|
606
|
+
//this._texture = envMap.texture;
|
|
607
|
+
this.loaded = true;
|
|
608
|
+
this.uploaded = false;
|
|
609
|
+
this.sendLoadEvents();
|
|
610
|
+
});
|
|
597
611
|
} else if (imagetype == 'exr') {
|
|
598
612
|
// TODO - this should probably done off-thread if possible, it currently locks rendering for a noticable amount of time
|
|
599
613
|
let loader = new THREE.EXRLoader();
|
|
@@ -808,8 +822,17 @@ if (!ENV_IS_BROWSER) return;
|
|
|
808
822
|
var framedelays = [];
|
|
809
823
|
var framenum = -1;
|
|
810
824
|
var lastframe = texture;
|
|
825
|
+
//console.log('load gif?', image);
|
|
811
826
|
gif.load(function() {
|
|
812
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
|
+
*/
|
|
813
836
|
|
|
814
837
|
var doGIFFrame = function(isstatic) {
|
|
815
838
|
framenum = (framenum + 1) % gif.get_length();
|
|
@@ -833,6 +856,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
833
856
|
}
|
|
834
857
|
}
|
|
835
858
|
if (frame && frame.image) {
|
|
859
|
+
//console.log('gifframe', frame);
|
|
836
860
|
/*
|
|
837
861
|
texture.image = frame.image;
|
|
838
862
|
texture.needsUpdate = true;
|
|
@@ -843,6 +867,8 @@ if (!ENV_IS_BROWSER) return;
|
|
|
843
867
|
lastframe = frametex;
|
|
844
868
|
}
|
|
845
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});
|
|
846
872
|
}
|
|
847
873
|
|
|
848
874
|
if (!isstatic) {
|
|
@@ -955,12 +981,13 @@ if (!ENV_IS_BROWSER) return;
|
|
|
955
981
|
srgb: true,
|
|
956
982
|
tex_linear: true,
|
|
957
983
|
preload: false,
|
|
984
|
+
extratracks: false,
|
|
958
985
|
hls: null,
|
|
959
986
|
type: THREE.UnsignedByteType,
|
|
960
|
-
format: THREE.
|
|
987
|
+
format: THREE.RGBAFormat,
|
|
961
988
|
|
|
962
989
|
load: function() {
|
|
963
|
-
var video = this.video;
|
|
990
|
+
var video = this.video || this._video;
|
|
964
991
|
if (!video && this.src) {
|
|
965
992
|
var url = this.getProxiedURL(this.src);
|
|
966
993
|
var video = document.createElement('video');
|
|
@@ -975,17 +1002,27 @@ if (!ENV_IS_BROWSER) return;
|
|
|
975
1002
|
if ('requestVideoFrameCallback' in video) {
|
|
976
1003
|
video.requestVideoFrameCallback((time, metadata) => this.updateVideoFrame(time, metadata));
|
|
977
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
|
+
}
|
|
978
1015
|
}
|
|
979
1016
|
this._video = video;
|
|
980
|
-
let textureFormat =
|
|
1017
|
+
let textureFormat = this.format;
|
|
981
1018
|
if (false && this.sbs3d) {
|
|
982
1019
|
this._texture = new THREE.SBSVideoTexture(video, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, null, null, textureFormat, this.type);
|
|
983
1020
|
this._texture.reverse = this.reverse3d;
|
|
984
1021
|
} else {
|
|
985
1022
|
this._texture = new THREE.VideoTexture(video, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, null, null, textureFormat, this.type);
|
|
986
1023
|
}
|
|
987
|
-
this._texture.minFilter = THREE.LinearFilter;
|
|
988
|
-
this._texture.magFilter = THREE.LinearFilter;
|
|
1024
|
+
//this._texture.minFilter = THREE.LinearFilter;
|
|
1025
|
+
//this._texture.magFilter = THREE.LinearFilter;
|
|
989
1026
|
this._texture.encoding = (this.srgb ? THREE.sRGBEncoding : THREE.LinearEncoding);
|
|
990
1027
|
|
|
991
1028
|
elation.events.add(video, 'loadeddata', elation.bind(this, this.handleLoad));
|
|
@@ -1017,8 +1054,8 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1017
1054
|
// If autoplay failed, retry with muted video
|
|
1018
1055
|
var strerr = err.toString();
|
|
1019
1056
|
if (strerr.indexOf('NotAllowedError') == 0) {
|
|
1020
|
-
video.muted = true;
|
|
1021
|
-
video.play().catch(
|
|
1057
|
+
//video.muted = true;
|
|
1058
|
+
//video.play().catch((e) => console.log('huh what', e));
|
|
1022
1059
|
} else if (strerr.indexOf('NotSupportedError') == 0 && this.hls !== false) {
|
|
1023
1060
|
this.initHLS();
|
|
1024
1061
|
}
|
|
@@ -1041,7 +1078,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1041
1078
|
elation.events.fire({element: this, type: 'asset_load_progress', data: progress});
|
|
1042
1079
|
},
|
|
1043
1080
|
handleError: function(ev) {
|
|
1044
|
-
|
|
1081
|
+
console.log('video error!', ev);
|
|
1045
1082
|
//this._texture = false;
|
|
1046
1083
|
//console.log('Video failed to load, try HLS', this._video.error, ev);
|
|
1047
1084
|
/*
|
|
@@ -1079,23 +1116,47 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1079
1116
|
initHLS: function() {
|
|
1080
1117
|
if (typeof Hls != 'function') {
|
|
1081
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));
|
|
1082
1120
|
return;
|
|
1083
1121
|
}
|
|
1084
1122
|
let hlsConfig = {
|
|
1085
1123
|
debug: false,
|
|
1086
|
-
maxBufferLength: 10,
|
|
1087
|
-
|
|
1124
|
+
//maxBufferLength: 10,
|
|
1125
|
+
maxBufferLength: 30,
|
|
1126
|
+
//capLevelOnFPSDrop: true,
|
|
1127
|
+
//fpsDroppedMonitoringThreshold: .05,
|
|
1128
|
+
maxBufferSize: 500 * 1024 * 1024,
|
|
1129
|
+
/*
|
|
1088
1130
|
xhrSetup: function (xhr,url) {
|
|
1089
1131
|
//xhr.withCredentials = true; // do send cookie
|
|
1090
1132
|
xhr.setRequestHeader("Access-Control-Allow-Headers","Content-Type, Accept, X-Requested-With");
|
|
1091
1133
|
xhr.setRequestHeader("Access-Control-Allow-Origin",document.location.origin);
|
|
1092
1134
|
xhr.setRequestHeader("Access-Control-Allow-Credentials","true");
|
|
1093
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
|
+
},
|
|
1094
1144
|
};
|
|
1145
|
+
console.log('set up hls', hlsConfig);
|
|
1095
1146
|
var hls = new Hls(hlsConfig);
|
|
1096
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);
|
|
1097
1158
|
hls.on(Hls.Events.ERROR, (event, data) => {
|
|
1098
|
-
console.log('HLS.Events.ERROR: ', event, data);
|
|
1159
|
+
console.log('HLS.Events.ERROR: ', event, data, mediaErrorCount);
|
|
1099
1160
|
if (data.fatal) {
|
|
1100
1161
|
switch (data.type) {
|
|
1101
1162
|
case Hls.ErrorTypes.NETWORK_ERROR:
|
|
@@ -1112,8 +1173,17 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1112
1173
|
}
|
|
1113
1174
|
//} else if (data.details === 'internalException' && data.type === 'otherError' && isMobile()) {
|
|
1114
1175
|
// this.hlsDropHighestLevel();
|
|
1115
|
-
} else if (data.
|
|
1176
|
+
} else if (data.type == Hls.ErrorTypes.MEDIA_ERROR) {
|
|
1116
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
|
+
}
|
|
1117
1187
|
}
|
|
1118
1188
|
});
|
|
1119
1189
|
|
|
@@ -1298,6 +1368,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1298
1368
|
return m;
|
|
1299
1369
|
},
|
|
1300
1370
|
assignTextures: function(group, args) {
|
|
1371
|
+
return;
|
|
1301
1372
|
var minFilter = (this.tex_linear && this.tex_linear != 'false' ? THREE.LinearMipMapLinearFilter : THREE.NearestFilter);
|
|
1302
1373
|
var magFilter = (this.tex_linear && this.tex_linear != 'false' ? THREE.LinearFilter : THREE.NearestFilter);
|
|
1303
1374
|
|
|
@@ -1431,11 +1502,20 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1431
1502
|
return isGLB;
|
|
1432
1503
|
},
|
|
1433
1504
|
loadglTF: function(jobdata) {
|
|
1434
|
-
let
|
|
1505
|
+
let dirpathparts = jobdata.src.split('/');
|
|
1506
|
+
dirpathparts[dirpathparts.length-1] = '';
|
|
1507
|
+
let proxypath = this.getProxiedURL(dirpathparts.join('/'));
|
|
1435
1508
|
var loader = new THREE.GLTFLoader();
|
|
1436
1509
|
if (elation.engine.assets.dracopath) {
|
|
1437
1510
|
loader.setDRACOLoader(new THREE.DRACOLoader().setDecoderPath(elation.engine.assets.dracopath));
|
|
1438
1511
|
}
|
|
1512
|
+
if (elation.engine.assets.ktx2loader) {
|
|
1513
|
+
loader.setKTX2Loader(elation.engine.assets.ktx2loader);
|
|
1514
|
+
}
|
|
1515
|
+
if (elation.engine.assets.icosapath) {
|
|
1516
|
+
loader.register(parser => new THREE.GLTFGoogleTiltBrushMaterialExtension(parser, elation.engine.assets.icosapath));
|
|
1517
|
+
}
|
|
1518
|
+
loader.setMeshoptDecoder(MeshoptDecoder);
|
|
1439
1519
|
this._model = new THREE.Group();
|
|
1440
1520
|
this._model.userData.loaded = false;
|
|
1441
1521
|
loader.parse(jobdata.srcdata, proxypath, elation.bind(this, function(modeldata) {
|
|
@@ -1481,7 +1561,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1481
1561
|
complete: function(object) {
|
|
1482
1562
|
this.removePlaceholders();
|
|
1483
1563
|
this._model.userData.loaded = true;
|
|
1484
|
-
//this._model.add(
|
|
1564
|
+
//this._model.add(object);
|
|
1485
1565
|
this.fillGroup(this._model, object, false);
|
|
1486
1566
|
|
|
1487
1567
|
this.extractTextures(object);
|
|
@@ -1559,7 +1639,8 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1559
1639
|
var tex = material[texname];
|
|
1560
1640
|
if (tex) { // && tex.image instanceof HTMLImageElement) {
|
|
1561
1641
|
var img = tex.image;
|
|
1562
|
-
var src = img.originalSrc || img.src;
|
|
1642
|
+
var src = img.originalSrc || img.src || img.data;
|
|
1643
|
+
if (!src) return;
|
|
1563
1644
|
if (!textures[src]) {
|
|
1564
1645
|
//elation.engine.assets.loadJSON([{"assettype": "image", name: src, "src": src}], this.baseurl);
|
|
1565
1646
|
//tex = elation.engine.assets.find('image', src);
|
|
@@ -1783,7 +1864,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1783
1864
|
}),
|
|
1784
1865
|
});
|
|
1785
1866
|
},
|
|
1786
|
-
loadJSON: function(json) {
|
|
1867
|
+
loadJSON: function(json, replaceExisting=false) {
|
|
1787
1868
|
//this.json = json;
|
|
1788
1869
|
elation.events.fire({element: this, type: 'asset_load_processing'});
|
|
1789
1870
|
var baseurl = (this.baseurl && this.baseurl.length > 0 ? this.baseurl : this.getBaseURL());
|
|
@@ -1793,7 +1874,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
1793
1874
|
assetdef.baseurl = baseurl;
|
|
1794
1875
|
assetdef.assetpack = this;
|
|
1795
1876
|
var existing = elation.utils.arrayget(this.assetmap, assetdef.assettype + '.' + assetdef.name); //elation.engine.assets.find(assetdef.assettype, assetdef.name, true);
|
|
1796
|
-
if (!existing) {
|
|
1877
|
+
if (!existing || replaceExisting) {
|
|
1797
1878
|
var asset = elation.engine.assets.get(assetdef);
|
|
1798
1879
|
this.assets.push(asset);
|
|
1799
1880
|
if (!this.assetmap[asset.assettype]) this.assetmap[asset.assettype] = {};
|
|
@@ -2119,6 +2200,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
2119
2200
|
|
|
2120
2201
|
let starttime = new Date().getTime();
|
|
2121
2202
|
lasttime = starttime;
|
|
2203
|
+
|
|
2122
2204
|
setInterval(() => {
|
|
2123
2205
|
let d = new Date();
|
|
2124
2206
|
let now = d.getTime();
|
|
@@ -2136,6 +2218,7 @@ if (!ENV_IS_BROWSER) return;
|
|
|
2136
2218
|
lasttime = now;
|
|
2137
2219
|
}
|
|
2138
2220
|
}, 16);
|
|
2221
|
+
|
|
2139
2222
|
}
|
|
2140
2223
|
//this.load();
|
|
2141
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 );
|
|
@@ -448,6 +448,23 @@ elation.require([
|
|
|
448
448
|
return new Promise(function(resolve, reject) {
|
|
449
449
|
var loader = new THREE.FBXLoader();
|
|
450
450
|
var modeldata = loader.parse(data);
|
|
451
|
+
let mapnames = ['map', 'normalMap', 'aoMap', 'bumpMap', 'alphaMap', 'emissiveMap', 'envMap', 'lightMap', 'specularMap'];
|
|
452
|
+
let baseurl = job.data.src.substr( 0, job.data.src.lastIndexOf( "/" ) + 1 );
|
|
453
|
+
modeldata.traverse(n => {
|
|
454
|
+
if (n.material) {
|
|
455
|
+
mapnames.forEach(m => {
|
|
456
|
+
if (n.material[m]) {
|
|
457
|
+
let map = n.material[m];
|
|
458
|
+
if (map.image && map.image.src.indexOf(':') == -1) {
|
|
459
|
+
map.image.src = baseurl + map.image.src;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
} else if (n instanceof THREE.Bone) {
|
|
464
|
+
let name = n.name.replace('mixamorig', '');
|
|
465
|
+
n.name = name[0].toLowerCase() + name.substring(1);
|
|
466
|
+
}
|
|
467
|
+
});
|
|
451
468
|
resolve(modeldata.toJSON());
|
|
452
469
|
});
|
|
453
470
|
}
|