73 lines
1.8 KiB
C#
73 lines
1.8 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
|
|
public class SceneCleanTool : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private List<MeshRenderer> renderers;
|
|
|
|
[SerializeField]
|
|
private Terrain terrain;
|
|
|
|
[SerializeField]
|
|
private int detailPrototypeID;
|
|
|
|
[SerializeField]
|
|
private int treePrototypeID;
|
|
|
|
[SerializeField]
|
|
private List<GameObject> detailGameObjects;
|
|
|
|
private void GetAllTerrainDetails()
|
|
{
|
|
_ = terrain.terrainData.detailPrototypes;
|
|
int[,] detailLayer = terrain.terrainData.GetDetailLayer(0, 0, terrain.terrainData.detailWidth, terrain.terrainData.detailHeight, detailPrototypeID);
|
|
for (int i = 0; i < terrain.terrainData.detailHeight; i++)
|
|
{
|
|
for (int j = 0; j < terrain.terrainData.detailWidth; j++)
|
|
{
|
|
if (detailLayer[j, i] > 0)
|
|
{
|
|
float num = (float)j / (float)terrain.terrainData.detailWidth;
|
|
float num2 = (float)i / (float)terrain.terrainData.detailHeight;
|
|
_ = terrain.transform.position + new Vector3(num * terrain.terrainData.size.x, 0f, num2 * terrain.terrainData.size.z);
|
|
TreeInstance instance = new TreeInstance
|
|
{
|
|
position = new Vector3(num, 0f, num2),
|
|
prototypeIndex = treePrototypeID,
|
|
widthScale = 1f,
|
|
heightScale = 1f,
|
|
color = Color.white,
|
|
lightmapColor = Color.white
|
|
};
|
|
terrain.AddTreeInstance(instance);
|
|
detailLayer[j, i] = 0;
|
|
}
|
|
}
|
|
}
|
|
terrain.terrainData.SetDetailLayer(0, 0, detailPrototypeID, detailLayer);
|
|
Debug.Log("Transfer completed.");
|
|
}
|
|
|
|
private void FindAllDisableMeshRenderer()
|
|
{
|
|
renderers = new List<MeshRenderer>();
|
|
foreach (MeshRenderer item in GetComponentsInChildren<MeshRenderer>().ToList())
|
|
{
|
|
if (!item.enabled)
|
|
{
|
|
renderers.Add(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DestroyRenderersFromList()
|
|
{
|
|
foreach (MeshRenderer renderer in renderers)
|
|
{
|
|
Object.DestroyImmediate(renderer.gameObject);
|
|
}
|
|
}
|
|
}
|