//Кнопка: Загрузка с файла настроек private void LoadOption(bool key) { _firstload = false; if (key) { //Удалим все splatmap в окне перед загрузкой в это окно while (_splats.Count > 0) { _splats.RemoveAt(_splats.Count - 1); } while (_normals.Count > 0) { _normals.RemoveAt(_normals.Count - 1); } //Удалим все _trees в окне перед загрузкой в это окно while (_trees.Count > 0) { _trees.RemoveAt(_trees.Count - 1); } //Удалим все _grass в окне перед загрузкой в это окно while (_grass.Count > 0) { _grass.RemoveAt(_grass.Count - 1); } // Загрузка var textReader = new StreamReader(@"option.ini"); while (textReader.Peek() != -1) { String line = textReader.ReadLine(); //Line = textReader.ReadToEnd(); switch (line) { case "<SplatMapInfo2>": SplatMapInfo2 sp = new SplatMapInfo2(); sp.Texture = (Texture2D) AssetDatabase.LoadAssetAtPath(textReader.ReadLine(), typeof (Texture2D)); sp.Texture = (Texture2D) EditorGUILayout.ObjectField(sp.Texture, typeof (Texture2D), false); sp.TileSizeX = Convert.ToInt32(textReader.ReadLine()); sp.TileSizeY = Convert.ToInt32(textReader.ReadLine()); sp.TileOffsetX = Convert.ToInt32(textReader.ReadLine()); sp.TileOffsetY = Convert.ToInt32(textReader.ReadLine()); sp.Filemask = textReader.ReadLine(); sp.FoldOutStat = true; _splats.Add(sp); _splatFoldout = true; break; case "<NormalMapInfo2>": NormalMapInfo2 nm = new NormalMapInfo2(); nm.Texture = (Texture2D) AssetDatabase.LoadAssetAtPath(textReader.ReadLine(), typeof (Texture2D)); nm.Texture = (Texture2D) EditorGUILayout.ObjectField(nm.Texture, typeof (Texture2D), false); nm.TileSizeX = Convert.ToInt32(textReader.ReadLine()); nm.TileSizeY = Convert.ToInt32(textReader.ReadLine()); nm.TileOffsetX = Convert.ToInt32(textReader.ReadLine()); nm.TileOffsetY = Convert.ToInt32(textReader.ReadLine()); nm.Filemask = textReader.ReadLine(); nm.FoldOutStat = true; _normals.Add(nm); _normalFoldout = true; break; case "<TreeMapInfo2>": TreeMapInfo2 tm = new TreeMapInfo2(); tm.Prefab = (GameObject)AssetDatabase.LoadAssetAtPath(textReader.ReadLine(), typeof(GameObject)); tm.Prefab = (GameObject)EditorGUILayout.ObjectField(tm.Prefab, typeof(GameObject), false); tm.BendFactor = Convert.ToInt32(textReader.ReadLine()); tm.ColorVariation = float.Parse(textReader.ReadLine()); tm.HeightScale = Convert.ToInt32(textReader.ReadLine()); tm.WidthScale = Convert.ToInt32(textReader.ReadLine()); tm.HeightVariation = Convert.ToInt32(textReader.ReadLine()); tm.WidthVariation = Convert.ToInt32(textReader.ReadLine()); tm.MaxDensity = float.Parse(textReader.ReadLine()); tm.Filemask = textReader.ReadLine(); tm.FoldOutStat = true; _trees.Add(tm); _treeFoldout = true; break; case "<GrassInfo2>": GrassInfo2 gi = new GrassInfo2(); gi.Texture = (Texture2D) AssetDatabase.LoadAssetAtPath(textReader.ReadLine(), typeof (Texture2D)); gi.Texture = (Texture2D) EditorGUILayout.ObjectField(gi.Texture, typeof (Texture2D), false); gi.MinWidth = float.Parse(textReader.ReadLine()); gi.MaxWidth = float.Parse(textReader.ReadLine()); gi.MinHeight = float.Parse(textReader.ReadLine()); gi.MaxHeight = float.Parse(textReader.ReadLine()); gi.NoiseSpread = float.Parse(textReader.ReadLine()); gi.GrassDensity = float.Parse(textReader.ReadLine()); // читаем цвет gi.HealthyColor string templine3 = textReader.ReadLine(); string[] parts3 = templine3.Split(","[0]); float xx = float.Parse(parts3[0]); float yy = float.Parse(parts3[1]); float zz = float.Parse(parts3[2]); gi.HealthyColor = new Color(xx, yy, zz); // читаем цвет DryColor string templine4 = textReader.ReadLine(); string[] parts4 = templine4.Split(","[0]); float xx1 = float.Parse(parts4[0]); float yy1 = float.Parse(parts4[1]); float zz1 = float.Parse(parts4[2]); gi.DryColor = new Color(xx1, yy1, zz1); gi.RenderMode = DetailRenderMode.GrassBillboard; // Этот параметр просто запишем т.к. мы его в файл не писали gi.Billboard = Convert.ToBoolean(textReader.ReadLine()); gi.Filemask = textReader.ReadLine(); gi.FoldOutStat = true; _grass.Add(gi); _grassFoldout = true; break; case "<TerrainOption>": _imagesPath = textReader.ReadLine(); // подгрузим путь до файлов _heightmapMask = textReader.ReadLine(); // подгрузим имя маски _terrainMask = textReader.ReadLine(); // подгрузим имя маски _depthIndex = Convert.ToInt32(textReader.ReadLine()); // подгрузим разрядность террайна _byteorderIndex = Convert.ToInt32(textReader.ReadLine()); // подгрузим еще какуюто хрень // читаем размер террайна string templine = textReader.ReadLine(); string[] parts = templine.Split(","[0]); float x = float.Parse(parts[0]); float y = float.Parse(parts[1]); _heightmapsize = new Vector3(x, y); // читаем цвет string templine1 = textReader.ReadLine(); string[] parts1 = templine1.Split(","[0]); float x1 = float.Parse(parts1[0]); float y1 = float.Parse(parts1[1]); float z1 = float.Parse(parts1[2]); _terrainsize = new Vector3(x1, y1, z1); _heightmaperror = Convert.ToInt32(textReader.ReadLine()); // Точность карты _basemapdistance = Convert.ToInt32(textReader.ReadLine()); // Дальность отрисовки карты _castShadows = Convert.ToBoolean(textReader.ReadLine()); // Показывать тень _mat = (Material)AssetDatabase.LoadAssetAtPath(textReader.ReadLine(), typeof(Material)); _mat = (Material)EditorGUILayout.ObjectField(_mat, typeof(Material), false); _detailObjectDistance = float.Parse(textReader.ReadLine()); // На каком растоянии Detail объекты будут отображаться на расстоянии. _detailObjectDensity = float.Parse(textReader.ReadLine()); _treeDistance = float.Parse(textReader.ReadLine()); _treeBillboardDistance = float.Parse(textReader.ReadLine()); _treeCrossFadeLength = float.Parse(textReader.ReadLine()); _treeMaximumFullLodCount = Convert.ToInt32(textReader.ReadLine()); _windspeed = float.Parse(textReader.ReadLine()); // скорость ветра _windsize = float.Parse(textReader.ReadLine()); // размер ветра _bendfactor = float.Parse(textReader.ReadLine()); // тоже ветра // читаем цвет string templine2 = textReader.ReadLine(); string[] parts2 = templine2.Split(","[0]); float x2 = float.Parse(parts2[0]); float y2 = float.Parse(parts2[1]); float z2 = float.Parse(parts2[2]); _grasstint = new Color(x2, y2, z2); break; } } textReader.Close(); //EditorGUILayout.EndHorizontal(); } }
private void AddNewGrassmap() { GrassInfo2 gi = new GrassInfo2(); gi.Texture = new Texture2D(1, 1); gi.Filemask = "grassmap_x{0}_y{1}"; gi.MinWidth = 1; gi.MaxWidth = 2; gi.MinHeight = 1; gi.MaxHeight = 2; gi.NoiseSpread = 0.5f; gi.Billboard = true; gi.RenderMode = DetailRenderMode.GrassBillboard; gi.DryColor = new Color(0.698f, 0.6f, 0.5f); gi.HealthyColor = new Color(0.2627f, 0.9764f, 0.1647f); gi.FoldOutStat = false; gi.GrassDensity = 1; _grass.Add(gi); }