public void DumpDetailPrototypes() { foliage = new FoliageType[t.terrainData.detailPrototypes.Length]; for (int i = 0; i < foliage.Length; i++) { foliage [i] = new FoliageType(); if (!t.terrainData.detailPrototypes [i].usePrototypeMesh) { foliage [i].foliageMesh = defaultFoliageMesh; foliage [i].baseMaterial = defaultMaterial; foliage [i].textures = new FoliageTexture[1]; foliage [i].textures [0] = new FoliageTexture("_MainTex", t.terrainData.detailPrototypes [i].prototypeTexture); } foliage [i].minSize = new Vector3(t.terrainData.detailPrototypes [i].minWidth, t.terrainData.detailPrototypes [i].minHeight, t.terrainData.detailPrototypes [i].minWidth); foliage [i].maxSize = new Vector3(t.terrainData.detailPrototypes [i].maxWidth, t.terrainData.detailPrototypes [i].maxHeight, t.terrainData.detailPrototypes [i].maxWidth); } }
private bool GeneratePositions(QuadTree quadTree) { var maximum = 32767; FoliageArray = new FoliageType[FoliageCount]; var random = new Random((int)DateTime.Now.Ticks); for (int i = 0; i < FoliageCount; ++i) { var testX = (float)random.Next(maximum) / maximum * 256.0f; var testZ = (float)random.Next(maximum) / maximum * 256.0f; FoliageArray[i].x = testX; quadTree.GetHeightAtPosition(testX, testZ, out FoliageArray[i].y); FoliageArray[i].z = testZ; var red = (float)random.Next(maximum) / maximum; var green = (float)random.Next(maximum) / maximum; FoliageArray[i].r = red + 1.0f; FoliageArray[i].g = green + 0.5f; } return(true); }
public void Initialize() { anim = GetComponent <Animator>(); RaycastHit outHit = new RaycastHit(); //UP LEFT if (Physics.Raycast(transform.position, Vector3.forward + Vector3.left, out outHit, 5.0f)) { if (outHit.collider.GetComponent <GameTile> () != null) { tiles[(int)Direction.UpLeft] = outHit.collider.GetComponent <GameTile> (); } } //UP if (Physics.Raycast(transform.position, Vector3.forward, out outHit, 5.0f)) { if (outHit.collider.GetComponent <GameTile> () != null) { tiles[(int)Direction.Up] = outHit.collider.GetComponent <GameTile> (); } } //UP Right if (Physics.Raycast(transform.position, Vector3.forward + Vector3.right, out outHit, 5.0f)) { if (outHit.collider.GetComponent <GameTile> () != null) { tiles[(int)Direction.UpRight] = outHit.collider.GetComponent <GameTile> (); } } //RIGHT if (Physics.Raycast(transform.position, Vector3.right, out outHit, 5.0f)) { if (outHit.collider.GetComponent <GameTile> () != null) { tiles[(int)Direction.Right] = outHit.collider.GetComponent <GameTile> (); } } //DOWN RIGHT if (Physics.Raycast(transform.position, Vector3.back + Vector3.right, out outHit, 5.0f)) { if (outHit.collider.GetComponent <GameTile> () != null) { tiles[(int)Direction.DownRight] = outHit.collider.GetComponent <GameTile> (); } } //DOWN if (Physics.Raycast(transform.position, Vector3.back, out outHit, 5.0f)) { if (outHit.collider.GetComponent <GameTile> () != null) { tiles[(int)Direction.Down] = outHit.collider.GetComponent <GameTile> (); } } //DOWN LEFT if (Physics.Raycast(transform.position, Vector3.back + Vector3.left, out outHit, 5.0f)) { if (outHit.collider.GetComponent <GameTile> () != null) { tiles[(int)Direction.DownLeft] = outHit.collider.GetComponent <GameTile> (); } } //LEFT if (Physics.Raycast(transform.position, Vector3.left, out outHit, 5.0f)) { if (outHit.collider.GetComponent <GameTile> () != null) { tiles[(int)Direction.Left] = outHit.collider.GetComponent <GameTile> (); } } if (tiles[(int)Direction.Left] == null || tiles[(int)Direction.Right] == null || tiles[(int)Direction.Up] == null || tiles[(int)Direction.Down] == null) { foliageType = FoliageType.Sand; } else { int random = Random.Range(0, 3); if (random == 0) { foliageType = FoliageType.Grass; } else if (random == 1) { foliageType = FoliageType.Rock; } else { foliageType = FoliageType.Sand; } } GameObject spawnTile = GameTileManager.instance.GetRandomTilePrefabFromType(foliageType); spawnTile = Instantiate(spawnTile, transform); spawnTile.transform.rotation = Quaternion.Euler(new Vector3(0, (float)GameTileManager.instance.RandomRotationAngle(), 0)); if (GameTileManager.instance.baseTilePrefabs [(int)foliageType].foliagePrefabs.Count > 0) { Instantiate(GameTileManager.instance.baseTilePrefabs [(int)foliageType].foliagePrefabs [Random.Range(0, GameTileManager.instance.baseTilePrefabs [(int)foliageType].foliagePrefabs.Count)], transform); } endRot = new Vector3(rotationStops[1], transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z); startRot = new Vector3(rotationStops[0], transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z); }
public void SyncOptions() { _type = Foliage.GetFoliageType(SelectedFoliageTypeIndex); }