Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // add following fields to 'public class AddTreesStruct'
- public float height = -1.0f;
- public float width = -1.0f;
- public Color color = new Color(1, 1, 1, 0);
- // copy to the end of 'public override void OnInspectorGUI()' in AltTrees_Editor.cs
- if (GUILayout.Button("Clear"))
- {
- List<AltTreesPatch> allPatches = new List<AltTreesPatch>(obj.altTreesManagerData.patches);
- foreach (var patch in allPatches)
- {
- removePatch(patch);
- }
- }
- if (GUILayout.Button("Convert terrains"))
- {
- ConvertTerrains();
- }
- // implementation, copy anywhere in AltTrees_Editor.cs
- void ConvertTerrains()
- {
- List<GameObject> prefabs = new List<GameObject>();
- for (int i = 0; i < Terrain.activeTerrains.Length; i++)
- {
- var terrainData = Terrain.activeTerrains[i].terrainData;
- foreach(var t in terrainData.treePrototypes)
- {
- prefabs.Add(t.prefab);
- }
- }
- SpeedTreeImporter[] speedTreeImporters = new SpeedTreeImporter[prefabs.Count];
- for (int i = 0; i < prefabs.Count; i++)
- {
- string path = AssetDatabase.GetAssetPath(prefabs[i]);
- var importer = AssetImporter.GetAtPath(path);
- if (importer is SpeedTreeImporter)
- {
- speedTreeImporters[i] = importer as SpeedTreeImporter;
- }
- }
- AltTree[] trees = new AltTree[prefabs.Count];
- for (int i = 0; i < prefabs.Count; i++)
- {
- AltTree treeTemp2 = null;
- treeTemp2 = dataLinks.getAltTree(prefabs[i]);
- if (treeTemp2 == null)
- {
- ImportTreeWindow.ConvertTree(prefabs[i], this, null, false, false);
- return;
- }
- trees[i] = dataLinks.getAltTree(prefabs[i]);
- }
- List<AltTreesPatch> allPatches = new List<AltTreesPatch>(obj.altTreesManagerData.patches);
- foreach(var patch in allPatches)
- {
- removePatch(patch);
- }
- Dictionary<AltTreesPatch, List<AddTreesStruct>> tempListPatches = new Dictionary<AltTreesPatch, List<AddTreesStruct>>();
- for (int i = 0; i < Terrain.activeTerrains.Length; i++)
- {
- var terrainData = Terrain.activeTerrains[i].terrainData;
- for (int t = 0; t < terrainData.treeInstances.Length; t++)
- {
- var tree = terrainData.treeInstances[t];
- Vector3 posTemp = Vector3.Scale(tree.position, terrainData.size) + Terrain.activeTerrains[i].GetPosition();
- var atpTree = trees[tree.prototypeIndex];
- var atp = new AddTreesStruct(posTemp, atpTree);
- atp.width = tree.widthScale;
- atp.height = tree.heightScale;
- if (speedTreeImporters[tree.prototypeIndex] != null)
- {
- atp.color = speedTreeImporters[tree.prototypeIndex].hueVariation;
- }
- var patch = getPatch(posTemp);
- List<AddTreesStruct> addTo = null;
- if (tempListPatches.ContainsKey(patch))
- {
- addTo = tempListPatches[patch];
- }
- else
- {
- addTo = new List<AddTreesStruct>();
- tempListPatches.Add(patch, addTo);
- }
- patch.checkTreePrototype(atpTree.id, atpTree);
- addTo.Add(atp);
- }
- terrainData.treeInstances = new TreeInstance[0];
- terrainData.RefreshPrototypes();
- Terrain.activeTerrains[i].Flush();
- }
- foreach (AltTreesPatch key in tempListPatches.Keys)
- {
- key.addTrees(tempListPatches[key].ToArray(), true, false, 2.0f, 1.0f, true, false, 1.0f, 1.0f, new Color32(0, 0, 0, 0), new Color32(0, 0, 0, 0), false, false);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement