5 using SiliconStudio.Assets.Serializers;
6 using SiliconStudio.Core;
7 using SiliconStudio.Core.Yaml;
9 namespace SiliconStudio.Assets
16 private readonly
object streamOrValueType;
23 public AssetCloner(
object value,
bool keepOnlySealedOverride =
false)
26 if (value != null && !value.GetType().IsValueType)
29 var stream =
new MemoryStream();
30 YamlSerializer.Serialize(stream, value, keepOnlySealedOverride);
31 streamOrValueType = stream;
35 streamOrValueType = value;
45 var stream = streamOrValueType as
Stream;
49 var newObject = YamlSerializer.Deserialize(stream);
53 return streamOrValueType;
63 public static object Clone(
object asset,
bool keepOnlySealedOverride =
false)
69 var cloner =
new AssetCloner(asset, keepOnlySealedOverride);
70 return cloner.Clone();
AssetCloner(object value, bool keepOnlySealedOverride=false)
Initializes a new instance of the AssetCloner struct.
object Clone()
Clones the current value of this cloner with the specified new shadow registry (optional) ...
static object Clone(object asset, bool keepOnlySealedOverride=false)
Clones the specified asset using asset serialization.
Allows to clone an asset or values stored in an asset.