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();
        }
Exemplo n.º 3
0
        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();
        }