Skip to content

Commit

Permalink
Allow materials override when they are applied to builder with new ca…
Browse files Browse the repository at this point in the history
…llback onLoadMaterials

Update ZipTools with validity checks in WWOBJLoader2Stage.js
Fixed minified code is broken
  • Loading branch information
kaisalmen committed Oct 26, 2017
1 parent 92236b5 commit b53c096
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 36 deletions.
11 changes: 8 additions & 3 deletions src/loaders/OBJLoader2.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ THREE.OBJLoader2 = (function () {
var OBJLOADER2_VERSION = '2.1.0';
var LoaderBase = THREE.LoaderSupport.LoaderBase;
var Validator = THREE.LoaderSupport.Validator;
var ConsoleLogger = THREE.LoaderSupport.ConsoleLogger;

OBJLoader2.prototype = Object.create( THREE.LoaderSupport.LoaderBase.prototype );
OBJLoader2.prototype.constructor = OBJLoader2;
Expand Down Expand Up @@ -85,7 +84,9 @@ THREE.OBJLoader2 = (function () {

} else {

scope._setCallbacks( null, onMeshAlter, null );
var callbacks = new THREE.LoaderSupport.Callbacks();
callbacks.setCallbackOnMeshAlter( onMeshAlter );
scope._setCallbacks( callbacks );
onLoad(
{
detail: {
Expand Down Expand Up @@ -1275,14 +1276,18 @@ THREE.OBJLoader2 = (function () {
this.groupName = groupName;
this.materialName = materialName;
this.smoothingGroup = smoothingGroup;
this._init();
}

RawMeshSubGroup.prototype._init = function () {
this.vertices = [];
this.indexMappingsCount = 0;
this.indexMappings = [];
this.indices = [];
this.colors = [];
this.uvs = [];
this.normals = [];
}
};

return RawMeshSubGroup;
})();
Expand Down
13 changes: 7 additions & 6 deletions src/loaders/support/LoaderBase.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,17 @@ THREE.LoaderSupport.LoaderBase = (function () {
this.setUseIndices( prepData.useIndices );
this.setDisregardNormals( prepData.disregardNormals );

this._setCallbacks( prepData.getCallbacks().onProgress, prepData.getCallbacks().onMeshAlter, prepData.getCallbacks().onLoad );
this._setCallbacks( prepData.getCallbacks() );
}
};

LoaderBase.prototype._setCallbacks = function ( callbackOnProgress, callbackOnMeshAlter, callbackOnLoad ) {
this.callbacks.setCallbackOnProgress( callbackOnProgress );
this.callbacks.setCallbackOnMeshAlter( callbackOnMeshAlter );
this.callbacks.setCallbackOnLoad( callbackOnLoad );
LoaderBase.prototype._setCallbacks = function ( callbacks ) {
if ( Validator.isValid( callbacks.onProgress ) ) this.callbacks.setCallbackOnProgress( callbacks.onProgress );
if ( Validator.isValid( callbacks.onMeshAlter ) ) this.callbacks.setCallbackOnMeshAlter( callbacks.onMeshAlter );
if ( Validator.isValid( callbacks.onLoad ) ) this.callbacks.setCallbackOnLoad( callbacks.onLoad );
if ( Validator.isValid( callbacks.onLoadMaterials ) ) this.callbacks.setCallbackOnLoadMaterials( callbacks.onLoadMaterials );

this.builder._setCallbacks( callbackOnProgress, callbackOnMeshAlter, callbackOnLoad );
this.builder._setCallbacks( this.callbacks );
};

/**
Expand Down
11 changes: 6 additions & 5 deletions src/loaders/support/LoaderBuilder.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,17 @@ THREE.LoaderSupport.Builder = (function () {
materials: {
materialCloneInstructions: null,
serializedMaterials: null,
runtimeMaterials: materials
runtimeMaterials: Validator.isValid( this.callbacks.onLoadMaterials ) ? this.callbacks.onLoadMaterials( materials ) : materials
}
};
this.updateMaterials( payload );
};

Builder.prototype._setCallbacks = function ( callbackOnProgress, callbackOnMeshAlter, callbackOnLoad ) {
this.callbacks.setCallbackOnProgress( callbackOnProgress );
this.callbacks.setCallbackOnMeshAlter( callbackOnMeshAlter );
this.callbacks.setCallbackOnLoad( callbackOnLoad );
Builder.prototype._setCallbacks = function ( callbacks ) {
if ( Validator.isValid( callbacks.onProgress ) ) this.callbacks.setCallbackOnProgress( callbacks.onProgress );
if ( Validator.isValid( callbacks.onMeshAlter ) ) this.callbacks.setCallbackOnMeshAlter( callbacks.onMeshAlter );
if ( Validator.isValid( callbacks.onLoad ) ) this.callbacks.setCallbackOnLoad( callbacks.onLoad );
if ( Validator.isValid( callbacks.onLoadMaterials ) ) this.callbacks.setCallbackOnLoadMaterials( callbacks.onLoadMaterials );
};

/**
Expand Down
11 changes: 11 additions & 0 deletions src/loaders/support/LoaderCommons.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ THREE.LoaderSupport.Callbacks = (function () {
this.onProgress = null;
this.onMeshAlter = null;
this.onLoad = null;
this.onLoadMaterials = null;
}

/**
Expand Down Expand Up @@ -189,6 +190,16 @@ THREE.LoaderSupport.Callbacks = (function () {
this.onLoad = Validator.verifyInput( callbackOnLoad, this.onLoad );
};

/**
* Register callback function that is called when materials have been loaded.
* @memberOf THREE.LoaderSupport.Callbacks
*
* @param {callback} callbackOnLoadMaterials Callback function for described functionality
*/
Callbacks.prototype.setCallbackOnLoadMaterials = function ( callbackOnLoadMaterials ) {
this.onLoadMaterials = Validator.verifyInput( callbackOnLoadMaterials, this.onLoadMaterials );
};

return Callbacks;
})();

Expand Down
44 changes: 22 additions & 22 deletions test/wwobjloader2stage/WWOBJLoader2Stage.js
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,6 @@ var WWOBJLoader2Stage = (function () {

}

var objLoader2 = new THREE.OBJLoader2();
var prepData = this.objs2Load[ 0 ];
this.objs2Load.shift();
var streamMeshes = prepData.streamMeshesTo;
Expand All @@ -305,43 +304,34 @@ var WWOBJLoader2Stage = (function () {
callbacks.setCallbackOnLoad( reloadAssetsProxy );
callbacks.setCallbackOnProgress( this._reportProgress );

var first = prepData.resources[ 0 ];
if ( first.extension === 'ZIP' ) {
var objLoader2 = new THREE.OBJLoader2();
var resourceZip = prepData.resources[ 0 ];
if ( resourceZip.extension === 'ZIP' ) {
var resourceObj = prepData.resources[ 1 ];
var resourceMtl = prepData.length === 3 ? prepData.resources[ 2 ] : null;
var resourceMtl = prepData.resources.length === 3 ? prepData.resources[ 2 ] : null;

var zipTools = new ZipTools( first.pathBase );
var zipTools = new ZipTools( resourceZip.pathBase );
var setObjAsArrayBuffer = function ( data ) {
scope._reportProgress( { detail: { text: '' } } );
prepData.resources[ 1 ].content = data;
objLoader2.run( prepData );
};

var setMtlAsString = function ( data ) {

if ( prepData.resources.length > 1 ) resourceObj.content = data;
if ( prepData.resources.length > 2 ) resourceMtl.content = data;
scope._reportProgress( { detail: { text: 'Unzipping: ' + resourceObj.name } } );
zipTools.unpackAsUint8Array( resourceObj.name, setObjAsArrayBuffer );
};

var doneUnzipping = function () {

if ( Validator.isValid( resourceMtl ) ) {

zipTools.unpackAsString( resourceMtl.name, setMtlAsString );

} else {

setMtlAsString( null );

}
zipTools.unpackAsString( Validator.isValid( resourceMtl ) ? resourceMtl.name : null, setMtlAsString );
};

var errorCase = function ( text ) {
scope._reportProgress( { detail: { text: text } } );
scope.processing = false;
};
zipTools.load( first.url, { success: doneUnzipping, progress: this._reportProgress, error: errorCase } );
zipTools.load( resourceZip.url, { success: doneUnzipping, progress: this._reportProgress, error: errorCase } );

} else {

Expand Down Expand Up @@ -424,6 +414,8 @@ var WWOBJLoader2Stage = (function () {

var ZipTools = (function () {

var Validator = THREE.LoaderSupport.Validator;

function ZipTools( path ) {
this.zip = new JSZip();

Expand Down Expand Up @@ -497,12 +489,20 @@ var ZipTools = (function () {
};

ZipTools.prototype.unpackAsString = function ( filename, callback ) {
this.zipContent.file( filename ).async( 'string' )
.then( function ( dataAsString ) {
if ( Validator.isValid( filename ) ) {

callback( dataAsString );
this.zipContent.file( filename ).async( 'string' )
.then( function ( dataAsString ) {

} );
callback( dataAsString );

} );

} else {

callback( null );

}
};

return ZipTools;
Expand Down

0 comments on commit b53c096

Please sign in to comment.