public override void SetProperties(ModifierProperties properties) { _options = (GeometryExtrusionOptions)properties; _options.PropertyHasChanged += UpdateModifier; }
public override void SetProperties(ModifierProperties properties) { _options = (GeometryExtrusionOptions)properties; }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { GeometryExtrusionOptions extrusionOptions = (GeometryExtrusionOptions)EditorHelper.GetTargetObjectOfProperty(property); var extrusionTypeProperty = property.FindPropertyRelative("extrusionType"); var displayNames = extrusionTypeProperty.enumDisplayNames; int count = extrusionTypeProperty.enumDisplayNames.Length; if (!isGUIContentSet) { extrusionTypeContent = new GUIContent[count]; for (int extIdx = 0; extIdx < count; extIdx++) { extrusionTypeContent[extIdx] = new GUIContent { text = displayNames[extIdx], tooltip = EnumExtensions.Description((ExtrusionType)extIdx), }; } isGUIContentSet = true; } var extrusionTypeLabel = new GUIContent { text = "Extrusion Type", tooltip = "Type of geometry extrusion" }; extrusionTypeProperty.enumValueIndex = EditorGUILayout.Popup(extrusionTypeLabel, extrusionTypeProperty.enumValueIndex, extrusionTypeContent); EditorHelper.CheckForModifiedProperty(extrusionTypeProperty, extrusionOptions); var sourceTypeValue = (Unity.Map.ExtrusionType)extrusionTypeProperty.enumValueIndex; var minHeightProperty = property.FindPropertyRelative("minimumHeight"); var maxHeightProperty = property.FindPropertyRelative("maximumHeight"); var extrusionGeometryType = property.FindPropertyRelative("extrusionGeometryType"); var extrusionGeometryGUI = new GUIContent { text = "Geometry Type", tooltip = EnumExtensions.Description((Unity.Map.ExtrusionGeometryType)extrusionGeometryType.enumValueIndex) }; EditorGUI.indentLevel++; switch (sourceTypeValue) { case Unity.Map.ExtrusionType.None: break; case Unity.Map.ExtrusionType.PropertyHeight: EditorGUILayout.PropertyField(extrusionGeometryType, extrusionGeometryGUI); DrawPropertyDropDown(property, position); break; case Unity.Map.ExtrusionType.MinHeight: EditorGUILayout.PropertyField(extrusionGeometryType, extrusionGeometryGUI); DrawPropertyDropDown(property, position); break; case Unity.Map.ExtrusionType.MaxHeight: EditorGUILayout.PropertyField(extrusionGeometryType, extrusionGeometryGUI); DrawPropertyDropDown(property, position); break; case Unity.Map.ExtrusionType.RangeHeight: EditorGUILayout.PropertyField(extrusionGeometryType, extrusionGeometryGUI); DrawPropertyDropDown(property, position); EditorGUILayout.PropertyField(minHeightProperty); EditorGUILayout.PropertyField(maxHeightProperty); if (minHeightProperty.floatValue > maxHeightProperty.floatValue) { EditorGUILayout.HelpBox("Maximum Height less than Minimum Height!", MessageType.Error); } break; case Unity.Map.ExtrusionType.AbsoluteHeight: EditorGUILayout.PropertyField(extrusionGeometryType, extrusionGeometryGUI); EditorGUILayout.PropertyField(maxHeightProperty, new GUIContent { text = "Height" }); break; default: break; } EditorHelper.CheckForModifiedProperty(extrusionGeometryType, extrusionOptions); EditorGUILayout.PropertyField(property.FindPropertyRelative("extrusionScaleFactor"), new GUIContent { text = "Scale Factor" }); EditorHelper.CheckForModifiedProperty(property.FindPropertyRelative("extrusionScaleFactor"), extrusionOptions); EditorGUI.indentLevel--; }