Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
ParameterCollectionSerializer.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 System.Collections.Generic;
4 using System.Linq;
5 using SiliconStudio.Core.Serialization;
6 using SiliconStudio.Core.Serialization.Contents;
7 
8 namespace SiliconStudio.Paradox.Effects.Data
9 {
10  public partial class ParameterCollectionSerializer : ClassDataSerializer<ParameterCollection>
11  {
12  public override void Serialize(ref ParameterCollection parameterCollection, ArchiveMode mode, SerializationStream stream)
13  {
14  if (mode == ArchiveMode.Serialize)
15  {
16  var parameters = new ParameterCollectionData();
17  foreach (var parameter in parameterCollection.InternalValues)
18  {
19  if (parameterCollection.IsValueOwner(parameter.Value))
20  parameters.Add(parameter.Key, parameter.Value.Object);
21  }
22  stream.Write(parameters);
23  }
24  else if (mode == ArchiveMode.Deserialize)
25  {
26  var parameters = stream.Read<ParameterCollectionData>();
27  foreach (var parameter in parameters)
28  {
29  var parameterValue = parameter.Value;
30  if (parameterValue is ContentReference)
31  parameterValue = ((ContentReference)parameterValue).ObjectValue;
32  parameterCollection.SetObject(parameter.Key, parameterValue);
33  }
34  }
35  }
36  }
37 }
Data type for SiliconStudio.Paradox.Effects.ParameterCollection.
Definition: ParadoxData.cs:31
Base class for implementation of SerializationStream.
ArchiveMode
Enumerates the different mode of serialization (either serialization or deserialization).
Definition: ArchiveMode.cs:8
override void Serialize(ref ParameterCollection parameterCollection, ArchiveMode mode, SerializationStream stream)
A container to handle a hierarchical collection of effect variables.