/// <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; } } } }
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(); }