| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | using UnityEngine;using UnityEngine.Events;namespace HQFPSWeapons{	/// <summary>	/// Base class for interactive objects (eg. buttons, item pickups).	/// Has numerous raycast and interaction callbacks (overridable).	/// </summary>	public class InteractiveObject : MonoBehaviour	{		public bool InteractionEnabled { get { return m_InteractionEnabled; } set { m_InteractionEnabled = value; } }		public string InteractionText { get { return m_InteractionText; } }		[BHeader("Interaction", true)]		[SerializeField]		private bool m_InteractionEnabled = true;		[SerializeField]		[Multiline]		protected string m_InteractionText = string.Empty;		[Space]		[SerializeField]		private SoundPlayer m_RaycastStartAudio = null;		[SerializeField]		private SoundPlayer m_RaycastEndAudio = null;		[SerializeField]		private SoundPlayer m_InteractionStartAudio = null;		[SerializeField]		private SoundPlayer m_InteractionEndAudio = null;		public UnityEvent m_InteractEvent = null;		/// <summary>		/// Called when a player starts looking at the object.		/// </summary>		public virtual void OnRaycastStart(Player player) 		{			m_RaycastStartAudio.Play2D(); 		}		/// <summary>		/// Called while a player is looking at the object.		/// </summary>		public virtual void OnRaycastUpdate(Player player) {  }		/// <summary>		/// Called when a player stops looking at the object.		/// </summary>		public virtual void OnRaycastEnd(Player player) 		{			m_RaycastEndAudio.Play2D(); 		}		/// <summary>		/// Called when a player starts interacting with the object.		/// </summary>		public virtual void OnInteractionStart(Player player) 		{			m_InteractionStartAudio.Play2D();			m_InteractEvent.Invoke();		}		/// <summary>		/// Called while a player is interacting with the object.		/// </summary>		public virtual void OnInteractionUpdate(Player player) {  }		/// <summary>		/// Called when a player stops interacting with the object.		/// </summary>		public virtual void OnInteractionEnd(Player player) 		{			m_InteractionEndAudio.Play2D(); 		}	}}
 |