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;
                        }
                    }
                }
            }
        }
Example #2
0
        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
                                  ));
        }