Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class GetTerrainTextureIndice : MonoBehaviour {
- public Terrain myActiveTerrain;
- public List<int> terrainTextureIndices = new List<int>();
- public int dominantTerrainIndex;
- //
- TerrainData terrainData;
- float[] terrainCompositionArray;
- float[,,] splatmapData;
- float[] cellMix;
- void Update(){
- myActiveTerrain = Terrain.activeTerrain;
- dominantTerrainIndex = GetDominantTerrainTexture(transform.position);
- if(dominantTerrainIndex != -1){
- if (terrainTextureIndices.Count > 0 && terrainTextureIndices.Contains(dominantTerrainIndex)){
- }
- }
- }
- float[] TerrainComposition(Vector3 worldPos){
- try{
- terrainData = myActiveTerrain.terrainData;
- int mapX = (int)(((worldPos.x - myActiveTerrain.transform.position.x) / terrainData.size.x) * terrainData.alphamapWidth);
- int mapZ = (int)(((worldPos.z - myActiveTerrain.transform.position.z) / terrainData.size.z) * terrainData.alphamapHeight);
- splatmapData = terrainData.GetAlphamaps(mapX, mapZ, 1, 1);
- cellMix = new float[splatmapData.GetUpperBound(2) + 1];
- for (int x = 0; x < cellMix.Length; ++x){
- cellMix[x] = splatmapData[0, 0, x];
- }
- return cellMix;
- }
- catch{
- return null;
- }
- }
- int GetDominantTerrainTexture(Vector3 worldPos){
- terrainCompositionArray = TerrainComposition(worldPos);
- if(terrainCompositionArray != null){
- float maxMix = 0;
- int maxIndex = 0;
- for (int x = 0; x < terrainCompositionArray.Length; ++x){
- if (terrainCompositionArray[x] > maxMix){
- maxIndex = x;
- maxMix = terrainCompositionArray[x];
- }
- }
- return maxIndex;
- }
- else{
- return -1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement