33 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|