Guest User

Untitled

a guest
Jun 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. class TerrainStitcher extends EditorWindow {
  2. public var terrain1: Terrain = null;
  3. public var terrain2: Terrain = null;
  4. public var options: String[] = ["X", "Z"];
  5. public var index: int = 0;
  6.  
  7. @MenuItem ("Tools/Terrain stitcher")
  8. static function ShowWindow () {
  9. EditorWindow.GetWindow (TerrainStitcher);
  10. }
  11.  
  12.  
  13. function OnGUI () {
  14. index = EditorGUILayout.Popup("Axis:", index, options);
  15. terrain1 = EditorGUILayout.ObjectField("Terrain 1:", terrain1, Terrain, true);
  16. terrain2 = EditorGUILayout.ObjectField("Terrain 2:", terrain2, Terrain, true);
  17. if (GUILayout.Button("Stitch"))
  18. Stitch ();
  19. }
  20.  
  21. function Stitch () {
  22. if (!(terrain1 && terrain2)) {
  23. Debug.LogError("No terrain selected.");
  24. return;
  25. }
  26. var data1 : TerrainData = terrain1.terrainData;
  27. var data2 : TerrainData = terrain2.terrainData;
  28.  
  29. if (!(data1.heightmapWidth == data2.heightmapWidth)) {
  30. Debug.LogError("Width of the terrains must be equal.");
  31. return;
  32. }
  33.  
  34.  
  35. var a : float[,];
  36. var b : float[,];
  37. var h : int = data1.heightmapWidth;
  38. var i : int = 0;
  39. a = data1.GetHeights(0,0,h,h);
  40. b = data2.GetHeights(0,0,h,h);
  41. h-=1;
  42.  
  43. if (index==0) //X axis
  44. for(i = 0; i < h; i++) {
  45. a[i,h]=(a[i,h]+b[i,0])/2;
  46. b[i,0]=a[i,h];
  47. }
  48. else //Z axis
  49. for(i = 0; i <= h; i++) {
  50. a[h,i]=(a[h,i]+b[0,i])/2;
  51. b[0,i]=a[h,i];
  52. }
  53.  
  54. data1.SetHeights(0,0,a);
  55. data2.SetHeights(0,0,b);
  56. }
  57. }
Add Comment
Please, Sign In to add comment