protected void DrawRestoreWarning(SmartVarBase.DataType dt) { bool showWarning = false; string warning = ""; switch (dt) { case SmartVarBase.DataType.CLASS: showWarning = true; warning = "Default reset behaviour for reference types may not be correct."; break; case SmartVarBase.DataType.DICTIONARY: showWarning = true; warning = "Default reset behaviour for Dictionaries is suboptimal."; break; case SmartVarBase.DataType.COLLECTION: showWarning = true; warning = "Default reset behaviour for collections is suboptimal."; break; } if (showWarning) { EditorGUILayout.HelpBox( string.Format( "{0}\nOverride {1}.OnRestore to implement custom behaviour.", warning, _typeName ), MessageType.Info ); EditorGUILayout.Space(); } }
protected void DrawCommonHeader(bool canRestore = false) { DrawTypeHeader(); if (canRestore) { if (!_isOnRestoreOverridden) { SmartVarBase.DataType dt = (SmartVarBase.DataType)_dataType.intValue; DrawRestoreWarning(dt); } } DrawDescription(); }
protected override void OnEnable() { System.Type t = serializedObject.targetObject.GetType(); _getElement = t.GetMethod("Get", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy); _getValue = t.GetMethod("GetValue", BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy); var gdt = t.GetMethod("_EDITOR_GetDataType", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy); _isEvent = gdt == null; // Doesn't exist for SmartEventMulti if (!_isEvent) { _dataType = (SmartVarBase.DataType)gdt.Invoke(target, null); _isOnRestoreOverridden = IsOnRestoreOverridden( (System.Type)t.GetMethod( "_EDITOR_GetSmartType", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy ).Invoke(target, null) ); } _maxCount = serializedObject.FindProperty("_maxSize"); _persistent = serializedObject.FindProperty("_persistent"); base.OnEnable(); }