Ejemplo n.º 1
0
		public static void OnGUI(UnityEngine.Object targetObject){
			EditorGUI.BeginChangeCheck ();
			SerializedObject serializedObject = new SerializedObject (targetObject);
			serializedObject.Update ();
			FieldInfo[] fields;
			if(!fieldsLookup.TryGetValue (targetObject.GetType (),out fields)){
				fields=targetObject.GetPublicFields().OrderBy(field => field.MetadataToken).ToArray();

				fieldsLookup.Add(targetObject.GetType(),fields);
			}
			if(PreferencesEditor.GetBool(Preference.ShowActionTooltips) && !string.IsNullOrEmpty(targetObject.GetTooltip())){
				GUILayout.BeginVertical((GUIStyle)"hostview");

				GUILayout.Label(targetObject.GetTooltip(),FsmEditorStyles.wrappedLabelLeft);
				GUILayout.EndVertical();
			}


			for (int i=0; i< fields.Length; i++) {
				FieldInfo field=fields[i];
				if(field.HasAttribute(typeof(HideInInspector))){
					continue;
				}
				PropertyDrawer drawer=GUIDrawer.GetDrawer(field);
				GUIContent content = field.GetInspectorGUIContent ();
				SerializedProperty property=serializedObject.FindProperty(field.Name);
				if(PreferencesEditor.GetBool(Preference.ShowVariableTooltips) && !string.IsNullOrEmpty(field.GetTooltip())){
					GUILayout.BeginVertical("box");
					GUILayout.Label(field.GetTooltip(),FsmEditorStyles.wrappedLabelLeft);
					GUILayout.EndVertical();
				}

				if(drawer != null){
					drawer.fieldInfo=field;
					drawer.OnGUI(property,content);
				}else{
					int indentLevel=EditorGUI.indentLevel;
					EditorGUI.indentLevel=	typeof(IList).IsAssignableFrom(field.FieldType)?indentLevel+1:indentLevel;
					EditorGUILayout.PropertyField (property, content,true);
					EditorGUI.indentLevel=indentLevel;
				}
			}


			if (EditorGUI.EndChangeCheck()) {
				serializedObject.ApplyModifiedProperties();
				ErrorChecker.CheckForErrors();
			}
		}
Ejemplo n.º 2
0
		public static bool ObjectTitlebar(UnityEngine.Object targetObject, bool foldout ,ref bool enabled, GenericMenu settings){
			int controlID = EditorGUIUtility.GetControlID (FocusType.Passive);
			GUIContent content = new GUIContent (targetObject.name.Replace("/","."), targetObject.GetTooltip());
			
			Rect position= GUILayoutUtility.GetRect(GUIContent.none, FsmEditorStyles.inspectorTitle);
			Rect rect = new Rect(position.x + (float)FsmEditorStyles.inspectorTitle.padding.left, position.y + (float)FsmEditorStyles.inspectorTitle.padding.top, 16f, 16f);
			Rect rect1 = new Rect(position.xMax - (float)FsmEditorStyles.inspectorTitle.padding.right - 2f - 16f, rect.y, 16f, 16f);
			Rect rect4 = rect1;
			rect4.x = rect4.x - 18f;
			
			Rect rect2 = new Rect(position.x + 2f + 2f + 16f*2, rect.y, 100f, rect.height)
			{
				xMax = rect4.xMin - 2f
			};
			Rect rect3 = new Rect(position.x + 16f, rect.y, 16f, 16f);
			
			enabled=GUI.Toggle (rect3, enabled,GUIContent.none);
			string url=targetObject.GetHelpUrl();
			
			if (ErrorChecker.HasErrors (targetObject)) {
				Rect rect5 = rect4;
				rect5.y += 1.0f;
				if(!string.IsNullOrEmpty(url)){
					rect5.x = rect5.x - 18f;
					rect2.xMax=rect5.x;
				}
				
				GUI.Label (rect5, FsmEditorStyles.errorIcon, FsmEditorStyles.inspectorTitleText);
			}
			
			if (GUI.Button(rect1, FsmEditorStyles.popupIcon,FsmEditorStyles.inspectorTitleText))
			{
				settings.ShowAsContext();
			}
			
			if (!string.IsNullOrEmpty(url) && GUI.Button(rect4, FsmEditorStyles.helpIcon,FsmEditorStyles.inspectorTitleText))
			{
				Application.OpenURL(url);
			}
			
			EventType eventType = Event.current.type;
			if (eventType != EventType.MouseDown) {
				if (eventType == EventType.Repaint)
				{
					FsmEditorStyles.inspectorTitle.Draw (position, GUIContent.none, controlID, foldout);
					Color color = GUI.contentColor;
					if (FsmEditor.Active != null && FsmEditor.Active.Owner != null) {
						
						ICodeBehaviour behaviour=FsmEditor.Active.Owner;
						if(behaviour.ActiveNode is State && (behaviour.ActiveNode as State).ActiveAction==targetObject){
							GUI.contentColor = Color.green;
						}
					}
					FsmEditorStyles.inspectorTitleText.Draw (rect2, content, controlID, foldout);	
					GUI.contentColor = color;
				}
			}
			position.width = 15;

			bool flag = FsmGUIUtility.DoToggleForward(position,controlID, foldout,GUIContent.none,GUIStyle.none);

			return flag;
		}