Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
ContentReferenceCloneDataSerializer.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 using SiliconStudio.Core.Serialization;
4 
5 namespace SiliconStudio.Paradox.EntityModel
6 {
7  public class ContentReferenceCloneDataSerializer<T> : DataSerializer<ContentReference<T>> where T : class
8  {
9  public override void Serialize(ref ContentReference<T> contentReference, ArchiveMode mode, SerializationStream stream)
10  {
11  var cloneContext = stream.Context.Get(EntityCloner.CloneContextProperty);
12  if (mode == ArchiveMode.Serialize)
13  {
14  stream.Write(cloneContext.ContentReferences.Count);
15  cloneContext.ContentReferences.Add(contentReference);
16  }
17  else
18  {
19  int index = stream.ReadInt32();
20  contentReference = (ContentReference<T>)cloneContext.ContentReferences[index];
21  }
22  }
23  }
24 }
Base class for implementation of SerializationStream.
Describes how to serialize and deserialize an object without knowing its type. Used as a common base ...
ArchiveMode
Enumerates the different mode of serialization (either serialization or deserialization).
Definition: ArchiveMode.cs:8
override void Serialize(ref ContentReference< T > contentReference, ArchiveMode mode, SerializationStream stream)