static ITypeGUI GetTypeGUI(System.Type type, FieldInfo fieldInfo) { if (IL.Help.isType(type, typeof(UnityEngine.Object))) { return(unityObjectGUI); } if (type.IsEnum) { return(new EnumType(type)); } if (type == typeof(RefType)) { if (fieldInfo == null) { return(emptyTypeGUI); } var ils = fieldInfo.GetCustomAttribute <ILSerializable>(); return(new RefTypeEditor(IL.Help.GetTypeByFullName(ils.typeName))); } var atts = type.GetCustomAttributes(typeof(SmartAttribute), false); if (atts != null && atts.Length > 0) { return(new SmartEditor(type, new AnyType(type, IL.Help.GetSerializeField(type)))); } #if USE_HOT ILRuntimeFieldInfo ilFieldInfo = (ILRuntimeFieldInfo)fieldInfo; if (ilFieldInfo != null && (type.IsArray || IL.Help.isListType(type))) { var isListType = type.IsArray ? false : true; int arrayCount = 0; string elementType; BinarySerializable.GetElementType(ilFieldInfo.Definition.FieldType, ref arrayCount, out elementType); var et = IL.Help.GetType(elementType); if (et is ILRuntimeType) { return(new ArrayListHot(elementType, arrayCount, isListType)); } } #endif if (type.IsArray) { var elementType = type.GetElementType(); var arrayGUI = new ArrayTypeEditor(type, elementType, Get(elementType, null)); return(arrayGUI); } else if (IL.Help.isListType(type)) { System.Type elementType = null; if (fieldInfo != null) { elementType = IL.Help.GetElementByList(fieldInfo); } else { elementType = type.GetGenericArguments()[0]; } return(new ListTypeEditor(type, elementType, Get(elementType, null))); } #if USE_HOT if (type is ILRuntimeType) { if ((type.Name.EndsWith("[]"))) { return(emptyTypeGUI); } if (!((ILRuntimeType)type).ILType.TypeDefinition.IsSerializable) { return(emptyTypeGUI); } } else #endif { if (!type.IsSerializable) { return(emptyTypeGUI); } } return(new AnyType(type, IL.Help.GetSerializeField(type))); }
public override void Load(BinaryReader r, uint id) { base.Load(r, id); _rGen = BinarySerializable.GetObject <MersenneTwister>(r); }
/// <summary> /// Returns the path where a Table with the given name will be serialized. /// Used so that additional metadata (ex: security) can be written within it. /// </summary> /// <param name="tableName">TableName for which to return path</param> /// <returns>Full Path where Table will be serialized</returns> public static string TableCachePath(string tableName) { return(BinarySerializable.FullPath(Path.Combine("Tables", tableName))); }