Files
jelito/Assets/jelycho/Code/Player/SingleRaySensor.cs
2025-07-16 23:04:04 +02:00

41 lines
1.2 KiB
C#

using System;
using RebootKit.Engine.Simulation.Sensors;
using UnityEngine;
namespace RebootReality.jelycho.Player {
[Serializable]
public struct SingleRaySensor : ISensor {
[SerializeField] Transform m_Origin;
[SerializeField] LayerMask m_LayerMask;
[SerializeField] float m_MaxDistance;
public GameObject Sense() {
Ray ray = new Ray(m_Origin.position, m_Origin.forward);
if (Physics.Raycast(ray, out RaycastHit hit, m_MaxDistance, m_LayerMask)) {
return hit.collider.gameObject;
}
return null;
}
}
[Serializable]
public class SingleRaySensor<T> : ISensor<T> where T : class {
[SerializeField] Transform m_Origin;
[SerializeField] LayerMask m_LayerMask;
[SerializeField] float m_MaxDistance;
public T Sense() {
Ray ray = new Ray(m_Origin.position, m_Origin.forward);
if (Physics.Raycast(ray, out RaycastHit hit, m_MaxDistance, m_LayerMask)) {
if (hit.collider.TryGetComponent(out T component)) {
return component;
}
}
return null;
}
}
}