Пример #1
0
        private bool Deserialize(BaseEditorFieldWrapper wrapper, out object value)
        {
            value = null;
            if (!Exists())
            {
                return(false);
            }

            wrapper.ResetValue();
            ReadFile(m_path, wrapper);

            if (wrapper is BaseArrayFieldWrapper arrayWrapper)
            {
                MightyGUIUtilities.SetFoldout(m_fileName, arrayWrapper.foldout);
            }

            wrapper.GetValue(out value);
            return(value != null);
        }
Пример #2
0
        public bool DeserializeOverwrite(Type type, out object value)
        {
            var wrapper = EditorSerializedFieldUtilities.GetWrapperForType(type);

            if (wrapper != null)
            {
                return(Deserialize(wrapper, out value));
            }

            value = null;

            if (type.GetCustomAttribute(typeof(SerializableAttribute), true) == null)
            {
                return(false);
            }

            if (!Exists())
            {
                return(false);
            }

            wrapper = EditorSerializedFieldUtilities.GetWrapperForType(typeof(bool));
            ReadFile(m_path, wrapper);
            wrapper.GetValue(out var foldout);
            MightyGUIUtilities.SetFoldout(m_fileName, (bool)foldout);

            value = Activator.CreateInstance(type);
            foreach (var field in type.GetSerializableFields())
            {
                EditorFieldsDatabase.GetEditorField(m_fileName).DeserializeOverwrite(field.FieldType, out var fieldValue);
                if (field.FieldType.IsEnum)
                {
                    fieldValue = Enum.ToObject(field.FieldType, fieldValue);
                }
                field.SetValue(value, fieldValue);
            }

            return(true);
        }