object Contravariant.IJsonAdapter <UnityObject> .Deserialize(SerializedValueView view)
        {
#if UNITY_EDITOR
            if (view.Type == TokenType.String)
            {
                if (UnityEditor.GlobalObjectId.TryParse(view.ToString(), out var id))
                {
                    if (id.assetGUID.Empty())
                    {
                        return(null);
                    }

                    var obj = UnityEditor.GlobalObjectId.GlobalObjectIdentifierToObjectSlow(id);
                    if (obj == null || !obj)
                    {
                        throw new InvalidOperationException($"An error occured while deserializing asset reference GUID=[{id.assetGUID.ToString()}]. Asset is not yet loaded and will result in a null reference.");
                    }

                    return(obj);
                }
            }

            if (view.Type == TokenType.Object)
            {
                return(FromObjectHandle(view.AsObjectView()));
            }
#endif
            return(null);
        }
        public object Deserialize(SerializedValueView view)
        {
            var json = view.ToString();

            if (string.IsNullOrEmpty(json))
            {
                return(null);
            }

            if (GlobalObjectId.TryParse(json, out var id))
            {
                if (GlobalObjectId.GlobalObjectIdentifierToObjectSlow(id) is BuildPipeline pipeline)
                {
                    return(pipeline);
                }
            }
            else
            {
                if (TypeConstructionHelper.TryConstructFromAssemblyQualifiedTypeName <IBuildStep>(json, out var step))
                {
                    return(step);
                }
            }
            return(null);
        }
        /// <summary>
        /// Reads the specified <see cref="SerializedValueView"/> as the specified <typeparamref name="TValue"/> type.
        /// </summary>
        /// <param name="view">The serialized object.</param>
        /// <typeparam name="TValue">The value type.</typeparam>
        /// <returns>A new instance of <typeparamref name="TValue"/> initialized with data from the view.</returns>
        public TValue Read <TValue>(SerializedValueView view)
        {
            var value = default(TValue);

            Read(ref value, view);
            return(value);
        }
Example #4
0
        /**
         * Determine the type of a value view and fully deserialize it into the correct buffer.
         */
        JsonKeyHandle DeserializeValueView(SerializedValueView valueView)
        {
            JsonKeyHandle jsonKeyHandle;

            switch (valueView.Type)
            {
            case TokenType.Primitive:
                jsonKeyHandle = DeserializeToPrimitiveBuffer(valueView.AsPrimitiveView());
                break;

            case TokenType.String:
                jsonKeyHandle = DeserializeToStringBuffer(valueView.AsStringView());
                break;

            case TokenType.Object:
                jsonKeyHandle = DeserializeToObjectBuffer(valueView.AsObjectView());
                break;

            case TokenType.Array:
                jsonKeyHandle = DeserializeToArrayBuffer(valueView.AsArrayView());
                break;

            default:
                jsonKeyHandle = default;
                break;
            }

            return(jsonKeyHandle);
        }
        public object Deserialize(SerializedValueView view)
        {
            var json = view.ToString();

            if (string.IsNullOrEmpty(json))
            {
                return(null);
            }
            return(TypeConstructionHelper.TryConstructFromAssemblyQualifiedTypeName <RunStep>(json, out var step) ? step : null);
        }
        public Platform Deserialize(SerializedValueView view)
        {
            if (view.Type != TokenType.String)
            {
                return(null);
            }

            var json = view.AsStringView().ToString();

            if (string.IsNullOrEmpty(json))
            {
                return(null);
            }

            return(TypeCacheHelper.ConstructTypeDerivedFrom <Platform>(platform => platform.Name == json, false));
        }
        public Platform Deserialize(SerializedValueView view)
        {
            if (view.Type != TokenType.String)
            {
                return(null);
            }

            var json = view.AsStringView().ToString();

            if (string.IsNullOrEmpty(json))
            {
                return(null);
            }

            return(Platform.GetPlatformByName(json));
        }
Example #8
0
        public BuildPipelineBase Deserialize(SerializedValueView view)
        {
            if (view.Type != TokenType.String)
            {
                return(null);
            }

            var json = view.AsStringView().ToString();

            if (string.IsNullOrEmpty(json))
            {
                return(null);
            }

            if (TypeConstructionUtility.TryConstructFromAssemblyQualifiedTypeName <BuildPipelineBase>(json, out var step))
            {
                return(step);
            }

            throw new ArgumentException($"Failed to construct type. Could not resolve type from TypeName=[{json}].");
        }
Example #9
0
        static bool TryDeserializeLazyLoadReference <TValue>(SerializedValueView view, ref TValue value, List <DeserializationEvent> events)
        {
            if (!RuntimeTypeInfoCache <TValue> .IsLazyLoadReference)
            {
                return(false);
            }

            if (view.Type != TokenType.String)
            {
                return(false);
            }

            var json = view.AsStringView().ToString();

            if (json == s_EmptyGlobalObjectId) // Workaround issue where GlobalObjectId.TryParse returns false for empty GlobalObjectId
            {
                return(true);
            }

            if (UnityEditor.GlobalObjectId.TryParse(json, out var id))
            {
#if UNITY_2020_1_OR_NEWER
                var instanceID = UnityEditor.GlobalObjectId.GlobalObjectIdentifierToInstanceIDSlow(id);
                PropertyContainer.SetValue(ref value, k_LazyLoadReference_InstanceID, instanceID);
#else
                var asset = UnityEditor.GlobalObjectId.GlobalObjectIdentifierToObjectSlow(id);
                if ((asset == null || !asset) && !id.assetGUID.Empty())
                {
                    throw new InvalidOperationException($"An error occured while deserializing asset reference GUID=[{id.assetGUID.ToString()}]. Asset is not yet loaded and will result in a null reference.");
                }

                var instanceID = asset.GetInstanceID();
                PropertyContainer.SetValue(ref value, k_LazyLoadReference_InstanceID, instanceID);
#endif
                return(true);
            }

            events.Add(new DeserializationEvent(EventType.Error, $"An error occured while deserializing asset reference Value=[{json}]."));
            return(false);
        }
 string IJsonAdapter <string> .Deserialize(SerializedValueView view)
 => throw new NotImplementedException($"This code should never be executed. {nameof(JsonPropertyReader)} should handle primitives in a specialized way.");
Example #11
0
 TimeSpan IJsonAdapter <TimeSpan> .Deserialize(SerializedValueView view)
 => TimeSpan.TryParseExact(view.ToString(), "c", CultureInfo.InvariantCulture, out var value) ? value : default;
 public Version Deserialize(SerializedValueView view)
 => new Version(view.ToString());
Example #13
0
 FileInfo IJsonAdapter <FileInfo> .Deserialize(SerializedValueView view)
 {
     return(view.AsStringView().Equals("null") ? null : new FileInfo(view.ToString()));
 }
Example #14
0
 UnityEditor.GlobalObjectId IJsonAdapter <UnityEditor.GlobalObjectId> .Deserialize(SerializedValueView view)
 => UnityEditor.GlobalObjectId.TryParse(view.ToString(), out var value) ? value : default;
Example #15
0
 UnityEditor.GUID IJsonAdapter <UnityEditor.GUID> .Deserialize(SerializedValueView view)
 => UnityEditor.GUID.TryParse(view.ToString(), out var value) ? value : default;
        /// <summary>
        /// Reads the specified <see cref="SerializedValueView"/> in to the given reference.
        /// </summary>
        /// <param name="value">The existing reference to read in to.</param>
        /// <param name="view">The serialized value.</param>
        /// <typeparam name="TValue">The value type.</typeparam>
        public void Read <TValue>(ref TValue value, SerializedValueView view)
        {
            switch (view.Type)
            {
            case TokenType.String:
            {
                TypeConversion.TryConvert(view.AsStringView().ToString(), out value);
                break;
            }

            case TokenType.Primitive:
            {
                var p = view.AsPrimitiveView();

                if (p.IsIntegral())
                {
                    if (p.IsSigned())
                    {
                        TypeConversion.TryConvert(p.AsInt64(), out value);
                    }
                    else
                    {
                        TypeConversion.TryConvert(p.AsUInt64(), out value);
                    }
                }
                else if (p.IsDecimal() || p.IsInfinity() || p.IsNaN())
                {
                    TypeConversion.TryConvert(p.AsFloat(), out value);
                }
                else if (p.IsBoolean())
                {
                    TypeConversion.TryConvert(p.AsBoolean(), out value);
                }
                else if (p.IsNull())
                {
                    value = default;
                }

                break;
            }

            case TokenType.Object:
            case TokenType.Array:
            {
                var serializedType = !RuntimeTypeInfoCache <TValue> .IsAbstractOrInterface
                        ? typeof(TValue)
                        : null;

                using (m_Visitor.CreateSerializedTypeScope(serializedType))
                    using (m_Visitor.CreateViewScope(view.AsUnsafe()))
                        using (m_Visitor.CreateDisableRootMigrationScope(true))
                        {
                            var container = new PropertyWrapper <TValue>(value);
                            PropertyContainer.Visit(ref container, m_Visitor, out _);
                            value = container.Value;
                        }

                break;
            }

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #17
0
 Guid IJsonAdapter <Guid> .Deserialize(SerializedValueView view)
 => Guid.TryParseExact(view.ToString(), "N", out var value) ? value : default;
Example #18
0
 public BuildTarget Deserialize(SerializedValueView view)
 {
     return(BuildTarget.GetBuildTargetFromBeeTargetName(view.ToString()));
 }
Example #19
0
 DateTime IJsonAdapter <DateTime> .Deserialize(SerializedValueView view)
 => DateTime.TryParseExact(view.ToString(), "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var value) ? value : default;