public override T LoadContent(ITrwSerializationReadContext context)
        {
            context.Reader.CheckPropertyAndMoveNext("Source");
            var source = context.Read <IResourceSource>();

            return((T)source.GetResource());
        }
示例#2
0
        public override IAsset LoadContent(ITrwSerializationReadContext context)
        {
            var name      = context.ReadProperty <string>("Name");
            var assetDict = (IDictionary <string, IAsset>)context.Bag[SaveLoadConstants.AssetDictBagKey];

            return(assetDict[name]);
        }
示例#3
0
        public override GeneratedResourceSource LoadContent(ITrwSerializationReadContext context)
        {
            var generatedResourceList = (IReadOnlyList <IResource>)context.Bag[SaveLoadConstants.GeneratedResourcesBagKey];
            var index = context.ReadProperty <int>("Index");

            return((GeneratedResourceSource)generatedResourceList[index].Source);
        }
示例#4
0
        public override Vector2 LoadContent(ITrwSerializationReadContext context)
        {
            context.Reader.CheckAndMoveNext(TrwTokenType.StartArray);
            var x = context.Read <float>();
            var y = context.Read <float>();

            context.Reader.CheckAndMoveNext(TrwTokenType.EndArray);
            return(new Vector2(x, y));
        }
示例#5
0
        public override Pair <T> LoadContent(ITrwSerializationReadContext context)
        {
            context.Reader.Check(TrwTokenType.StartArray);
            context.Reader.MoveNext();
            var first  = context.Read <T>();
            var second = context.Read <T>();

            context.Reader.Check(TrwTokenType.EndArray);
            context.Reader.MoveNext();
            return(new Pair <T>(first, second));
        }
示例#6
0
        public override Transform LoadContent(ITrwSerializationReadContext context)
        {
            Transform result;

            context.Reader.MoveNext();
            result.Scale = context.Read <float>();
            context.Reader.MoveNext();
            result.Rotation = context.Read <Quaternion>();
            context.Reader.MoveNext();
            result.Offset = context.Read <Vector3>();
            return(result);
        }
示例#7
0
        public override TArray LoadContent(ITrwSerializationReadContext context)
        {
            var array = CreateBuilder();

            context.Reader.CheckAndMoveNext(TrwTokenType.StartArray);
            while (context.Reader.TokenType != TrwTokenType.EndArray)
            {
                AddItem(array, context.Read <TItem>());
            }
            context.Reader.CheckAndMoveNext(TrwTokenType.EndArray);
            return(Finalize(array));
        }
示例#8
0
        public override TObj LoadContent(ITrwSerializationReadContext context)
        {
            var obj   = CreateBuilder();
            var boxed = (object)obj;

            while (context.Reader.TokenType != TrwTokenType.EndObject)
            {
                var name = context.Reader.ValueAsString;
                if (TryGetProp(obj, name, out var prop))
                {
                    context.Reader.MoveNext();
                    var type = GetPropType(prop);
                    var val  = (TValue)context.Read(type);
                    SetPropValue(obj, boxed, prop, val);
                }
                else
                {
                    context.Reader.Skip();
                }
            }
            return(Finalize((TBuilder)boxed));
        }
示例#9
0
 public override string LoadContent(ITrwSerializationReadContext context) => context.ReadFluent(context.Reader.ValueAsString);
示例#10
0
 public static T ReadProperty <T>(this ITrwSerializationReadContext context, string propertyName)
 {
     context.Reader.CheckPropertyAndMoveNext(propertyName);
     return(context.Read <T>());
 }
示例#11
0
 public override Guid LoadContent(ITrwSerializationReadContext context)
 {
     return(Guid.Parse(context.Read <string>()));
 }
示例#12
0
 public override bool LoadContent(ITrwSerializationReadContext context) => context.ReadFluent(context.Reader.ValueAsBool);
示例#13
0
 public override TNew LoadContent(ITrwSerializationReadContext context) => exising2new(context.Read <TExising>());
示例#14
0
 public override T LoadContent(ITrwSerializationReadContext context) => context.ReadFluent((T)Enum.Parse(typeof(T), context.Reader.ValueAsString));
示例#15
0
 public override Type LoadContent(ITrwSerializationReadContext context) => context.ReadType();
 public abstract T LoadContent(ITrwSerializationReadContext context);
 object ITrwSerializationHandler.LoadContent(ITrwSerializationReadContext context) => LoadContent(context);
示例#18
0
 public override int LoadContent(ITrwSerializationReadContext context) => context.ReadFluent(context.Reader.ValueAsSInt32);
示例#19
0
 public override T?LoadContent(ITrwSerializationReadContext context)
 {
     return(context.Read <T>());
 }
示例#20
0
 public override float LoadContent(ITrwSerializationReadContext context) => context.ReadFluent((float)context.Reader.ValueAsFloat64);