56 lines
1.8 KiB
JavaScript

import BaseSerializer from '../BaseSerializer';
import TextureSerializer from './TextureSerializer';
import CanvasTextureSerializer from './CanvasTextureSerializer';
import CompressedTextureSerializer from './CompressedTextureSerializer';
import CubeTextureSerializer from './CubeTextureSerializer';
import DataTextureSerializer from './DataTextureSerializer';
import DepthTextureSerializer from './DepthTextureSerializer';
import VideoTextureSerializer from './VideoTextureSerializer';
var Serializers = {
'CanvasTexture': CanvasTextureSerializer,
'CompressedTexture': CompressedTextureSerializer,
'CubeTexture': CubeTextureSerializer,
'DataTexture': DataTextureSerializer,
'DepthTexture': DepthTextureSerializer,
'VideoTexture': VideoTextureSerializer,
'Texture': TextureSerializer
};
/**
* TexturesSerializer
* @author tengge / https://github.com/tengge1
*/
function TexturesSerializer() {
BaseSerializer.call(this);
}
TexturesSerializer.prototype = Object.create(BaseSerializer.prototype);
TexturesSerializer.prototype.constructor = TexturesSerializer;
TexturesSerializer.prototype.toJSON = function (obj) {
var serializer = Serializers[obj.constructor.name];
if (serializer === undefined) {
console.warn(`TexturesSerializer: 无法序列化${obj.type}`);
return null;
}
return (new serializer()).toJSON(obj);
};
TexturesSerializer.prototype.fromJSON = function (json, parent) {
var generator = json.metadata.generator;
var serializer = Serializers[generator.replace('Serializer', '')];
if (serializer === undefined) {
console.warn(`TexturesSerializer: 不存在 ${generator} 的反序列化器`);
return null;
}
return (new serializer()).fromJSON(json, parent);
};
export default TexturesSerializer;