public sealed override void OnInspectorGUI() { if (!(this.target is SPComponent) && !EditorProjectPrefs.Local.GetBool(BaseSettings.SETTING_SPEDITOR_ISDEFAULT_ACTIVE, true)) { base.OnInspectorGUI(); return; } this.OnBeforeSPInspectorGUI(); EditorGUI.BeginChangeCheck(); //draw header infobox if needed this.DrawDefaultInspectorHeader(); this.OnSPInspectorGUI(); this.DrawDefaultInspectorFooters(); if (EditorGUI.EndChangeCheck()) { //do call onValidate PropertyHandlerValidationUtility.OnInspectorGUIComplete(this.serializedObject, true); this.OnValidate(); } else { PropertyHandlerValidationUtility.OnInspectorGUIComplete(this.serializedObject, false); } if (_shownFields != null && UnityEngine.Application.isPlaying) { GUILayout.Label("Runtime Values", EditorStyles.boldLabel); foreach (var info in _shownFields) { if (info.Attrib.Readonly) { GUI.enabled = false; } var value = info.FieldInfo.GetValue(this.target); EditorGUI.BeginChangeCheck(); value = SPEditorGUILayout.DefaultPropertyField(info.Label, value, info.FieldInfo.FieldType); if (EditorGUI.EndChangeCheck()) { info.FieldInfo.SetValue(this.target, value); } if (info.Attrib.Readonly) { GUI.enabled = true; } } } }
public sealed override void OnInspectorGUI() { if (!(this.target is SPComponent) && !SpacepuppySettings.UseSPEditorAsDefaultEditor) { base.OnInspectorGUI(); return; } this.OnBeforeSPInspectorGUI(); EditorGUI.BeginChangeCheck(); //draw header infobox if needed this.DrawDefaultInspectorHeader(); this.OnSPInspectorGUI(); this.DrawDefaultInspectorFooters(); if (EditorGUI.EndChangeCheck()) { //do call onValidate PropertyHandlerValidationUtility.OnInspectorGUIComplete(this.serializedObject, true); this.OnValidate(); } else { PropertyHandlerValidationUtility.OnInspectorGUIComplete(this.serializedObject, false); } if (_shownFields != null && UnityEngine.Application.isPlaying) { GUILayout.Label("Runtime Values", EditorStyles.boldLabel); foreach (var info in _shownFields) { var cache = SPGUI.DisableIf(info.Attrib.Readonly); var value = DynamicUtil.GetValue(this.target, info.MemberInfo); EditorGUI.BeginChangeCheck(); value = SPEditorGUILayout.DefaultPropertyField(info.Label, value, DynamicUtil.GetReturnType(info.MemberInfo)); if (EditorGUI.EndChangeCheck()) { DynamicUtil.SetValue(this.target, info.MemberInfo, value); } cache.Reset(); } } }