mirror of
https://github.com/tengge1/ShadowEditor.git
synced 2026-01-25 15:08:11 +00:00
56 lines
1.8 KiB
JavaScript
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; |