mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-14 19:29:36 +01:00
TimeOffsetSerializer fixes (#3985)
This commit is contained in:
@@ -33,8 +33,8 @@ namespace Robust.Benchmarks.Serialization
|
||||
return new ValueDataNode(value.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
@@ -397,7 +397,7 @@ public sealed class MapLoaderSystem : EntitySystem
|
||||
_stopwatch.Restart();
|
||||
var mapUid = _mapManager.GetMapEntityId(data.TargetMap);
|
||||
var pauseTime = mapUid.IsValid() ? _meta.GetPauseTime(mapUid) : TimeSpan.Zero;
|
||||
_context.Set(data.UidEntityMap, new Dictionary<EntityUid, int>(), pauseTime, null);
|
||||
_context.Set(data.UidEntityMap, new Dictionary<EntityUid, int>(), data.MapIsPostInit, pauseTime, null);
|
||||
HashSet<EntityUid> deletedPrototypeUids = new();
|
||||
|
||||
if (data.Version >= 4)
|
||||
@@ -906,10 +906,12 @@ public sealed class MapLoaderSystem : EntitySystem
|
||||
WriteTileMapSection(data, entities);
|
||||
|
||||
_logLoader.Debug($"Populated entity list in {_stopwatch.Elapsed}");
|
||||
var pauseTime = _meta.GetPauseTime(uid);
|
||||
var metadata = Comp<MetaDataComponent>(uid);
|
||||
var pauseTime = _meta.GetPauseTime(uid, metadata);
|
||||
var postInit = metadata.EntityLifeStage >= EntityLifeStage.MapInitialized;
|
||||
|
||||
var rootXform = _serverEntityManager.GetComponent<TransformComponent>(uid);
|
||||
_context.Set(uidEntityMap, entityUidMap, pauseTime, rootXform.ParentUid);
|
||||
_context.Set(uidEntityMap, entityUidMap, postInit, pauseTime, rootXform.ParentUid);
|
||||
|
||||
_stopwatch.Restart();
|
||||
WriteEntitySection(data, uidEntityMap, entityUidMap);
|
||||
@@ -1105,6 +1107,7 @@ public sealed class MapLoaderSystem : EntitySystem
|
||||
if (!prototypeCompCache.TryGetValue(prototype.ID, out cache))
|
||||
{
|
||||
prototypeCompCache[prototype.ID] = cache = new Dictionary<string, MappingDataNode>(prototype.Components.Count);
|
||||
_context.WritingReadingPrototypes = true;
|
||||
|
||||
foreach (var (compType, comp) in prototype.Components)
|
||||
{
|
||||
@@ -1113,6 +1116,7 @@ public sealed class MapLoaderSystem : EntitySystem
|
||||
}
|
||||
|
||||
_context.CurrentComponent = null;
|
||||
_context.WritingReadingPrototypes = false;
|
||||
cache.TryAdd(metaName, emptyMetaNode);
|
||||
cache.TryAdd(xformName, emptyXformNode);
|
||||
}
|
||||
|
||||
@@ -129,10 +129,10 @@ internal sealed class MapChunkSerializer : ITypeSerializer<MapChunk, MappingData
|
||||
return Convert.ToBase64String(barr);
|
||||
}
|
||||
|
||||
public MapChunk CreateCopy(ISerializationManager serializationManager, MapChunk source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public MapChunk CreateCopy(ISerializationManager serializationManager, MapChunk source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
var mapManager = ((SerializationManager)serializationManager).DependencyCollection.Resolve<IMapManager>();
|
||||
var mapManager = dependencies.Resolve<IMapManager>();
|
||||
mapManager.SuppressOnTileChanged = true;
|
||||
var chunk = new MapChunk(source.X, source.Y, source.ChunkSize)
|
||||
{
|
||||
|
||||
@@ -30,6 +30,16 @@ internal sealed class MapSerializationContext : ISerializationContext, IEntityLo
|
||||
private Dictionary<int, EntityUid> _uidEntityMap = new();
|
||||
private Dictionary<EntityUid, int> _entityUidMap = new();
|
||||
|
||||
/// <summary>
|
||||
/// Are we currently iterating prototypes or entities for writing.
|
||||
/// </summary>
|
||||
public bool WritingReadingPrototypes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether the map has been MapInitialized or not.
|
||||
/// </summary>
|
||||
public bool MapInitialized;
|
||||
|
||||
/// <summary>
|
||||
/// How long the target map has been paused. Used for time offsets.
|
||||
/// </summary>
|
||||
@@ -45,11 +55,16 @@ internal sealed class MapSerializationContext : ISerializationContext, IEntityLo
|
||||
SerializerProvider.RegisterSerializer(this);
|
||||
}
|
||||
|
||||
public void Set(Dictionary<int, EntityUid> uidEntityMap, Dictionary<EntityUid, int> entityUidMap,
|
||||
TimeSpan pauseTime, EntityUid? parentUid)
|
||||
public void Set(
|
||||
Dictionary<int, EntityUid> uidEntityMap,
|
||||
Dictionary<EntityUid, int> entityUidMap,
|
||||
bool mapPreInit,
|
||||
TimeSpan pauseTime,
|
||||
EntityUid? parentUid)
|
||||
{
|
||||
_uidEntityMap = uidEntityMap;
|
||||
_entityUidMap = entityUidMap;
|
||||
MapInitialized = mapPreInit;
|
||||
PauseTime = pauseTime;
|
||||
if (parentUid != null && parentUid.Value.IsValid())
|
||||
_parentUid = parentUid;
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
namespace Robust.Shared.Serialization.Manager
|
||||
namespace Robust.Shared.Serialization.Manager;
|
||||
|
||||
// TODO Serialization: make this actually not kanser to use holy moly (& allow generics)
|
||||
public interface ISerializationContext
|
||||
{
|
||||
// TODO Serialization: make this actually not kanser to use holy moly (& allow generics)
|
||||
public interface ISerializationContext
|
||||
{
|
||||
SerializationManager.SerializerProvider SerializerProvider { get; }
|
||||
}
|
||||
SerializationManager.SerializerProvider SerializerProvider { get; }
|
||||
|
||||
// This is just here for content tests that may want their own test diffs.
|
||||
/// <summary>
|
||||
/// Are we currently iterating prototypes or entities for writing.
|
||||
/// </summary>
|
||||
bool WritingReadingPrototypes { get; }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Reflection;
|
||||
using Robust.Shared.Serialization.Markdown;
|
||||
using Robust.Shared.Serialization.Markdown.Validation;
|
||||
|
||||
@@ -266,7 +266,7 @@ public sealed partial class SerializationManager
|
||||
context.SerializerProvider.TryGetTypeSerializer<ITypeCopier<TCommon>, TCommon>(out var copier))
|
||||
{
|
||||
var commonTarget = target;
|
||||
copier.CopyTo(this, source, ref commonTarget, hookCtx, context);
|
||||
copier.CopyTo(this, source, ref commonTarget, DependencyCollection, hookCtx, context);
|
||||
}
|
||||
|
||||
if (ShouldReturnSource(typeof(TCommon))) //todo paul can be precomputed
|
||||
@@ -448,7 +448,7 @@ public sealed partial class SerializationManager
|
||||
|
||||
target ??= GetOrCreateInstantiator<T>(false)();
|
||||
|
||||
copier.CopyTo(this, source, ref target, hookCtx, context);
|
||||
copier.CopyTo(this, source, ref target, DependencyCollection, hookCtx, context);
|
||||
|
||||
RunAfterHook(target, hookCtx);
|
||||
}
|
||||
@@ -542,7 +542,7 @@ public sealed partial class SerializationManager
|
||||
return default!;
|
||||
}
|
||||
|
||||
var res = copyCreator.CreateCopy(this, source, hookCtx, context);
|
||||
var res = copyCreator.CreateCopy(this, source, DependencyCollection, hookCtx, context);
|
||||
RunAfterHook(res, hookCtx);
|
||||
|
||||
return res;
|
||||
|
||||
@@ -49,8 +49,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
|
||||
[MustUseReturnValue]
|
||||
public Angle CreateCopy(ISerializationManager serializationManager, Angle source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source);
|
||||
}
|
||||
|
||||
@@ -78,8 +78,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
|
||||
[MustUseReturnValue]
|
||||
public Box2 CreateCopy(ISerializationManager serializationManager, Box2 source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new Box2(source.Left, source.Bottom, source.Right, source.Top);
|
||||
}
|
||||
@@ -138,8 +137,8 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
: new ErrorNode(node, "Failed parsing values of Box2i.");
|
||||
}
|
||||
|
||||
public Box2i CreateCopy(ISerializationManager serializationManager, Box2i source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public Box2i CreateCopy(ISerializationManager serializationManager, Box2i source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new Box2i(source.Left, source.Bottom, source.Right, source.Top);
|
||||
}
|
||||
|
||||
@@ -44,8 +44,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
|
||||
[MustUseReturnValue]
|
||||
public Color CreateCopy(ISerializationManager serializationManager, Color source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source.R, source.G, source.B, source.A);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, ComponentRegistry source, ref ComponentRegistry target,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target.Clear();
|
||||
target.EnsureCapacity(source.Count);
|
||||
|
||||
@@ -91,8 +91,8 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Custom
|
||||
return flags;
|
||||
}
|
||||
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
@@ -85,12 +85,14 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Pro
|
||||
}
|
||||
|
||||
public PrototypeFlags<T> CreateCopy(ISerializationManager serializationManager, PrototypeFlags<T> source,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new PrototypeFlags<T>(source);
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, PrototypeFlags<T> source, ref PrototypeFlags<T> target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, PrototypeFlags<T> source, ref PrototypeFlags<T> target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target.Clear();
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using Robust.Shared.Serialization.Markdown;
|
||||
using Robust.Shared.Serialization.Markdown.Validation;
|
||||
using Robust.Shared.Serialization.Markdown.Value;
|
||||
@@ -16,7 +16,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
/// <summary>
|
||||
/// Offsets the timespan by the CurTime.
|
||||
/// </summary>
|
||||
public sealed class TimeOffsetSerializer : ITypeSerializer<TimeSpan, ValueDataNode>
|
||||
public sealed class TimeOffsetSerializer : ITypeSerializer<TimeSpan, ValueDataNode>, ITypeCopier<TimeSpan>
|
||||
{
|
||||
public TimeSpan Read(ISerializationManager serializationManager, ValueDataNode node,
|
||||
IDependencyCollection dependencies,
|
||||
@@ -25,9 +25,7 @@ public sealed class TimeOffsetSerializer : ITypeSerializer<TimeSpan, ValueDataNo
|
||||
ISerializationManager.InstantiationDelegate<TimeSpan>? instanceProvider = null)
|
||||
{
|
||||
var seconds = double.Parse(node.Value, CultureInfo.InvariantCulture);
|
||||
var curTime = dependencies.Resolve<IGameTiming>().CurTime;
|
||||
|
||||
return curTime + TimeSpan.FromSeconds(seconds);
|
||||
return TimeSpan.FromSeconds(seconds);
|
||||
}
|
||||
|
||||
public ValidationNode Validate(ISerializationManager serializationManager, ValueDataNode node,
|
||||
@@ -42,13 +40,28 @@ public sealed class TimeOffsetSerializer : ITypeSerializer<TimeSpan, ValueDataNo
|
||||
public DataNode Write(ISerializationManager serializationManager, TimeSpan value, IDependencyCollection dependencies, bool alwaysWrite = false,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
// If we're reading from the prototype (e.g. for diffs) then ignore.
|
||||
if (context == null || context.WritingReadingPrototypes)
|
||||
{
|
||||
return new ValueDataNode(value.TotalSeconds.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
var curTime = dependencies.Resolve<IGameTiming>().CurTime;
|
||||
|
||||
if (context is MapSerializationContext mapContext)
|
||||
// We want to get the offset relative to the current time
|
||||
// Because paused entities never update their timeoffsets we'll subtract how long it's been paused.
|
||||
if (context is MapSerializationContext map)
|
||||
{
|
||||
curTime -= mapContext.PauseTime;
|
||||
curTime -= map.PauseTime;
|
||||
}
|
||||
|
||||
return new ValueDataNode((value - curTime).TotalSeconds.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, TimeSpan source, ref TimeSpan target,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target = source + dependencies.Resolve<IGameTiming>().CurTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
|
||||
[MustUseReturnValue]
|
||||
public FormattedMessage CreateCopy(ISerializationManager serializationManager, FormattedMessage source,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source);
|
||||
}
|
||||
|
||||
@@ -152,7 +152,9 @@ public sealed class DictionarySerializer<TKey, TValue> :
|
||||
return dict;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, Dictionary<TKey, TValue> source, ref Dictionary<TKey, TValue> target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, Dictionary<TKey, TValue> source, ref Dictionary<TKey, TValue> target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target.Clear();
|
||||
@@ -166,7 +168,7 @@ public sealed class DictionarySerializer<TKey, TValue> :
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, SortedDictionary<TKey, TValue> source, ref SortedDictionary<TKey, TValue> target,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target.Clear();
|
||||
foreach (var value in source)
|
||||
@@ -177,8 +179,8 @@ public sealed class DictionarySerializer<TKey, TValue> :
|
||||
}
|
||||
}
|
||||
|
||||
public IReadOnlyDictionary<TKey, TValue> CreateCopy(ISerializationManager serializationManager, IReadOnlyDictionary<TKey, TValue> source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public IReadOnlyDictionary<TKey, TValue> CreateCopy(ISerializationManager serializationManager, IReadOnlyDictionary<TKey, TValue> source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
var target = new Dictionary<TKey, TValue>();
|
||||
target.EnsureCapacity(source.Count);
|
||||
|
||||
@@ -104,8 +104,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Generic
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, HashSet<T> source, ref HashSet<T> target,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target.Clear();
|
||||
target.EnsureCapacity(source.Count);
|
||||
@@ -117,8 +116,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Generic
|
||||
}
|
||||
|
||||
public ImmutableHashSet<T> CreateCopy(ISerializationManager serializationManager, ImmutableHashSet<T> source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
var target = new HashSet<T>();
|
||||
target.EnsureCapacity(source.Count);
|
||||
|
||||
@@ -178,7 +178,9 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Generic
|
||||
return list.ToImmutable();
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, List<T> source, ref List<T> target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, List<T> source, ref List<T> target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target.Clear();
|
||||
@@ -193,8 +195,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Generic
|
||||
}
|
||||
|
||||
public IReadOnlyList<T> CreateCopy(ISerializationManager serializationManager, IReadOnlyList<T> source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
var target = new List<T>(source.Count);
|
||||
|
||||
@@ -206,8 +207,8 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Generic
|
||||
return target;
|
||||
}
|
||||
|
||||
public IReadOnlyCollection<T> CreateCopy(ISerializationManager serializationManager, IReadOnlyCollection<T> source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public IReadOnlyCollection<T> CreateCopy(ISerializationManager serializationManager, IReadOnlyCollection<T> source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
var target = new List<T>(source.Count);
|
||||
|
||||
@@ -219,8 +220,8 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Generic
|
||||
return target;
|
||||
}
|
||||
|
||||
public ImmutableList<T> CreateCopy(ISerializationManager serializationManager, ImmutableList<T> source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public ImmutableList<T> CreateCopy(ISerializationManager serializationManager, ImmutableList<T> source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
var target = new List<T>(source.Count);
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ public sealed class QueueSerializer<T> : ITypeSerializer<Queue<T>, SequenceDataN
|
||||
return sequence;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, Queue<T> source, ref Queue<T> target, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
public void CopyTo(ISerializationManager serializationManager, Queue<T> source, ref Queue<T> target, IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target.Clear();
|
||||
target.EnsureCapacity(source.Count);
|
||||
|
||||
@@ -61,8 +61,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations.Generic
|
||||
}
|
||||
|
||||
public (T1, T2) CreateCopy(ISerializationManager serializationManager, (T1, T2) source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return (serializationManager.CreateCopy(source.Item1, hookCtx, context),
|
||||
serializationManager.CreateCopy(source.Item2, hookCtx, context));
|
||||
|
||||
@@ -48,8 +48,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
|
||||
[MustUseReturnValue]
|
||||
public Regex CreateCopy(ISerializationManager serializationManager, Regex source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source.ToString(), source.Options, source.MatchTimeout);
|
||||
}
|
||||
|
||||
@@ -72,8 +72,7 @@ public sealed class ResPathSerializer : ITypeSerializer<ResPath, ValueDataNode>,
|
||||
}
|
||||
|
||||
public ResPath CreateCopy(ISerializationManager serializationManager, ResPath source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new ResPath(source.ToString());
|
||||
}
|
||||
|
||||
@@ -171,20 +171,20 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
return mapping;
|
||||
}
|
||||
|
||||
public Texture CreateCopy(ISerializationManager serializationManager, Texture source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public Texture CreateCopy(ISerializationManager serializationManager, Texture source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source.TexturePath);
|
||||
}
|
||||
|
||||
public EntityPrototype CreateCopy(ISerializationManager serializationManager, EntityPrototype source,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source.EntityPrototypeId);
|
||||
}
|
||||
|
||||
public Rsi CreateCopy(ISerializationManager serializationManager, Rsi source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public Rsi CreateCopy(ISerializationManager serializationManager, Rsi source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source.RsiPath, source.RsiState);
|
||||
}
|
||||
@@ -209,31 +209,35 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
}
|
||||
|
||||
public SpriteSpecifier CreateCopy(ISerializationManager serializationManager, SpriteSpecifier source,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return source switch
|
||||
{
|
||||
Rsi rsi
|
||||
=> CreateCopy(serializationManager, rsi, hookCtx, context),
|
||||
=> CreateCopy(serializationManager, rsi, dependencies, hookCtx, context),
|
||||
|
||||
Texture texture
|
||||
=> CreateCopy(serializationManager, texture, hookCtx, context),
|
||||
=> CreateCopy(serializationManager, texture, dependencies, hookCtx, context),
|
||||
|
||||
EntityPrototype entityPrototype
|
||||
=> CreateCopy(serializationManager, entityPrototype, hookCtx, context),
|
||||
=> CreateCopy(serializationManager, entityPrototype, dependencies, hookCtx, context),
|
||||
|
||||
_ => throw new InvalidOperationException("Invalid SpriteSpecifier specified!")
|
||||
};
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, Rsi source, ref Rsi target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, Rsi source, ref Rsi target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target.RsiPath = source.RsiPath;
|
||||
target.RsiState = source.RsiState;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, Texture source, ref Texture target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, Texture source, ref Texture target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target.TexturePath = source.TexturePath;
|
||||
|
||||
@@ -42,8 +42,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
|
||||
[MustUseReturnValue]
|
||||
public TimeSpan CreateCopy(ISerializationManager serializationManager, TimeSpan source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
@@ -51,8 +51,8 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
return new ValueDataNode(value.FullName ?? value.Name);
|
||||
}
|
||||
|
||||
public Type CreateCopy(ISerializationManager serializationManager, Type source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public Type CreateCopy(ISerializationManager serializationManager, Type source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
@@ -67,8 +67,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
|
||||
[MustUseReturnValue]
|
||||
public UIBox2 CreateCopy(ISerializationManager serializationManager, UIBox2 source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source.Left, source.Top, source.Right, source.Bottom);
|
||||
}
|
||||
|
||||
@@ -54,8 +54,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
}
|
||||
|
||||
public Vector2 CreateCopy(ISerializationManager serializationManager, Vector2 source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source.X, source.Y);
|
||||
}
|
||||
|
||||
@@ -54,8 +54,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
}
|
||||
|
||||
public Vector2i CreateCopy(ISerializationManager serializationManager, Vector2i source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source.X, source.Y);
|
||||
}
|
||||
|
||||
@@ -57,8 +57,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
}
|
||||
|
||||
public Vector3 CreateCopy(ISerializationManager serializationManager, Vector3 source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source);
|
||||
}
|
||||
|
||||
@@ -61,8 +61,7 @@ namespace Robust.Shared.Serialization.TypeSerializers.Implementations
|
||||
}
|
||||
|
||||
public Vector4 CreateCopy(ISerializationManager serializationManager, Vector4 source,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new(source);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
|
||||
namespace Robust.Shared.Serialization.TypeSerializers.Interfaces;
|
||||
|
||||
@@ -8,6 +9,7 @@ public interface ITypeCopier<TType> : BaseSerializerInterfaces.ITypeInterface<TT
|
||||
ISerializationManager serializationManager,
|
||||
TType source,
|
||||
ref TType target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null);
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
|
||||
namespace Robust.Shared.Serialization.TypeSerializers.Interfaces;
|
||||
@@ -9,6 +10,7 @@ public interface ITypeCopyCreator<TType> : BaseSerializerInterfaces.ITypeInterfa
|
||||
TType CreateCopy(
|
||||
ISerializationManager serializationManager,
|
||||
TType source,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null);
|
||||
}
|
||||
|
||||
@@ -84,38 +84,40 @@ public sealed partial class DataDefinitionTests
|
||||
return SerializerValueDataNode;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, int source, ref int target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, int source, ref int target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnInt;
|
||||
}
|
||||
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnInt;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyStruct source, ref DataDummyStruct target,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnStruct;
|
||||
}
|
||||
|
||||
public DataDummyStruct CreateCopy(ISerializationManager serializationManager, DataDummyStruct source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public DataDummyStruct CreateCopy(ISerializationManager serializationManager, DataDummyStruct source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnStruct;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyClass source, ref DataDummyClass target, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyClass source, ref DataDummyClass target,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnClass;
|
||||
}
|
||||
|
||||
public DataDummyClass CreateCopy(ISerializationManager serializationManager, DataDummyClass source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public DataDummyClass CreateCopy(ISerializationManager serializationManager, DataDummyClass source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnClass;
|
||||
}
|
||||
@@ -184,38 +186,42 @@ public sealed partial class DataDefinitionTests
|
||||
return SerializerSequenceDataNode;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, int source, ref int target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, int source, ref int target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnInt;
|
||||
}
|
||||
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnInt;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyStruct source, ref DataDummyStruct target,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnStruct;
|
||||
}
|
||||
|
||||
public DataDummyStruct CreateCopy(ISerializationManager serializationManager, DataDummyStruct source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public DataDummyStruct CreateCopy(ISerializationManager serializationManager, DataDummyStruct source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnStruct;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyClass source, ref DataDummyClass target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyClass source, ref DataDummyClass target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnClass;
|
||||
}
|
||||
|
||||
public DataDummyClass CreateCopy(ISerializationManager serializationManager, DataDummyClass source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public DataDummyClass CreateCopy(ISerializationManager serializationManager, DataDummyClass source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnClass;
|
||||
}
|
||||
@@ -283,38 +289,42 @@ public sealed partial class DataDefinitionTests
|
||||
return SerializerMappingDataNode;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, int source, ref int target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, int source, ref int target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnInt;
|
||||
}
|
||||
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public int CreateCopy(ISerializationManager serializationManager, int source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnInt;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyStruct source, ref DataDummyStruct target,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnStruct;
|
||||
}
|
||||
|
||||
public DataDummyStruct CreateCopy(ISerializationManager serializationManager, DataDummyStruct source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public DataDummyStruct CreateCopy(ISerializationManager serializationManager, DataDummyStruct source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnStruct;
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyClass source, ref DataDummyClass target, SerializationHookContext hookCtx,
|
||||
public void CopyTo(ISerializationManager serializationManager, DataDummyClass source, ref DataDummyClass target,
|
||||
IDependencyCollection dependencies,
|
||||
SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
{
|
||||
target = SerializerReturnClass;
|
||||
}
|
||||
|
||||
public DataDummyClass CreateCopy(ISerializationManager serializationManager, DataDummyClass source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public DataDummyClass CreateCopy(ISerializationManager serializationManager, DataDummyClass source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return SerializerReturnClass;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ public sealed partial class ManagerTests : ISerializationContext
|
||||
private static ValueDataNode SerializerRanCustomDataNode => new ("SerializerRanCustom");
|
||||
|
||||
public SerializationManager.SerializerProvider SerializerProvider { get; } = new();
|
||||
public bool WritingReadingPrototypes { get; }
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void SetupSerializerProvider()
|
||||
@@ -62,14 +63,14 @@ public sealed partial class ManagerTests : ISerializationContext
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, SerializerStruct source, ref SerializerStruct target,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target.OneValue = source.OneValue;
|
||||
target.TwoValue = source.TwoValue;
|
||||
}
|
||||
|
||||
public SerializerStruct CreateCopy(ISerializationManager serializationManager, SerializerStruct source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public SerializerStruct CreateCopy(ISerializationManager serializationManager, SerializerStruct source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new SerializerStruct(source.OneValue, source.TwoValue);
|
||||
}
|
||||
@@ -97,14 +98,14 @@ public sealed partial class ManagerTests : ISerializationContext
|
||||
}
|
||||
|
||||
public void CopyTo(ISerializationManager serializationManager, SerializerStruct source, ref SerializerStruct target,
|
||||
SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
target.OneValue = source.OneValue;
|
||||
target.TwoValue = source.TwoValue;
|
||||
}
|
||||
|
||||
public SerializerStruct CreateCopy(ISerializationManager serializationManager, SerializerStruct source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public SerializerStruct CreateCopy(ISerializationManager serializationManager, SerializerStruct source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new SerializerStruct(source.OneValue, source.TwoValue);
|
||||
}
|
||||
@@ -144,8 +145,8 @@ public sealed partial class ManagerTests : ISerializationContext
|
||||
return SerializerRanDataNode;
|
||||
}
|
||||
|
||||
public SerializerClass CreateCopy(ISerializationManager serializationManager, SerializerClass source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public SerializerClass CreateCopy(ISerializationManager serializationManager, SerializerClass source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new SerializerClass(source.OneValue, source.TwoValue);
|
||||
}
|
||||
@@ -172,8 +173,8 @@ public sealed partial class ManagerTests : ISerializationContext
|
||||
return SerializerRanCustomDataNode;
|
||||
}
|
||||
|
||||
public SerializerClass CreateCopy(ISerializationManager serializationManager, SerializerClass source, SerializationHookContext hookCtx,
|
||||
ISerializationContext? context = null)
|
||||
public SerializerClass CreateCopy(ISerializationManager serializationManager, SerializerClass source,
|
||||
IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null)
|
||||
{
|
||||
return new SerializerClass(source.OneValue, source.TwoValue);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Threading.Tasks;
|
||||
using NUnit.Framework;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
using Robust.Shared.Serialization.Markdown.Value;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
@@ -27,7 +29,7 @@ public sealed class TimeOffsetSerializerTest : RobustIntegrationTest
|
||||
|
||||
var dataTime = curTime + TimeSpan.FromSeconds(2);
|
||||
var node = serialization.WriteValue<TimeSpan, TimeOffsetSerializer>(dataTime);
|
||||
Assert.That(((ValueDataNode) node).Value, Is.EqualTo("2"));
|
||||
Assert.That(((ValueDataNode) node).Value, Is.EqualTo(dataTime.TotalSeconds.ToString(CultureInfo.InvariantCulture)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -41,13 +43,12 @@ public sealed class TimeOffsetSerializerTest : RobustIntegrationTest
|
||||
await sim.WaitRunTicks(10);
|
||||
|
||||
var curTime = sim.ResolveDependency<IGameTiming>().CurTime;
|
||||
var serializer = new TimeOffsetSerializer();
|
||||
|
||||
var node = new ValueDataNode("2");
|
||||
var deserialized = serialization.Read<TimeSpan, ValueDataNode, TimeOffsetSerializer>(node);
|
||||
|
||||
Assert.That(deserialized, Is.Not.EqualTo(null));
|
||||
var time = (TimeSpan) deserialized!;
|
||||
|
||||
var time = TimeSpan.Zero;
|
||||
var basic = serialization.Read<TimeSpan, ValueDataNode, TimeOffsetSerializer>(node);
|
||||
serialization.CopyTo(serializer, basic, ref time);
|
||||
Assert.That(time, Is.EqualTo(curTime + TimeSpan.FromSeconds(2)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user