42 lines
1.5 KiB
C#
42 lines
1.5 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace Ashwild.Harvesting
|
|
{
|
|
/// <summary>
|
|
/// Zone de dispersion posée dans la scène (boîte rectangulaire alignée sur les axes).
|
|
/// Porte une liste de "layers" (chacun = un ScatterProfile + son pinceau). Les zones
|
|
/// no-go sont définies par des ScatterExclusionVolume enfants. Aucune logique runtime :
|
|
/// conteneur de données + gizmos, piloté par ScatterZoneEditor.
|
|
/// </summary>
|
|
[DisallowMultipleComponent]
|
|
public class ScatterZone : MonoBehaviour
|
|
{
|
|
[System.Serializable]
|
|
public class Layer
|
|
{
|
|
public ScatterProfile profile;
|
|
public bool enabled = true;
|
|
public float brushRadius = 5f;
|
|
[Range(0f, 1f)] public float brushStrength = 0.5f;
|
|
}
|
|
|
|
[Tooltip("Dimensions de la boîte (centrée sur le transform). X/Z = emprise au sol, Y = hauteur du gizmo.")]
|
|
public Vector3 size = new Vector3(50f, 10f, 50f);
|
|
|
|
public List<Layer> layers = new List<Layer>();
|
|
|
|
/// <summary>Coin (min X, min Z) de l'emprise au sol, à la hauteur du transform.</summary>
|
|
public Vector3 MinCorner => new Vector3(
|
|
transform.position.x - size.x * 0.5f,
|
|
transform.position.y,
|
|
transform.position.z - size.z * 0.5f);
|
|
|
|
private void OnDrawGizmos()
|
|
{
|
|
Gizmos.color = new Color(0.3f, 0.8f, 1f, 0.25f);
|
|
Gizmos.DrawWireCube(transform.position, size);
|
|
}
|
|
}
|
|
}
|