public bool SerializeWrapper(ref MessagePackWriter writer, IExposedWrapper value, MessagePackSerializerOptions options)
        {
            if (value is TransformWrapper.Wrapper transformWrapper)
            {
                options.Resolver.GetFormatter <TransformWrapper.Wrapper>().Serialize(ref writer, transformWrapper, options);
                return(true);
            }

            if (value is RigidbodyWrapper.Wrapper rigidbodyWrapper)
            {
                options.Resolver.GetFormatter <RigidbodyWrapper.Wrapper>().Serialize(ref writer, rigidbodyWrapper, options);
                return(true);
            }

            return(false);
        }
 public static T GetValue <T>(this IExposedWrapper wrapper, int id)
 {
     if (wrapper.Values == null)
     {
         return(default);
Beispiel #3
0
 public LevelEditorComponentData(Type type, IExposedWrapper wrapper)
 {
     this.type    = type;
     this.wrapper = wrapper;
 }
Beispiel #4
0
 public LevelEditorComponentData(IExposedToLevelEditor exposed)
 {
     type    = exposed.ComponentType;
     wrapper = exposed.GetWrapper();
 }
 void IExposedToLevelEditor.ApplyWrapper(IExposedWrapper wrapper, bool ignoreDirtyMask)
 {
     throw new NotImplementedException();
 }
 public abstract void ApplyWrapper(IExposedWrapper wrapper, bool ignoreDirtyMask = false);
        public bool DeserializeWrapper(Type type, ref MessagePackReader reader, MessagePackSerializerOptions options, out IExposedWrapper wrapper)
        {
            if (type == typeof(TransformWrapper.Wrapper))
            {
                wrapper = options.Resolver.GetFormatter <TransformWrapper.Wrapper>().Deserialize(ref reader, options);
                return(true);
            }

            if (type == typeof(RigidbodyWrapper.Wrapper))
            {
                wrapper = options.Resolver.GetFormatter <RigidbodyWrapper.Wrapper>().Deserialize(ref reader, options);
                return(true);
            }

            wrapper = null;
            return(false);
        }
Beispiel #8
0
 public bool DeserializeWrapperTemplate(Type type, ref MessagePackReader reader, MessagePackSerializerOptions options, out IExposedWrapper wrapper)
 {
     wrapper = null;
     return(false);
 }
Beispiel #9
0
 public bool SerializeWrapperTemplate(ref MessagePackWriter writer, IExposedWrapper wrapper, MessagePackSerializerOptions options)
 {
     return(false);
 }
        private static void DeserializeFormat0(ref MessagePackReader reader, MessagePackSerializerOptions options, ref Type type, ref IExposedWrapper wrapper)
        {
            int count    = reader.ReadMapHeader();
            int typeHash = 0;

            for (int i = 0; i < count; i++)
            {
                ReadOnlySpan <byte> stringKey = CodeGenHelpers.ReadStringSpan(ref reader);

                switch (stringKey.Length)
                {
                default:
FAIL:
                    reader.Skip();
                    continue;

                case 4:
                    if (AutomataKeyGen.GetKey(ref stringKey) != 1701869940UL)
                    {
                        goto FAIL;
                    }

                    typeHash = reader.ReadInt32();
                    type     = LevelEditorSerializer.GetType(typeHash);
                    continue;

                case 10:
                    if (!stringKey.SequenceEqual(SpanProperties.Slice(1)))
                    {
                        goto FAIL;
                    }

                    if (type == null)
                    {
                        Debug.LogWarning($"Couldn't find a wrapper for type hash {typeHash}.");
                        reader.Skip();
                        continue;
                    }

                    ((LevelEditorResolver)LevelEditorResolver.instance).DeserializeWrapper(type, ref reader, options, out wrapper);
                    continue;
                }
            }
        }
        private static void DeserializeFormat1(ref MessagePackReader reader, MessagePackSerializerOptions options, ref Type type, ref IExposedWrapper wrapper)
        {
            int count = reader.ReadArrayHeader();

            for (int i = 0; i < count; i++)
            {
                switch (i)
                {
                case 0:
                    var typeHash = reader.ReadInt32();
                    type = LevelEditorSerializer.GetType(typeHash);
                    break;

                case 1:
                    if (type == null)
                    {
                        reader.Skip();
                        continue;
                    }

                    ((LevelEditorResolver)LevelEditorResolver.instance).DeserializeWrapper(type, ref reader, options, out wrapper);
                    break;
                }
            }
        }
Beispiel #12
0
        public bool DeserializeWrapper(Type type, ref MessagePackReader reader, MessagePackSerializerOptions options, out IExposedWrapper wrapper)
        {
            for (int i = 0; i < wrapperSerializers.Count; i++)
            {
                if (wrapperSerializers[i].DeserializeWrapper(type, ref reader, options, out wrapper))
                {
                    return(true);
                }
            }

            throw new FormatterNotRegisteredException($"Found no wrapper formatter for type {type}.");
        }