Files
Emberwild/Assets/GAME/Script/Harvesting/ScatterExclusionVolume.cs
T
2026-06-22 16:18:34 +02:00

33 lines
1.3 KiB
C#

using UnityEngine;
namespace Ashwild.Harvesting
{
/// <summary>
/// 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).
/// </summary>
[DisallowMultipleComponent]
public class ScatterExclusionVolume : MonoBehaviour
{
[Tooltip("Dimensions de la boîte (centrée sur le transform).")]
public Vector3 size = new Vector3(10f, 10f, 10f);
/// <summary>Vrai si la position monde (XZ) est dans le volume.</summary>
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);
}
}
}