public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            GenericVariable cmp = (GenericVariable)target;

            //Draw value field
            Type baseType = GenericVariable.GetBaseType(cmp);

            if (baseType == typeof(float))
            {
                cmp.Value = EditorGUILayout.FloatField(valueFieldName, (float)cmp.Value);
            }
            else if (baseType == typeof(int))
            {
                cmp.Value = EditorGUILayout.IntField(valueFieldName, (int)cmp.Value);
            }
            else if (baseType == typeof(string))
            {
                cmp.Value = EditorGUILayout.TextField(valueFieldName, (string)cmp.Value);
            }
            else if (baseType == typeof(bool))
            {
                cmp.Value = EditorGUILayout.Toggle(valueFieldName, (bool)cmp.Value);
            }
            else
            {
                GUI.enabled = false;
                EditorGUILayout.LabelField(valueFieldName, valueComplex);
                GUI.enabled = true;
            }

            GUI.enabled = false;
            EditorGUILayout.Toggle(valueHasChangedLabel, cmp.HasChanged);
            try
            {
                EditorGUILayout.LabelField(assetVersionLabel, cmp.Version);
            }
            catch
            {
                EditorGUILayout.LabelField(assetVersionLabel, "--");
            }
            GUI.enabled = true;

            if (Globals.VersionNum > new Version(cmp.Version))
            {
                if (GUILayout.Button(string.Format("Upgrade Asset Version ({0} > {1})"
                                                   , cmp.Version
                                                   , Globals.Version))
                    )
                {
                    if (cmp.UpgradeAsset())
                    {
                        EditorUtility.SetDirty(target);
                    }
                }
            }
        }
Пример #2
0
 public static Type GetBaseType(GenericVariable obj)
 {
     if (obj.GetType().Equals(typeof(FloatVariable)))
     {
         return(typeof(float));
     }
     else if (obj.GetType().Equals(typeof(IntVariable)))
     {
         return(typeof(int));
     }
     else if (obj.GetType().Equals(typeof(StringVariable)))
     {
         return(typeof(string));
     }
     else if (obj.GetType().Equals(typeof(BoolVariable)))
     {
         return(typeof(bool));
     }
     else
     {
         return(null);
     }
 }
Пример #3
0
 public static GenericVariable GetAsType <T>(T baseType, GenericVariable obj) where T : Type
 {
     if (baseType == typeof(float))
     {
         return((GenericVariable <float>)obj);
     }
     else if (baseType == typeof(int))
     {
         return((GenericVariable <int>)obj);
     }
     else if (baseType == typeof(string))
     {
         return((GenericVariable <string>)obj);
     }
     else if (baseType == typeof(bool))
     {
         return((GenericVariable <bool>)obj);
     }
     else
     {
         return(null);
     }
 }