Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
DataContentSerializerWithReuse.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 namespace SiliconStudio.Core.Serialization.Contents
4 {
5  /// <summary>
6  /// ContentSerializer that simply defers serialization to low level serialization, with <see cref="SerializerSelector.ReuseReferences"/> set to true.
7  /// </summary>
8  /// <typeparam name="T">The type to serialize.</typeparam>
9  public class DataContentSerializerWithReuse<T> : DataContentSerializer<T> where T : new()
10  {
11  public override void Serialize(ContentSerializerContext context, SerializationStream stream, ref T obj)
12  {
13  // Save and change serializer selector to the optimized one
14  var previousSerializerSelector = stream.Context.SerializerSelector;
15  stream.Context.SerializerSelector = context.AssetManager.Serializer.LowLevelSerializerSelectorWithReuse;
16 
17  // Serialize
18  base.Serialize(context, stream, ref obj);
19 
20  // Restore serializer selector
21  stream.Context.SerializerSelector = previousSerializerSelector;
22  }
23  }
24 }
Base class for implementation of SerializationStream.
override void Serialize(ContentSerializerContext context, SerializationStream stream, ref T obj)