|
@@ -30,7 +30,16 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
loader.load( url, function ( data ) {
|
|
|
|
|
|
- scope.parse( data, onLoad, path );
|
|
|
+ try {
|
|
|
+
|
|
|
+ scope.parse( data, path, onLoad, onError );
|
|
|
+
|
|
|
+ } catch ( e ) {
|
|
|
+
|
|
|
+ // For SyntaxError or TypeError, return a generic failure message.
|
|
|
+ onError( e.constructor === Error ? e : new Error( 'THREE.GLTF2Loader: Unable to parse model.' ) );
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}, onProgress, onError );
|
|
|
|
|
@@ -48,7 +57,7 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
},
|
|
|
|
|
|
- parse: function ( data, callback, path ) {
|
|
|
+ parse: function ( data, path, onLoad, onError ) {
|
|
|
|
|
|
var content;
|
|
|
var extensions = {};
|
|
@@ -68,6 +77,13 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
var json = JSON.parse( content );
|
|
|
|
|
|
+ if ( json.asset.version[0] < 2 ) {
|
|
|
+
|
|
|
+ onError( new Error( 'THREE.GLTF2Loader: Legacy glTF detected. Use THREE.GLTFLoader instead.' ) );
|
|
|
+ return;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
if ( json.extensionsUsed ) {
|
|
|
|
|
|
if( json.extensionsUsed.indexOf( EXTENSIONS.KHR_LIGHTS ) >= 0 ) {
|
|
@@ -116,9 +132,9 @@ THREE.GLTF2Loader = ( function () {
|
|
|
animations: animations
|
|
|
};
|
|
|
|
|
|
- callback( glTF );
|
|
|
+ onLoad( glTF );
|
|
|
|
|
|
- } );
|
|
|
+ }, onError );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -582,7 +598,7 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
if ( ! materialParams.fragmentShader ) {
|
|
|
|
|
|
- throw new Error( 'THREE.GLTF2Loader: Missing fragment shader definition: ', program.fragmentShader );
|
|
|
+ throw new Error( 'THREE.GLTF2Loader: Missing fragment shader definition: ' + program.fragmentShader );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -590,7 +606,7 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
if ( ! vertexShader ) {
|
|
|
|
|
|
- throw new Error( 'THREE.GLTF2Loader: Missing vertex shader definition: ', program.vertexShader );
|
|
|
+ throw new Error( 'THREE.GLTF2Loader: Missing vertex shader definition: ' + program.vertexShader );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -1643,7 +1659,7 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
};
|
|
|
|
|
|
- GLTFParser.prototype.parse = function ( callback ) {
|
|
|
+ GLTFParser.prototype.parse = function ( onLoad, onError ) {
|
|
|
|
|
|
var json = this.json;
|
|
|
|
|
@@ -1686,9 +1702,9 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
}
|
|
|
|
|
|
- callback( scene, scenes, cameras, animations );
|
|
|
+ onLoad( scene, scenes, cameras, animations );
|
|
|
|
|
|
- } );
|
|
|
+ } ).catch( onError );
|
|
|
|
|
|
};
|
|
|
|