using UnityEngine; namespace Ashwild.Harvesting { /// /// Volume (boîte) où aucun scatter ne doit apparaître. Posé en enfant d'une ScatterZone. /// La boîte est définie par 'size' (centrée sur le transform, suit sa rotation), éditable /// via des poignées dans la Scene View. Le test est fait en XZ (la hauteur n'importe pas). /// [DisallowMultipleComponent] public class ScatterExclusionVolume : MonoBehaviour { [Tooltip("Dimensions de la boîte (centrée sur le transform).")] public Vector3 size = new Vector3(10f, 10f, 10f); /// Vrai si la position monde (XZ) est dans le volume. public bool ContainsXZ(Vector3 world) { Vector3 local = Quaternion.Inverse(transform.rotation) * (world - transform.position); return Mathf.Abs(local.x) <= size.x * 0.5f && Mathf.Abs(local.z) <= size.z * 0.5f; } private void OnDrawGizmos() { Gizmos.matrix = Matrix4x4.TRS(transform.position, transform.rotation, Vector3.one); Gizmos.color = new Color(1f, 0.2f, 0.15f, 0.2f); Gizmos.DrawCube(Vector3.zero, size); Gizmos.color = new Color(1f, 0.2f, 0.15f, 0.9f); Gizmos.DrawWireCube(Vector3.zero, size); } } }