public override void OnInspectorGUI() { ProceduralTerrain terrainGen = (ProceduralTerrain)target; var settings = terrainGen.settings.Get(); if (settings.maxRenderDistance < settings.minRenderDistance) { settings.maxRenderDistance = settings.minRenderDistance; } if (DrawDefaultInspector()) { if (terrainGen.settings.autoUpdate) { terrainGen.Clear(); terrainGen.Init(); } } if (GUILayout.Button("Generate")) { terrainGen.Clear(); terrainGen.Init(); } if (GUILayout.Button("Clear")) { terrainGen.Clear(); } }
private void Start() { pt = new ProceduralTerrain(worldSize, worldSize, passes); t.terrainData.size = new Vector3(worldSize * 2, maxHeight, worldSize * 2); t.terrainData.heightmapResolution = worldSize; Generate(); }
private void OnEnable() { Terrain = (ProceduralTerrain)target; TerrainLayer_Containers = new ReorderableList( serializedObject, serializedObject.FindProperty("TerrainLayer_Containers"), true, true, true, true ); TerrainLayer_Containers.drawHeaderCallback = rect => EditorGUI.LabelField(rect, "Terrain Layer Containers", EditorStyles.boldLabel); TerrainLayer_Containers.drawElementCallback = ( Rect rect, int index, bool isActive, bool isFocused ) => EditorGUI.ObjectField( new Rect( rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight ), TerrainLayer_Containers.serializedProperty.GetArrayElementAtIndex(index), GUIContent.none ); }
public void CreateTerrain() { ProceduralTerrain proceduralTerrain = FindObjectOfType <ProceduralTerrain>(); proceduralTerrain.CreateTerrain(allDivisions, meshSize, meshHeight, scale); }
public void drawMap() { mapSize = mapSizeSetting * 5; noiseGenerator = new PerlinNoise(mapSize, mapSize, seed, scale, numOctaves, persistance, lacunarity); transform.localScale = new Vector3(5, 1, 5); ClearMap(); terrain = new ProceduralTerrain(noiseGenerator, chunkRenderDistance, terrains, maxMapHeight); terrain.Render(useTerrainColors); }
public void TerrainGetCenter() { var n = 10; var height = 10; var terrain = ProceduralTerrain.Generate(n, height, 030195, 1.5f, 0.5f); var middleOfTerrain = terrain.GetComponent <Terrain>().GetCenter(); Assert.AreEqual( new Vector3((Mathf.Pow(2, n) + 1) / 2, height / 2, (Mathf.Pow(2, n) + 1) / 2), middleOfTerrain ); }
private void Generate(ProceduralTerrain terrain) { switch (index) { case 0: terrain.typeFilter = new IslandFilter(); break; default: terrain.typeFilter = new CoastFilter(); break; } terrain.GenerateSharedMesh(); }
public override void OnInspectorGUI() { DrawDefaultInspector(); ProceduralTerrain terrain = (ProceduralTerrain)target; index = EditorGUILayout.Popup("Type", index, typeOptions); if (GUILayout.Button("Generate")) { Generate(terrain); } else if (GUILayout.Button("Randomize")) { terrain.seed = Random.Range(0, int.MaxValue); } }
void Awake() { Current = this; mainQueue = new CoroutineQueue(this); mainQueue.StartLoop(); combineQueue = new CoroutineQueue(this); combineQueue.StartLoop(); miscQueue = new CoroutineQueue(this); miscQueue.StartLoop(); objectGenerator = ScriptableObject.CreateInstance <ObjectGenerator>(); ChunkList = new List <ChunkData>(); }
public override void OnInspectorGUI() { ProceduralTerrain terrain = (ProceduralTerrain)target; if (DrawDefaultInspector()) { if (terrain.AutoUpdate) { terrain.CreateTerrain(); } } if (GUILayout.Button("Recreate terrain")) { terrain.CreateTerrain(); } }
private void Start() { pt = new ProceduralTerrain(worldSize, worldSize, passes); t.terrainData.size = new Vector3(worldSize * 2.5f, maxHeight, worldSize * 2.5f); t.terrainData.heightmapResolution = worldSize; Generate(); for (int i = 0; i < 3; i++) { int xAs = Random.Range(0, 600); int yAs = Random.Range(0, 600); Vector3 pos = new Vector3(xAs, 0, yAs); float terrainHeight = t.SampleHeight(pos); pos.y = terrainHeight + 0.5f; Instantiate(boatParts[i], pos, Quaternion.identity); } }
public void PositionAboveGround() { var height = 30; var terrain = ProceduralTerrain.Generate(10, height, 030195, 1000, 0.8f ); terrain.layer = LayerMask.NameToLayer("Ground"); var middleOfTerrain = terrain.GetComponent <Terrain>().GetCenter(); var nbObjects = 1000; var goScale = 2; var gos = new GameObject[nbObjects]; // Test that spawning above ground then correctly adjust slightly above foreach (var i in Enumerable.Range(0, nbObjects)) { var go = GameObject.CreatePrimitive(PrimitiveType.Cube); var randomPositionOnTerrain = Random.insideUnitCircle * Mathf.Pow(2, 9); go.transform.position = middleOfTerrain + new Vector3(randomPositionOnTerrain.x, 0, randomPositionOnTerrain.y) + Vector3.up * height; // TODO: see @Utils.Spatial.PositionAboveGround var aboveGround = go.transform.position.PositionAboveGround(prefabHeight: goScale); Physics.Raycast(aboveGround, Vector3.down, out var hit, Mathf.Infinity); Assert.NotNull(hit.transform, "didn't hit"); Assert.Equals(hit.transform.gameObject.layer, terrain.layer); Assert.Less(hit.transform.position.y as IComparable, aboveGround.y, "Ray-cast hit should be below object !"); gos[i] = go; } // Cleanup foreach (var go in gos) { Object.DestroyImmediate(go); } Object.DestroyImmediate(terrain); }
IEnumerator GenerateChunk() { //Continue after loading message has been displayed yield return(ProceduralTerrain.Current.StartCoroutine(ProceduralTerrain.Current.DisplayChunkLoadMessage())); InitialiseArrays(); terrainHeightMap = ProceduralTerrain.CalculateHeightMap(this); ProceduralTerrain.Current.GenerateTerrain(this); //Generate rest of chunk ProceduralTerrain.Current.GenerateHouses(this); ProceduralTerrain.Current.GenerateTrees(this); ProceduralTerrain.Current.GenerateVillageConnections(this); //Must be called after trees to avoid clipping ProceduralTerrain.Current.GenerateDetails(this); SplatMapGenerator.GenerateSplatMap(this); ProceduralTerrain.Current.GenerateGrass(this); //Continue after loading message has been hidden yield return(ProceduralTerrain.Current.StartCoroutine(ProceduralTerrain.Current.HideChunkLoadMessage())); //Alert ProceduralTerrain that chunk has been created ProceduralTerrain.Current.OnChunkCreated(this); }
public override void OnInspectorGUI() { serializedObject.Update(); if (TerrainLayer_Containers != null) { TerrainLayer_Containers.DoLayoutList(); } EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(serializedObject.FindProperty("TerrainSize")); EditorGUILayout.PropertyField(serializedObject.FindProperty("TerrainHeight")); EditorGUILayout.PropertyField(serializedObject.FindProperty("CellSize")); serializedObject.ApplyModifiedProperties(); ProceduralTerrain procedural_terrain = serializedObject.targetObject as ProceduralTerrain; if (GUILayout.Button("Generate") || (EditorGUI.EndChangeCheck() && procedural_terrain.AutoUpdate)) { procedural_terrain.GenerateTerrain(); } }
private void Awake() { spawnedFood = new List <Food>(); terrain = FindObjectOfType <ProceduralTerrain>(); }
public void OnValidate() { spawnedFood = new List <Food>(); terrain = FindObjectOfType <ProceduralTerrain>(); }
private void OnEnable() { terrain = (ProceduralTerrain)target; }
private void Start() { mapGenerator = FindObjectOfType <ProceduralTerrain>(); mapInteraction = FindObjectOfType <MapInteraction>(); AudioSource.PlayOneShot(buildingClickAudio); }