void initSubItem <T>(IEnumerable <Type> types, ref T subItem) where T : ReplaceItem, new() { if (subItem == null) { subItem = new T(); } subItem.OnDeserialization(); foreach (Type t in types) { typeHash[t] = subItem; } }
void setType(Type t) { if (t != type || initializationContext.forceUpdate) { type = t; //Save the initial type, but check inheritance to find our editor. Type fieldType = type; if (typeof(UnityEngine.Object).IsAssignableFrom(type)) { fieldType = typeof(UnityEngine.Object); } else if (typeof(System.Enum).IsAssignableFrom(type)) { fieldType = typeof(System.Enum); } subItem = null; if (typeHash.TryGetValue(fieldType, out subItem)) { subItem.type = type; } } }