Example #1
0
        /// <summary>
        /// Used to pass in the script to the selector so that it
        /// can return the LBGrassConfig item selected.
        /// </summary>
        /// <param name="lbWindow"></param>
        public void Initialize(LandscapeBuilderWindow lbWindow, List <LBGrassConfig> lbGrassConfigList)
        {
            callingLBWindow = lbWindow;
            if (lbGrassSetup == null)
            {
                lbGrassSetup = new LBGrassSetup();
            }

            if (lbGrassSetup != null)
            {
                if (lbGrassSetup.lbGrassConfigList == null)
                {
                    lbGrassSetup.lbGrassConfigList = new List <LBGrassConfig>(lbGrassConfigList);
                }

                if (lbGrassSetup.lbGrassConfigList != null)
                {
                    isStartedLoading = true;
                    isLoading        = true;

                    if (lbGrassSetup.lbGrassConfigList != null)
                    {
                        int grassConfigInt  = 0;
                        int numGrassConfigs = lbGrassSetup.lbGrassConfigList.Count;

                        // Get a list of the Texture2D assets
                        // This could be quite memory hungry...
                        foreach (LBGrassConfig lbGrassConfig in lbGrassSetup.lbGrassConfigList)
                        {
                            EditorUtility.DisplayProgressBar("Loading grasses", "Please Wait", (grassConfigInt++) / numGrassConfigs);
                            lbGrassConfig.texture2D            = (Texture2D)AssetDatabase.LoadAssetAtPath(lbGrassConfig.grassTexturePath, typeof(Texture2D));
                            lbGrassConfig.texture2DAlternative = (Texture2D)AssetDatabase.LoadAssetAtPath(lbGrassConfig.grassTextureAlternativePath, typeof(Texture2D));
                        }

                        // Sort the list by grass texture name
                        lbGrassSetup.lbGrassConfigList.Sort(delegate(LBGrassConfig grass1, LBGrassConfig grass2) { return(grass1.grassTextureName.CompareTo(grass2.grassTextureName)); });
                        lbGrassSetup.PopulateSourceList();
                        EditorUtility.ClearProgressBar();
                        isLoading = false;
                    }
                }
            }
        }
Example #2
0
        public override void OnInspectorGUI()
        {
            // If the base command is called, all public fields not hidden, will be displayed
            //base.OnInspectorGUI();

            EditorGUIUtility.labelWidth = 150f;

            if (labelFieldRichText == null)
            {
                labelFieldRichText          = new GUIStyle("Label");
                labelFieldRichText.richText = true;
            }

            EditorGUILayout.BeginVertical(EditorStyles.helpBox);

            // Read in all the properties
            serializedObject.Update();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Landscape Name</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            EditorGUILayout.PropertyField(landscapeNameProp, GUIContent.none);
            EditorGUILayout.EndHorizontal();

            // This is the installed version of LB when the template was created
            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Landscape Version</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + lastUpdatedVersionProp.stringValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            // This is the installed version of LB when the template was created
            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>LB Version</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + lbVersionProp.stringValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            // This is the installed version of Unity when the template was created
            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Unity Version</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + templateUnityVersionProp.stringValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Landscape Size</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + sizeProp.vector2Value + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Start Position</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">X: " + startProp.vector3Value.x + " Y: " + startProp.vector3Value.y + " Z: " + startProp.vector3Value.z + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Heightmap Resolution</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + heightmapResolutionProp.intValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Terrain Width</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + terrainWidthProp.floatValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Terrain Height</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + terrainHeightProp.floatValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Alphamap Resolution</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + alphaMapResolutionProp.intValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Terrain Material Type</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            EditorGUILayout.PropertyField(terrainMaterialTypeProp, GUIContent.none);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Legacy Noise Offset</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + useLegacyNoiseOffsetProp.boolValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            labelText = "<color=" + txtColourName + "><b>GPU Acceleration</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>  Topography</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + useGPUTopographyProp.boolValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>  Texturing</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + useGPUTexturingProp.boolValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>  Grass</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + useGPUGrassProp.boolValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>  Path</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            labelText = "<color=" + txtColourName + ">" + useGPUPathProp.boolValue + "</color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Populate Landscape</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            EditorGUILayout.PropertyField(isPopulateLandscapeProp, new GUIContent(""), GUILayout.Width(30));
            EditorGUILayout.EndHorizontal();

            if (GUILayout.Button("Create New unpopulated Landscape from Template"))
            {
                if (lbTemplate == null)
                {
                    Debug.LogWarning("LBTemplateEditor - create landscape - template not defined. Please Report");
                }
                else if (string.IsNullOrEmpty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene().name))
                {
                    EditorUtility.DisplayDialog("Generate Landscape", "Please save the scene before adding a landscape.", "Got it!");
                }
                else
                {
                    LBLandscape lbLandscape = lbTemplate.CreateLandscapeFromTemplate(lbTemplate.landscapeName);
                    UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
                    if (lbLandscape != null)
                    {
                        lbTemplate.ApplyTemplateToLandscape(lbLandscape, false, true, null, true);
                        if (isPopulateLandscapeProp.boolValue)
                        {
                            lbLandscape.ApplyTopography(false, true);
                            lbLandscape.ApplyTextures(false, true);
                            lbLandscape.ApplyTrees(false, true);
                            lbLandscape.ApplyGrass(false, true);
                            lbLandscape.ApplyGroups(false, true);
                            lbLandscape.ApplyMeshes(false, true);
                        }

                        if (lbTemplate.isLBLightingIncluded)
                        {
                            LBLighting lbLighting = GameObject.FindObjectOfType <LBLighting>();
                            if (lbLighting == null)
                            {
                                // If LBLighting isn't already in the scene, add it.
                                lbLighting = LBLighting.AddLightingToScene(true);
                            }

                            if (lbLighting != null)
                            {
                                // Restore the lighting settings from the template
                                lbTemplate.ApplyLBLightingSettings(lbLandscape, ref lbLighting, Camera.main, true);
                            }
                        }

                        LandscapeBuilderWindow.SetLandscape(lbLandscape, true);
                        // Prevent errors in editor for U2017
                        //EditorGUILayout.EndVertical();
                        //return;
                    }
                }
            }

            EditorGUILayout.BeginHorizontal();
            labelText = "<color=" + txtColourName + "><b>Debug Mode</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText, GUILayout.Width(EditorGUIUtility.labelWidth));
            EditorGUILayout.PropertyField(debugModeProp, new GUIContent(""), GUILayout.Width(30));
            labelText = "<color=" + txtColourName + "><b>INTERNAL USE ONLY</b></color>";
            EditorGUILayout.LabelField(labelText, labelFieldRichText);
            EditorGUILayout.EndHorizontal();

            serializedObject.ApplyModifiedProperties();

            if (debugModeProp.boolValue)
            {
                // Display unhidden public variables in LBTemplate.cs
                DrawDefaultInspector();
            }

            EditorGUILayout.EndVertical();
        }