Skip to content

Commit

Permalink
Removed need for CustomPropertyDrawers for every subclasses
Browse files Browse the repository at this point in the history
  • Loading branch information
azixMcAze committed May 15, 2018
1 parent 9965306 commit 6bf53f5
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Reflection;
using System;

[CustomPropertyDrawer(typeof(SerializableDictionary), true)]
public class SerializableDictionaryPropertyDrawer : PropertyDrawer
{
const string KeysFieldName = "m_keys";
Expand Down Expand Up @@ -549,6 +550,7 @@ static IEnumerable<EnumerationEntry> EnumerateEntries(SerializedProperty keyArra
}
}

[CustomPropertyDrawer(typeof(SerializableDictionary.Storage), true)]
public class SerializableDictionaryStoragePropertyDrawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
Expand Down

This file was deleted.

This file was deleted.

22 changes: 13 additions & 9 deletions Assets/SerializableDictionary/SerializableDictionary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,19 @@
using System.Runtime.Serialization;
using UnityEngine;

public abstract class SerializableDictionaryBase<TKey, TValue, TValueStorage> : IDictionary<TKey, TValue>, IDictionary, ISerializationCallbackReceiver, IDeserializationCallback, ISerializable
public abstract class SerializableDictionary
{
public abstract class Storage
{
}

public class Storage<T> : Storage
{
public T data;
}
}

public abstract class SerializableDictionaryBase<TKey, TValue, TValueStorage> : SerializableDictionary, IDictionary<TKey, TValue>, IDictionary, ISerializationCallbackReceiver, IDeserializationCallback, ISerializable
{
Dictionary<TKey, TValue> m_dict;
[SerializeField]
Expand Down Expand Up @@ -233,14 +245,6 @@ protected override void SetValue(TValue[] storage, int i, TValue value)
}
}

public static class SerializableDictionary
{
public class Storage<T>
{
public T data;
}
}

public class SerializableDictionary<TKey, TValue, TValueStorage> : SerializableDictionaryBase<TKey, TValue, TValueStorage> where TValueStorage : SerializableDictionary.Storage<TValue>, new()
{
public SerializableDictionary()
Expand Down

0 comments on commit 6bf53f5

Please sign in to comment.