提交 257b5965 编写于 作者: D Daniel

CmdSetMaterial: Simplified .toJSON()

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