Пример #1
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (!m_initialized)
            {
                LoadSettings();
                m_initialized = true;
            }

            EditorGUI.BeginChangeCheck();
            commonUI.OnInspectorGUI(terrain, editContext);

            m_ShowControls = TerrainToolGUIHelper.DrawHeaderFoldout(Styles.controls, m_ShowControls);
            if (m_ShowControls)
            {
                EditorGUILayout.BeginVertical("GroupBox");
                m_direction  = EditorGUILayout.Slider(Styles.direction, m_direction, -1.0f, 1.0f);
                m_KernelSize = EditorGUILayout.Slider(Styles.kernelSize, m_KernelSize, 0.0f, 10.0f);
                EditorGUILayout.EndVertical();
            }

            if (EditorGUI.EndChangeCheck())
            {
                SaveSetting();
                Save(true);
            }
        }
Пример #2
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (!m_initialized)
            {
                LoadSettings();
                m_initialized = true;
            }
            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            m_ShowBridgeControls = TerrainToolGUIHelper.DrawHeaderFoldout(Styles.controlHeader, m_ShowBridgeControls);

            if (m_ShowBridgeControls)
            {
                //"Controls the width of the bridge over the length of the stroke"
                bridgeToolProperties.widthProfile    = EditorGUILayout.CurveField(Styles.widthProfileContent, bridgeToolProperties.widthProfile);
                bridgeToolProperties.heightProfile   = EditorGUILayout.CurveField(Styles.heightProfileContent, bridgeToolProperties.heightProfile);
                bridgeToolProperties.strengthProfile = EditorGUILayout.CurveField(Styles.strengthProfileContent, bridgeToolProperties.strengthProfile);
                bridgeToolProperties.jitterProfile   = EditorGUILayout.CurveField(Styles.jitterProfileContent, bridgeToolProperties.jitterProfile);
            }

            if (EditorGUI.EndChangeCheck())
            {
                SaveSetting();
                Save(true);
            }
        }
Пример #3
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (!m_initialized)
            {
                LoadSettings();
                m_initialized = true;
            }

            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            m_ShowControls = TerrainToolGUIHelper.DrawHeaderFoldout(Styles.controls, m_ShowControls);
            if (m_ShowControls)
            {
                EditorGUILayout.BeginHorizontal("GroupBox");
                {
                    EditorGUILayout.PrefixLabel(Styles.affect);
                    m_AffectMaterials = TerrainToolGUIHelper.ToggleButton(Styles.alphamap, m_AffectMaterials);
                    m_AffectHeight    = TerrainToolGUIHelper.ToggleButton(Styles.heightmap, m_AffectHeight);
                }
                EditorGUILayout.EndHorizontal();
            }

            if (EditorGUI.EndChangeCheck())
            {
                SaveSetting();
                Save(true);
            }
        }
Пример #4
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (!m_initialized)
            {
                LoadSettings();
                m_initialized = true;
            }

            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            m_ShowControls = TerrainToolGUIHelper.DrawHeaderFoldout(Styles.controls, m_ShowControls);
            if (m_ShowControls)
            {
                EditorGUILayout.BeginVertical("GroupBox");
                {
                    terraceToolProperties.m_FeatureSize         = EditorGUILayout.Slider(Styles.terraceCount, terraceToolProperties.m_FeatureSize, 2.0f, 1000.0f);
                    terraceToolProperties.m_JitterTerraceCount  = EditorGUILayout.Slider(Styles.jitter, terraceToolProperties.m_JitterTerraceCount, 0.0f, 1.0f);
                    terraceToolProperties.m_BevelAmountInterior = EditorGUILayout.Slider(Styles.cornerWeight, terraceToolProperties.m_BevelAmountInterior, 0.0f, 1.0f);
                }
                EditorGUILayout.EndVertical();
            }

            if (EditorGUI.EndChangeCheck())
            {
                SaveSetting();
                Save(true);
            }
        }
Пример #5
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (!m_initialized)
            {
                LoadSettings();
                m_initialized = true;
            }
            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            m_ShowControls = TerrainToolGUIHelper.DrawHeaderFoldout(Styles.controls, m_ShowControls);
            if (m_ShowControls)
            {
                EditorGUILayout.BeginVertical("GroupBox");
                m_MixStrength = EditorGUILayout.Slider(Styles.featureSharpness, m_MixStrength, 0, 1);
                EditorGUILayout.EndVertical();
            }

            if (EditorGUI.EndChangeCheck())
            {
                SaveSetting();
                Save(true);
            }
        }
Пример #6
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            if (EditorGUI.EndChangeCheck())
            {
                Save(true);
            }
        }
Пример #7
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (!m_initialized)
            {
                LoadSettings();
                m_initialized = true;
            }

            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            m_ShowControls = TerrainToolGUIHelper.DrawHeaderFoldout(Styles.controlHeader, m_ShowControls);

            if (m_ShowControls)
            {
                EditorGUILayout.BeginVertical("GroupBox");
                {
                    // draw button-like toggles for choosing which terrain textures to sample
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.PrefixLabel(Styles.cloneSourceContent);

                        cloneToolProperties.m_PaintAlphamap  = TerrainToolGUIHelper.ToggleButton(Styles.cloneTextureContent, cloneToolProperties.m_PaintAlphamap);
                        cloneToolProperties.m_PaintHeightmap = TerrainToolGUIHelper.ToggleButton(Styles.cloneHeightmapContent, cloneToolProperties.m_PaintHeightmap);
                    }
                    EditorGUILayout.EndHorizontal();

                    cloneToolProperties.m_MovementBehavior        = (MovementBehavior)EditorGUILayout.EnumPopup(Styles.cloneBehaviorContent, cloneToolProperties.m_MovementBehavior);
                    cloneToolProperties.m_StampingOffsetFromClone = EditorGUILayout.Slider(Styles.heightOffsetContent, cloneToolProperties.m_StampingOffsetFromClone,
                                                                                           -terrain.terrainData.size.y, terrain.terrainData.size.y);
                }
                EditorGUILayout.EndVertical();
            }

            if (EditorGUI.EndChangeCheck())
            {
                m_isPainting        = false;
                m_HasDoneFirstPaint = false;
                Save(true);
                SaveSetting();
            }
        }
Пример #8
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (!m_initialized)
            {
                LoadSettings();
                m_initialized = true;
            }

            EditorGUI.BeginChangeCheck();
            Styles styles = GetStyles();

            commonUI.OnInspectorGUI(terrain, editContext);

            m_ShowControls = TerrainToolGUIHelper.DrawHeaderFoldout(styles.controls, m_ShowControls);

            if (!m_ShowControls)
            {
                return;
            }

            EditorGUI.BeginChangeCheck();
            {
                EditorGUILayout.BeginVertical("GroupBox");
                {
                    float height = Mathf.Abs(stampToolProperties.m_StampHeight);

                    height = EditorGUILayout.Slider(styles.height, height, 0, terrain.terrainData.size.y);
                    stampToolProperties.stampDown     = EditorGUILayout.Toggle(styles.down, stampToolProperties.stampDown);
                    stampToolProperties.m_StampHeight = height;
                    stampToolProperties.m_MaxBlendAdd = EditorGUILayout.Slider(styles.maxadd, stampToolProperties.m_MaxBlendAdd, 0.0f, 1.0f);
                }
                EditorGUILayout.EndVertical();
            }

            if (EditorGUI.EndChangeCheck())
            {
                SaveSetting();
                Save(true);
            }

            base.OnInspectorGUI(terrain, editContext);
        }
Пример #9
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (m_HardnessNoiseSettings == null)
            {
                m_HardnessNoiseSettings = ScriptableObject.CreateInstance <NoiseSettings>();
                m_HardnessNoiseSettings.Reset();
            }

            Erosion.HydraulicErosionSettings erosionSettings = ((Erosion.HydraulicEroder)m_Eroder).m_ErosionSettings;

            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            m_Eroder.OnInspectorGUI(terrain, editContext);

            if (EditorGUI.EndChangeCheck())
            {
                Save(true);
            }
        }
Пример #10
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            if (!m_initialized)
            {
                LoadSettings();
                m_initialized = true;
            }
            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            s_showToolControls = TerrainToolGUIHelper.DrawHeaderFoldout(Styles.controlHeader, s_showToolControls);

            if (s_showToolControls)
            {
                EditorGUILayout.BeginVertical("GroupBox");
                {
                    GUILayout.BeginHorizontal();
                    {
                        m_HeightWorldSpace = EditorGUILayout.Slider(Styles.height, m_HeightWorldSpace, 0, terrain.terrainData.size.y);
                        if (GUILayout.Button(Styles.flatten, GUILayout.ExpandWidth(false)))
                        {
                            Flatten(terrain);
                        }
                        if (GUILayout.Button(Styles.flattenAll, GUILayout.ExpandWidth(false)))
                        {
                            FlattenAll(terrain);
                        }
                    }
                    GUILayout.EndHorizontal();
                }
                EditorGUILayout.EndVertical();
            }

            if (EditorGUI.EndChangeCheck())
            {
                SaveSetting();
                Save(true);
            }
        }
Пример #11
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            Init();

            // brush GUI
            brushUI.OnInspectorGUI(terrain, editContext);

            EditorGUI.BeginChangeCheck();
            {
                toolSettings.showToolSettings = TerrainToolGUIHelper.DrawHeaderFoldout(Styles.settings, toolSettings.showToolSettings);
                if (toolSettings.showToolSettings)
                {
                    toolSettings.blendAmount = EditorGUILayout.Slider(Styles.blendAmount, toolSettings.blendAmount, 0, 1);

                    if (activeMesh == null)
                    {
                        EditorGUILayout.HelpBox(Styles.nullMeshString, MessageType.Warning);
                    }

                    EditorGUILayout.BeginHorizontal();
                    {
                        activeMesh = EditorGUILayout.ObjectField(Styles.meshContent, activeMesh as Object, typeof(Mesh), false) as Mesh;

                        if (GUILayout.Button(Styles.resetTransformContent, GUILayout.ExpandWidth(false)))
                        {
                            toolSettings.rotation    = Quaternion.identity;
                            toolSettings.stampHeight = 0;
                            toolSettings.scale       = Vector3.one;
                        }
                    }
                    EditorGUILayout.EndHorizontal();

                    toolSettings.stampHeight = EditorGUILayout.FloatField(Styles.stampHeightContent, toolSettings.stampHeight);

                    toolSettings.scale   = EditorGUILayout.Vector3Field(Styles.stampScaleContent, toolSettings.scale);
                    toolSettings.scale.x = Mathf.Max(toolSettings.scale.x, 0.02f);
                    toolSettings.scale.y = Mathf.Max(toolSettings.scale.y, 0.02f);
                    toolSettings.scale.z = Mathf.Max(toolSettings.scale.z, 0.02f);

                    toolSettings.rotation = Quaternion.Euler(EditorGUILayout.Vector3Field(Styles.stampRotationContent, toolSettings.rotation.eulerAngles));
                }
            }

            // EditorGUILayout.BeginVertical("GroupBox");
            // {
            //     GUILayout.Label( "World Bounds:" );
            //     GUILayout.Label( "Center: " + m_worldBounds.center );
            //     GUILayout.Label( "Size: " + m_worldBounds.size );
            //     GUILayout.Label( "Max: " + m_worldBounds.max );
            //     GUILayout.Label( "Min: " + m_worldBounds.min );
            // }
            // EditorGUILayout.EndVertical();

            // EditorGUILayout.BeginVertical("GroupBox");
            // {
            //     GUILayout.Label( "Ortho Camera:" );
            //     GUILayout.Label( "LookAt: " + lookAtZ );
            //     GUILayout.Label( "Near: " + nearPlane );
            //     GUILayout.Label( "Far: " + farPlane );
            //     GUILayout.Label( "Right: " + orthoRight );
            //     GUILayout.Label( "Left: " + orthoLeft );
            // }
            // EditorGUILayout.EndVertical();

            // EditorGUILayout.BeginVertical("GroupBox");
            // {
            //     GUILayout.Label( "Handle Info:" );
            //     GUILayout.Label( "Handle Pos: " + m_baseHandlePos );
            //     GUILayout.Label( "Delta height: " + m_handleHeightOffsetWS );
            //     GUILayout.Label( "Stamp height: " + toolSettings.stampHeight );
            // }
            // EditorGUILayout.EndVertical();

            // debugOrtho = TerrainToolGUIHelper.DrawHeaderFoldout( new GUIContent("Debug"), debugOrtho );
            // if( debugOrtho )
            // {
            //     orthoLeft = EditorGUILayout.FloatField( "Left", orthoLeft );
            //     orthoRight = EditorGUILayout.FloatField( "Right", orthoRight );
            //     orthoTop = EditorGUILayout.FloatField( "Top", orthoTop );
            //     orthoBottom = EditorGUILayout.FloatField( "Bottom", orthoBottom );
            //     nearPlane = EditorGUILayout.FloatField( "Near", nearPlane );
            //     farPlane = EditorGUILayout.FloatField( "Far", farPlane );
            //     lookAtZ = EditorGUILayout.FloatField( "LookAtZ", lookAtZ );
            // }

            if (EditorGUI.EndChangeCheck())
            {
                SaveSettings();
                Save(true);
            }
        }
Пример #12
0
        public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
        {
            EditorGUI.BeginChangeCheck();

            commonUI.OnInspectorGUI(terrain, editContext);

            m_ShowControls = TerrainToolGUIHelper.DrawHeaderFoldout(Erosion.Styles.m_ThermalErosionControls, m_ShowControls);
            if (m_ShowControls)
            {
                EditorGUILayout.BeginVertical("GroupBox");

                /*m_AffectHeight = EditorGUILayout.Toggle(Erosion.Styles.m_AffectHeight, m_AffectHeight);
                 *
                 * if (m_AffectHeight) {
                 *  m_AddHeightAmt = EditorGUILayout.IntSlider(Erosion.Styles.m_AddHeight, m_AddHeightAmt, 0, 100);
                 * }*/

                string[] matNames =
                {
                    "Custom",
                    "Dry Ash",       // 40
                    "Chalk",         // 45
                    "Dry Clay",      // 25 - 40
                    "Wet Clay",      // 15
                    "Soil",          // 30-45
                    "Granite Scree", // 35 - 40
                    "Gravel",        //45 - 45
                    "Dry Sand",
                    "Wet Sand",
                    "Quick Sand",
                    "Snow"
                };

                float[,] tauValues = new float[, ] {
                    { -1.0f, -1.0f },  //custom
                    { 38.0f, 42.0f },  //dry ash
                    { 45.0f, 45.0f },  //chalk
                    { 25.0f, 40.0f },  //dry clay (25 - 40)
                    { 15.0f, 15.0f },  //wet clay
                    { 30.0f, 45.0f },  //soil (30-45)
                    { 35.0f, 40.0f },  //crushed granite (35 - 40)
                    { 45.0f, 45.0f },  //gravel
                    { 32.0f, 36.0f },  //dry sand
                    { 45.0f, 45.0f },  //wet sand
                    { 15.0f, 30.0f },  //quicksand (15-30)
                    { 38.0f, 38.0f }   //snow
                };

                EditorGUI.BeginChangeCheck();
                m_Eroder.m_MatPreset = EditorGUILayout.Popup(Erosion.Styles.m_MatPreset, m_Eroder.m_MatPreset, matNames);
                if (EditorGUI.EndChangeCheck() && m_Eroder.m_MatPreset != 0)
                {
                    m_Eroder.m_AngleOfRepose.x = tauValues[m_Eroder.m_MatPreset, 0];
                    m_Eroder.m_AngleOfRepose.y = tauValues[m_Eroder.m_MatPreset, 1];
                }

                EditorGUI.indentLevel++;
                m_ShowAdvancedUI = EditorGUILayout.Foldout(m_ShowAdvancedUI, "Advanced");
                if (m_ShowAdvancedUI)
                {
                    m_Eroder.m_ThermalIterations = EditorGUILayout.IntSlider(Erosion.Styles.m_NumIterations, m_Eroder.m_ThermalIterations, 1, 1000);
                    m_Eroder.m_dt = EditorGUILayout.Slider(Erosion.Styles.m_TimeDelta, m_Eroder.m_dt, 0.00001f, 0.05f);

                    EditorGUI.BeginChangeCheck();
                    EditorGUILayout.MinMaxSlider(Erosion.Styles.m_AngleOfRepose, ref m_Eroder.m_AngleOfRepose.x, ref m_Eroder.m_AngleOfRepose.y, 0.0f, 90.0f);
                    if (EditorGUI.EndChangeCheck())
                    {
                        m_Eroder.m_MatPreset = 0; //we changed the angle of repose, so now we should switch the UI to "Custom"
                    }


                    m_Eroder.m_ReposeJitter = EditorGUILayout.IntSlider(Erosion.Styles.m_AngleOfReposeJitter, (int)m_Eroder.m_ReposeJitter, 0, 100);
                    //m_ReposeNoiseScale = EditorGUILayout.Slider("Material Variation Scale", m_ReposeNoiseScale, 0.0001f, 1.0f);
                    //m_ReposeNoiseAmount = EditorGUILayout.Slider("Material Variation Amount", m_ReposeNoiseAmount, 0.0f, 1.0f);
                }

                /*
                 * m_ShowMaterialUI = EditorGUILayout.Foldout(m_ShowMaterialUI, "Material");
                 * if (m_ShowMaterialUI) {
                 *  m_AffectMaterial = EditorGUILayout.Toggle(Erosion.Styles.m_AffectMaterial, m_AffectMaterial);
                 *  if (m_AffectMaterial) {
                 *      m_MaterialPaintStrength = EditorGUILayout.IntSlider(Erosion.Styles.m_MaterialPaintStrength, m_MaterialPaintStrength, -100, 100);
                 *
                 *      EditorGUI.BeginChangeCheck();
                 *
                 *      int layerIndex = TerrainPaintUtility.FindTerrainLayerIndex(terrain, m_SelectedTerrainLayer);
                 *      layerIndex = TerrainLayerUtility.ShowTerrainLayersSelectionHelper(terrain, layerIndex);
                 *      if (EditorGUI.EndChangeCheck()) {
                 *          if (layerIndex != -1)
                 *              m_SelectedTerrainLayer = terrain.terrainData.terrainLayers[layerIndex];
                 *
                 *          Save(true);
                 *      }
                 *  }
                 * }
                 */
                EditorGUILayout.EndVertical();
            }

            if (EditorGUI.EndChangeCheck())
            {
                Save(true);
            }
        }
Пример #13
0
 public override void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext)
 {
     commonUI.OnInspectorGUI(terrain, editContext);
 }