4 using SiliconStudio.Core.Serialization.Assets;
5 using SiliconStudio.Core.Serialization.Contents;
7 namespace SiliconStudio.Core.Serialization.Converters
9 public class DataContentConverterSerializer<TSource> : ContentSerializerBase<TSource>
13 public override Type SerializationType
15 get {
return converter.DataType; }
19 : this(typeof(object))
29 converter = ConverterContext.GetDataConverter(dataType, typeof(TSource), ConverterContext.ConversionType.ObjectToData);
30 if (converter == null)
31 throw new InvalidOperationException(
string.Format(
"Could not find a valid converter for type {0}", typeof(TSource)));
39 AssetManager.AssetReference assetReference;
43 var dataObject = context.AssetManager.DeserializeObjectRecursive(null, out assetReference, context.Url, converter.DataType, AssetManagerLoaderSettings.IgnoreReferences, context, stream.NativeStream, SerializationType);
49 if (converterContext == null)
53 context.ConverterContext = converterContext;
57 converterContext.ConvertFromData(dataObject, ref source, ConvertFromDataFlags.Construct);
61 context.AssetManager.SetAssetObject(context.AssetReference, source);
66 obj = (TSource)source;
69 context.AssetManager.Unload(dataObject);
74 object dataObject = null;
75 converter.ConvertToData(
new ConverterContext { Tags = stream.Context.Tags }, ref dataObject, obj);
77 MemberNonSealedSerializer.SerializeExtended(stream, converter.DataType, ref dataObject, context.Mode);
82 public class DataContentConverterSerializer<TData, TSource> : DataContentConverterSerializer<TSource>
override void Serialize(ContentSerializerContext context, SerializationStream stream, ref TSource obj)
Base class for converters to/from a data type.
DataContentConverterSerializer()
Base class for implementation of SerializationStream.
DataContentConverterSerializer(Type dataType)
HRESULT Convert(_In_ const Image &srcImage, _In_ DXGI_FORMAT format, _In_ DWORD filter, _In_ float threshold, _Out_ ScratchImage &image)
ArchiveMode
Enumerates the different mode of serialization (either serialization or deserialization).
DataContentConverterSerializer()