|
@@ -43,55 +43,11 @@ CmdSetMaterial.prototype = {
|
|
|
var output = Cmd.prototype.toJSON.call( this );
|
|
|
|
|
|
output.objectUuid = this.object.uuid;
|
|
|
- output.oldMaterial = serializeMaterial( this.oldMaterial );
|
|
|
- output.newMaterial = serializeMaterial( this.newMaterial );
|
|
|
+ output.oldMaterial = this.oldMaterial.toJSON();
|
|
|
+ output.newMaterial = this.newMaterial.toJSON();
|
|
|
|
|
|
return output;
|
|
|
|
|
|
-
|
|
|
- function serializeMaterial ( material ) {
|
|
|
-
|
|
|
- if ( material === undefined ) return null;
|
|
|
-
|
|
|
- var meta = {
|
|
|
- geometries: {},
|
|
|
- materials: {},
|
|
|
- textures: {},
|
|
|
- images: {}
|
|
|
- };
|
|
|
-
|
|
|
- var json = {};
|
|
|
- json.materials = [ material.toJSON( meta ) ];
|
|
|
-
|
|
|
- var textures = extractFromCache( meta.textures );
|
|
|
- var images = extractFromCache( meta.images );
|
|
|
-
|
|
|
- if ( textures.length > 0 ) json.textures = textures;
|
|
|
- if ( images.length > 0 ) json.images = images;
|
|
|
-
|
|
|
- return json;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // Note: The function 'extractFromCache' is copied from Object3D.toJSON()
|
|
|
-
|
|
|
- // extract data from the cache hash
|
|
|
- // remove metadata on each item
|
|
|
- // and return as array
|
|
|
- function extractFromCache ( cache ) {
|
|
|
-
|
|
|
- var values = [];
|
|
|
- for ( var key in cache ) {
|
|
|
-
|
|
|
- var data = cache[ key ];
|
|
|
- delete data.metadata;
|
|
|
- values.push( data );
|
|
|
-
|
|
|
- }
|
|
|
- return values;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
},
|
|
|
|
|
|
fromJSON: function ( json ) {
|
|
@@ -108,8 +64,8 @@ CmdSetMaterial.prototype = {
|
|
|
var loader = new THREE.ObjectLoader();
|
|
|
var images = loader.parseImages( json.images );
|
|
|
var textures = loader.parseTextures( json.textures, images );
|
|
|
- var materials = loader.parseMaterials( json.materials, textures );
|
|
|
- return materials[ json.materials[ 0 ].uuid ];
|
|
|
+ var materials = loader.parseMaterials( [ json ], textures );
|
|
|
+ return materials[ json.uuid ];
|
|
|
|
|
|
}
|
|
|
|