提交 28870954 编写于 作者: D Don McCurdy

[gltf] More consistent error handling.

上级 73309576
......@@ -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 );
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册