private void GenerateValueObjectClass(string typeName) { var template = Resources.Load <TextAsset>(templatePath); if (template == null) { DisplayFailure("The wizard could not find the correct class template."); return; } var code = template.text; code = ParseTemplate(code, typeName); TextAsset createdAsset; try { createdAsset = SodaEditorHelpers.CreateTextFile(code, GenerateFilename(typeName)); } catch (IOException e) { DisplayFailure(e.Message); return; } Close(); EditorUtility.DisplayDialog("Success", successMessage, "OK"); EditorApplication.projectChanged += () => Selection.activeObject = createdAsset; }
public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { var lines = 1; var useLocalProperty = property.FindPropertyRelative("useLocal"); var useLocal = useLocalProperty.boolValue; if (useLocal) { var localValueProperty = property.FindPropertyRelative("localValue"); if (localValueProperty.isExpanded) { lines = SodaEditorHelpers.GetNumberOfPropertyChildren(localValueProperty) + 1; } } return(lines * (EditorGUIUtility.singleLineHeight + 2)); }
public override void OnInspectorGUI() { SodaEditorHelpers.DisplayInspectorSubtitle("GameEvent"); var descriptionProperty = serializedObject.FindProperty("description"); var onRaiseGloballyProperty = serializedObject.FindProperty("onRaiseGlobally"); serializedObject.Update(); serializedObject.DisplayAllPropertiesExcept(false, descriptionProperty, onRaiseGloballyProperty); EditorGUILayout.PropertyField(descriptionProperty); GUILayout.Space(16); GUI.enabled = !Application.isPlaying; EditorGUILayout.PropertyField(onRaiseGloballyProperty); GUI.enabled = true; DisplayDebugCheckbox(); serializedObject.ApplyModifiedProperties(); GUI.enabled = Application.isPlaying; GameEvent gameEventTarget = (GameEvent)target; if (GUILayout.Button("Raise")) { gameEventTarget.Raise(); } if (Application.isPlaying) { EditorGUILayout.Space(); EditorGUILayout.LabelField("Responding Objects"); if (targets.Length == 1) { SodaEventDrawer.DisplayListeners(gameEventTarget.onRaise); } else { EditorGUILayout.HelpBox("Cannot display when multiple GameEvents are selected.", MessageType.Warning); } } }
public override void OnInspectorGUI() { SodaEditorHelpers.DisplayInspectorSubtitle(subtitle); var originalValueProperty = serializedObject.FindProperty("originalValue"); var descriptionProperty = serializedObject.FindProperty("description"); serializedObject.Update(); if (originalValueProperty != null) { SodaEditorHelpers.DisplayExpandablePropertyField(originalValueProperty); } else { EditorGUILayout.HelpBox("The type of the value this GlobalVariable is representing does not seem to be serializable.", MessageType.Error); } serializedObject.DisplayAllPropertiesExcept(false, originalValueProperty, descriptionProperty); EditorGUILayout.PropertyField(descriptionProperty); serializedObject.ApplyModifiedProperties(); if (Application.isPlaying) { EditorGUILayout.Space(); EditorGUILayout.LabelField("Objects responding to onChangeValue event"); if (targets.Length == 1) { var globalVariableTarget = (GlobalVariableBase)target; SodaEventDrawer.DisplayListeners(globalVariableTarget.GetOnChangeEvent()); } else { EditorGUILayout.HelpBox("Cannot display when multiple GlobalVariables are selected.", MessageType.Warning); } } }
public override void OnInspectorGUI() { LazyOnEnable(); SodaEditorHelpers.DisplayInspectorSubtitle(target.GetType().Name); var descriptionProperty = serializedObject.FindProperty("description"); serializedObject.Update(); serializedObject.DisplayAllPropertiesExcept(false, descriptionProperty); EditorGUILayout.PropertyField(descriptionProperty); serializedObject.ApplyModifiedProperties(); if (Application.isPlaying) { EditorGUILayout.Space(); EditorGUILayout.LabelField("Monitoring Objects"); SodaEventDrawer.DisplayListeners(((RuntimeSetBase)target).GetOnElementCountChangeEvent(), this); EditorGUILayout.Space(); DisplayElements(); } }
public override void OnInspectorGUI() { SodaEditorHelpers.DisplayInspectorSubtitle("GameEvent"); var gameEventBaseTarget = (GameEventBase)target; var descriptionProperty = serializedObject.FindProperty("description"); var parameterDescriptionProperty = serializedObject.FindProperty("parameterDescription"); var onRaiseGloballyProperty = serializedObject.FindProperty("onRaiseGlobally"); if (onRaiseGloballyProperty == null) { onRaiseGloballyProperty = serializedObject.FindProperty("_onRaiseGlobally"); } serializedObject.Update(); if (parameterDescriptionProperty != null) { serializedObject.DisplayAllPropertiesExcept(false, descriptionProperty, parameterDescriptionProperty, onRaiseGloballyProperty); } else { serializedObject.DisplayAllPropertiesExcept(false, descriptionProperty, onRaiseGloballyProperty); } EditorGUILayout.PropertyField(descriptionProperty); if (parameterDescriptionProperty != null) { EditorGUILayout.PropertyField(parameterDescriptionProperty, new GUIContent("Parameter Description (" + gameEventBaseTarget.GetParameterType().Name + ")")); } GUILayout.Space(16); GUI.enabled = !Application.isPlaying; EditorGUILayout.PropertyField(onRaiseGloballyProperty); GUI.enabled = true; DisplayDebugCheckbox(); serializedObject.ApplyModifiedProperties(); GUI.enabled = Application.isPlaying; var gameEventTarget = target as GameEvent; if (!gameEventTarget) { EditorGUILayout.HelpBox("Cannot raise a parameterized GameEvent via inspector.", MessageType.Info); GUI.enabled = false; } if (GUILayout.Button("Raise")) { gameEventTarget.Raise(); } GUI.enabled = true; if (Application.isPlaying) { EditorGUILayout.Space(); EditorGUILayout.LabelField("Responding Objects", EditorStyles.boldLabel); if (targets.Length == 1) { var onRaiseWithParameter = GetOnRaiseWithParameterEvent(gameEventBaseTarget); if (onRaiseWithParameter != null) { SodaEventDrawer.DisplayListeners(onRaiseWithParameter); EditorGUILayout.LabelField("Responding Objects (ignoring parameter)", EditorStyles.boldLabel); } SodaEventDrawer.DisplayListeners(gameEventBaseTarget.onRaise); } else { EditorGUILayout.HelpBox("Cannot display when multiple GameEvents are selected.", MessageType.Warning); } } }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { var serializedObject = property.serializedObject; var target = serializedObject.targetObject; var diipAttribute = (DisplayInsteadInPlaymodeAttribute)attribute; InitializeIfNeeded(target); if (Application.isPlaying) { if (replacementProperty != null || replacementField != null) { property.isExpanded = false; var playmodeLabel = new GUIContent(label); if (target is ScriptableObject) { playmodeLabel.image = playmodeIcon; // Tooltips are, by design, not displayed in play mode. /* * var originalTooltip = !string.IsNullOrEmpty(label.tooltip) ? label.tooltip + "\n\n" : ""; * playmodeLabel.tooltip = originalTooltip + tooltip; */ } if (replacementProperty != null) { playmodeLabel.text = formattedInspectorPropertyName; var value = replacementProperty.GetValue(target, null); SodaEditorHelpers.DisplayValueField(position, playmodeLabel, ref value, replacementProperty.PropertyType); replacementProperty.SetValue(target, value, null); } else { playmodeLabel.text = formattedInspectorPropertyName; var value = replacementField.GetValue(target); SodaEditorHelpers.DisplayValueField(position, playmodeLabel, ref value, replacementField.FieldType); replacementField.SetValue(target, value); } } else { GUI.enabled = false; EditorGUI.PropertyField(position, property, label); GUI.enabled = true; } } else { var editmodeLabel = new GUIContent(label); if (target is ScriptableObject) { editmodeLabel.text = formattedInspectorPropertyName; editmodeLabel.image = playmodeIconOff; var attributeTooltip = !string.IsNullOrEmpty(diipAttribute.tooltip) ? diipAttribute.tooltip + "\n\n" : ""; editmodeLabel.tooltip = attributeTooltip + tooltip; } EditorGUI.PropertyField(position, property, editmodeLabel); } }