protected void ShowHeightLayerVariables(HeightLayer _hLayer) { using (new GUILayout.HorizontalScope(baseSkin.FindStyle("LayerToolbar"))) { GUIContent selectedContent; if (_hLayer.ExpandedInEditor) { selectedContent = new GUIContent(baseSkin.FindStyle("OpenCloseSymbolsLight").hover.background); } else { selectedContent = new GUIContent(baseSkin.FindStyle("OpenCloseSymbolsLight").normal.background); } if (GUILayout.Button(selectedContent, baseSkin.FindStyle("SymbolButton"))) { _hLayer.ExpandedInEditor = !_hLayer.ExpandedInEditor; } _hLayer.Name = EditorGUILayout.TextField(_hLayer.Name, baseSkin.textField); EditorGUILayout.PrefixLabel("Preset:", baseSkin.FindStyle("Enum"), baseSkin.FindStyle("EnumLabel")); _hLayer.PlaceholderPreset = (HeightLayer.placeholderPresets)EditorGUILayout.EnumPopup(_hLayer.PlaceholderPreset, baseSkin.FindStyle("Enum")); GUILayout.FlexibleSpace(); } GUIStyle layerStyle; if (_hLayer.ExpandedInEditor) { layerStyle = baseSkin.FindStyle("LayerValues"); } else { layerStyle = baseSkin.FindStyle("LayerClosed"); } using (new GUILayout.HorizontalScope(layerStyle)) { using (new GUILayout.VerticalScope()) { if (_hLayer.ExpandedInEditor) { EditorGUI.indentLevel = 1; FloatPropertyDrawer.Draw(_hLayer.LayerProperties.Frequency, baseSkin, 0.01f, 100); FloatPropertyDrawer.Draw(_hLayer.LayerProperties.Amplitude, baseSkin, 0.1f, 2f); IntPropertyDrawer.Draw(_hLayer.LayerProperties.Octaves, baseSkin, 1, 8); FloatPropertyDrawer.Draw(_hLayer.LayerProperties.Lacunarity, baseSkin, 1, 4); FloatPropertyDrawer.Draw(_hLayer.LayerProperties.Persistance, baseSkin, 0, 1); Vector3PropertyDrawer.Draw(_hLayer.LayerProperties.Offset, baseSkin, -100, 100); using (new GUILayout.HorizontalScope(baseSkin.FindStyle("Property"))) _hLayer.LayerProperties.Opacity = FloatSliderDrawer.Draw(new GUIContent("Opacity"), _hLayer.LayerProperties.Opacity, 0, 1, baseSkin, true, false, 200); EditorGUI.indentLevel = 0; GUILayout.Space(5); } } if (_hLayer.ExpandedInEditor) { using (new GUILayout.VerticalScope()) { using (new GUILayout.VerticalScope(baseSkin.FindStyle("Image"), GUILayout.Width(220))) { if (_hLayer.SavedMap == null) { GenerateHeightTexture(_hLayer); } EditorGUILayout.LabelField("Layer Map", baseSkin.FindStyle("labelCenter")); GUILayout.Space(210); EditorGUI.DrawPreviewTexture(new Rect(EditorGUILayout.GetControlRect().position + new Vector2(6, -200) , new Vector2(200, 200)), _hLayer.SavedMap); } if (ButtonDrawer.Draw(new GUIContent("Regenerate", "Regenerate this Layer's Map. WARNING: This will override the previous map if you are using randomized values."), baseSkin.FindStyle("CenteredButton"))) { GenerateHeightTexture(_hLayer); Debug.Log("Regenerating " + _hLayer.Name); lastLayer = _hLayer; } } } } }
void HandleMatrix3Property( ValueChangedCallback valueChangedCallback, PropertySheet propertySheet, Matrix4x4 matrix3Property, string labelName = "Default") { var vector3PropertyDrawer = new Vector3PropertyDrawer(); vector3PropertyDrawer.preValueChangeCallback = PreValueChangeCallback; vector3PropertyDrawer.postValueChangeCallback = PostValueChangeCallback; propertySheet.Add(vector3PropertyDrawer.CreateGUI( newValue => { Vector3 row1 = MatrixRowFetchCallback(1); Vector3 row2 = MatrixRowFetchCallback(2); valueChangedCallback(new Matrix4x4() { m00 = newValue.x, m01 = newValue.y, m02 = newValue.z, m03 = 0, m10 = row1.x, m11 = row1.y, m12 = row1.z, m13 = 0, m20 = row2.x, m21 = row2.y, m22 = row2.z, m23 = 0, m30 = 0, m31 = 0, m32 = 0, m33 = 0, }); }, matrix3Property.GetRow(0), labelName, out var row0Field )); propertySheet.Add(vector3PropertyDrawer.CreateGUI( newValue => { Vector3 row0 = MatrixRowFetchCallback(0); Vector3 row2 = MatrixRowFetchCallback(2); valueChangedCallback(new Matrix4x4() { m00 = row0.x, m01 = row0.y, m02 = row0.z, m03 = 0, m10 = newValue.x, m11 = newValue.y, m12 = newValue.z, m13 = 0, m20 = row2.x, m21 = row2.y, m22 = row2.z, m23 = 0, m30 = 0, m31 = 0, m32 = 0, m33 = 0, }); }, matrix3Property.GetRow(1), "", out var row1Field )); propertySheet.Add(vector3PropertyDrawer.CreateGUI( newValue => { Vector3 row0 = MatrixRowFetchCallback(0); Vector3 row1 = MatrixRowFetchCallback(1); valueChangedCallback(new Matrix4x4() { m00 = row0.x, m01 = row0.y, m02 = row0.z, m03 = 0, m10 = row1.x, m11 = row1.y, m12 = row1.z, m13 = 0, m20 = newValue.x, m21 = newValue.y, m22 = newValue.z, m23 = 0, m30 = 0, m31 = 0, m32 = 0, m33 = 0, }); }, matrix3Property.GetRow(2), "", out var row2Field )); }