public static GStylizedTerrain CreateTerrainFromSource(GTerrainData srcData) { GEditorSettings.WizardToolsSettings settings = GEditorSettings.Instance.wizardTools; GameObject g = new GameObject("Low Poly Terrain"); g.transform.localPosition = Vector3.zero; g.transform.localRotation = Quaternion.identity; g.transform.localScale = Vector3.one; GTerrainData terrainData = GTerrainData.CreateInstance <GTerrainData>(); terrainData.Reset(); #if UNITY_EDITOR string assetName = "TerrainData_" + terrainData.Id; GUtilities.EnsureDirectoryExists(settings.dataDirectory); AssetDatabase.CreateAsset(terrainData, Path.Combine(settings.dataDirectory, assetName + ".asset")); #endif srcData.CopyTo(terrainData); Material mat = null; if (srcData != null && srcData.Shading.CustomMaterial != null) { mat = UnityEngine.Object.Instantiate(srcData.Shading.CustomMaterial); } if (mat != null) { string matName = "TerrainMaterial_" + terrainData.Id; mat.name = matName; #if UNITY_EDITOR GUtilities.EnsureDirectoryExists(settings.dataDirectory); AssetDatabase.CreateAsset(mat, Path.Combine(settings.dataDirectory, matName + ".mat")); #endif terrainData.Shading.CustomMaterial = mat; } GStylizedTerrain terrain = g.AddComponent <GStylizedTerrain>(); terrain.GroupId = 0; terrain.TerrainData = terrainData; #if UNITY_EDITOR Undo.RegisterCreatedObjectUndo(g, "Creating Low Poly Terrain"); #endif GameObject colliderGO = new GameObject("Tree Collider"); colliderGO.transform.parent = terrain.transform; colliderGO.transform.localPosition = Vector3.zero; colliderGO.transform.localRotation = Quaternion.identity; colliderGO.transform.localScale = Vector3.one; GTreeCollider collider = colliderGO.AddComponent <GTreeCollider>(); collider.Terrain = terrain; #if UNITY_EDITOR Selection.activeGameObject = g; #endif return(terrain); }
private GStylizedTerrain CreateTerrain() { GameObject g = new GameObject("Stylized Terrain"); g.transform.localPosition = Vector3.zero; g.transform.localRotation = Quaternion.identity; g.transform.localScale = Vector3.one; GTerrainData terrainData = GTerrainData.CreateInstance <GTerrainData>(); terrainData.Reset(); #if UNITY_EDITOR string assetName = "TerrainData_" + terrainData.Id; AssetDatabase.CreateAsset(terrainData, string.Format("{0}.asset", Path.Combine(DataDirectory, assetName))); #endif Material mat = GGriffinSettings.Instance.WizardSettings.GetClonedMaterial(GLightingModel.PBR, GTexturingModel.Splat); if (mat == null && GGriffinSettings.Instance.TerrainDataDefault.Shading.CustomMaterial != null) { mat = Object.Instantiate(GGriffinSettings.Instance.TerrainDataDefault.Shading.CustomMaterial); } terrainData.Shading.CustomMaterial = mat; #if UNITY_EDITOR if (mat != null) { string matName = "TerrainMaterial_" + terrainData.Id; mat.name = matName; AssetDatabase.CreateAsset(mat, string.Format("{0}.mat", Path.Combine(DataDirectory, matName))); } #endif GStylizedTerrain terrain = g.AddComponent <GStylizedTerrain>(); terrain.GroupId = 0; terrain.TerrainData = terrainData; GameObject colliderGO = new GameObject("Tree Collider"); colliderGO.transform.parent = terrain.transform; colliderGO.transform.localPosition = Vector3.zero; colliderGO.transform.localRotation = Quaternion.identity; colliderGO.transform.localScale = Vector3.one; GTreeCollider collider = colliderGO.AddComponent <GTreeCollider>(); collider.Terrain = terrain; return(terrain); }