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);
        }
Example #2
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);
        }