|
@@ -141,6 +141,7 @@ THREE.GLTFLoader = ( function () {
|
|
|
|
|
|
var content;
|
|
|
var extensions = {};
|
|
|
+ var plugins = {};
|
|
|
|
|
|
if ( typeof data === 'string' ) {
|
|
|
|
|
@@ -182,6 +183,27 @@ THREE.GLTFLoader = ( function () {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ var parser = new GLTFParser( json, {
|
|
|
+
|
|
|
+ path: path || this.resourcePath || '',
|
|
|
+ crossOrigin: this.crossOrigin,
|
|
|
+ manager: this.manager
|
|
|
+
|
|
|
+ } );
|
|
|
+
|
|
|
+ for ( var i = 0; i < this.pluginCallbacks.length; i ++ ) {
|
|
|
+
|
|
|
+ var plugin = this.pluginCallbacks[ i ]( parser );
|
|
|
+ plugins[ plugin.name ] = plugin;
|
|
|
+
|
|
|
+ // Workaround to avoid determining as unknown extension
|
|
|
+ // in addUnknownExtensionsToUserData().
|
|
|
+ // Remove this workaround if we move all the existing
|
|
|
+ // extension handlers to plugin system
|
|
|
+ extensions[ plugin.name ] = true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
if ( json.extensionsUsed ) {
|
|
|
|
|
|
for ( var i = 0; i < json.extensionsUsed.length; ++ i ) {
|
|
@@ -221,7 +243,7 @@ THREE.GLTFLoader = ( function () {
|
|
|
|
|
|
default:
|
|
|
|
|
|
- if ( extensionsRequired.indexOf( extensionName ) >= 0 ) {
|
|
|
+ if ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {
|
|
|
|
|
|
console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' );
|
|
|
|
|
@@ -233,14 +255,8 @@ THREE.GLTFLoader = ( function () {
|
|
|
|
|
|
}
|
|
|
|
|
|
- var parser = new GLTFParser( json, extensions, {
|
|
|
-
|
|
|
- path: path || this.resourcePath || '',
|
|
|
- crossOrigin: this.crossOrigin,
|
|
|
- manager: this.manager
|
|
|
-
|
|
|
- } );
|
|
|
- parser.setPluginCallbacks( this.pluginCallbacks );
|
|
|
+ parser.setExtensions( extensions );
|
|
|
+ parser.setPlugins( plugins );
|
|
|
parser.parse( onLoad, onError );
|
|
|
|
|
|
}
|
|
@@ -1428,10 +1444,10 @@ THREE.GLTFLoader = ( function () {
|
|
|
|
|
|
/* GLTF PARSER */
|
|
|
|
|
|
- function GLTFParser( json, extensions, options ) {
|
|
|
+ function GLTFParser( json, options ) {
|
|
|
|
|
|
this.json = json || {};
|
|
|
- this.extensions = extensions || {};
|
|
|
+ this.extensions = {};
|
|
|
this.plugins = {};
|
|
|
this.options = options || {};
|
|
|
|
|
@@ -1455,20 +1471,15 @@ THREE.GLTFLoader = ( function () {
|
|
|
|
|
|
}
|
|
|
|
|
|
- GLTFParser.prototype.setPluginCallbacks = function ( pluginCallbacks ) {
|
|
|
+ GLTFParser.prototype.setExtensions = function ( extensions ) {
|
|
|
|
|
|
- for ( var i = 0; i < pluginCallbacks.length; i ++ ) {
|
|
|
+ this.extensions = extensions;
|
|
|
|
|
|
- var plugin = pluginCallbacks[ i ]( this );
|
|
|
- this.plugins[ plugin.name ] = plugin;
|
|
|
+ };
|
|
|
|
|
|
- // Workaround to avoid determining as unknown extension
|
|
|
- // in addUnknownExtensionsToUserData().
|
|
|
- // Remove this workaround if we move all the existing
|
|
|
- // extension handlers to plugin system
|
|
|
- this.extensions[ plugin.name ] = true;
|
|
|
+ GLTFParser.prototype.setPlugins = function ( plugins ) {
|
|
|
|
|
|
- }
|
|
|
+ this.plugins = plugins;
|
|
|
|
|
|
};
|
|
|
|