public void OnEnable() { TileableTerrainMaker targetScript = (TileableTerrainMaker)target; GameObject gO = targetScript.gameObject; baseTerrain = gO.GetComponent <Terrain>(); if (baseTerrain == null) { EditorUtility.DisplayDialog("Error", "This script only works with terrains!", "OK"); DestroyImmediate(targetScript); } else { effectedRegionWidth = serializedObject.FindProperty("effectedRegionWidth"); columns = serializedObject.FindProperty("columns"); rows = serializedObject.FindProperty("rows"); terrains = serializedObject.FindProperty("terrains"); showFoldout = serializedObject.FindProperty("showFoldout"); onlyTileInner = serializedObject.FindProperty("onlyTileInner"); onlyTileOuter = serializedObject.FindProperty("onlyTileOuter"); emptyLocations = serializedObject.FindProperty("emptyLocations"); smoothEdges = serializedObject.FindProperty("smoothEdges"); targetScript.terrains[0] = baseTerrain; maxWidth = baseTerrain.terrainData.heightmapResolution / 2; } }
private void RestoreAlphaMaps() { TileableTerrainMaker targetScript = (TileableTerrainMaker)serializedObject.targetObject; if (targetScript.backupAlphaMap == null) { EditorUtility.DisplayDialog("Error", "No backup alphamaps were found.", "OK"); } else { targetScript.backupAlphaMap.RestoreAlphaMaps(); } targetScript.backupAlphaMap = null; }
void MakeAlphaMapTileable() { PortionToTile portionToTile = DeterminePortionToTile(onlyTileInner.boolValue, onlyTileOuter.boolValue); Terrain[,] terrains2D = GetTerrainsFromTerrainsProperty(); TerrainErrorChecker errorChecker = new TerrainErrorChecker(terrains2D, portionToTile, emptyLocations.boolValue); if (!errorChecker.ProceedWithAlphamapTiling()) { return; } TerrainData[,] data = EditorTerrainTools.Get2DTerrainDataArrayFrom2DTerrainArray(terrains2D); //Can only occur when the alpha maps are of equal size/resolution, so don't worry about error checking TileableTerrainMaker targetScript = (TileableTerrainMaker)serializedObject.targetObject; targetScript.backupAlphaMap = new AlphamapBackupController(data); AlphamapTiler alphaTiler = new AlphamapTiler(data, effectedRegionWidth.intValue); alphaTiler.TileAlphamaps(portionToTile); }