Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class GetTerrainTextureIndice : MonoBehaviour {
  6.  
  7. public Terrain myActiveTerrain;
  8. public List<int> terrainTextureIndices = new List<int>();
  9. public int dominantTerrainIndex;
  10. //
  11. TerrainData terrainData;
  12. float[] terrainCompositionArray;
  13. float[,,] splatmapData;
  14. float[] cellMix;
  15.  
  16. void Update(){
  17. myActiveTerrain = Terrain.activeTerrain;
  18. dominantTerrainIndex = GetDominantTerrainTexture(transform.position);
  19. if(dominantTerrainIndex != -1){
  20. if (terrainTextureIndices.Count > 0 && terrainTextureIndices.Contains(dominantTerrainIndex)){
  21.  
  22. }
  23. }
  24. }
  25.  
  26. float[] TerrainComposition(Vector3 worldPos){
  27. try{
  28. terrainData = myActiveTerrain.terrainData;
  29. int mapX = (int)(((worldPos.x - myActiveTerrain.transform.position.x) / terrainData.size.x) * terrainData.alphamapWidth);
  30. int mapZ = (int)(((worldPos.z - myActiveTerrain.transform.position.z) / terrainData.size.z) * terrainData.alphamapHeight);
  31. splatmapData = terrainData.GetAlphamaps(mapX, mapZ, 1, 1);
  32. cellMix = new float[splatmapData.GetUpperBound(2) + 1];
  33. for (int x = 0; x < cellMix.Length; ++x){
  34. cellMix[x] = splatmapData[0, 0, x];
  35. }
  36. return cellMix;
  37. }
  38. catch{
  39. return null;
  40. }
  41. }
  42.  
  43. int GetDominantTerrainTexture(Vector3 worldPos){
  44. terrainCompositionArray = TerrainComposition(worldPos);
  45. if(terrainCompositionArray != null){
  46. float maxMix = 0;
  47. int maxIndex = 0;
  48. for (int x = 0; x < terrainCompositionArray.Length; ++x){
  49. if (terrainCompositionArray[x] > maxMix){
  50. maxIndex = x;
  51. maxMix = terrainCompositionArray[x];
  52. }
  53. }
  54. return maxIndex;
  55. }
  56. else{
  57. return -1;
  58. }
  59. }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement