InteractiveObject.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using UnityEngine;
  2. using UnityEngine.Events;
  3. namespace HQFPSWeapons
  4. {
  5. /// <summary>
  6. /// Base class for interactive objects (eg. buttons, item pickups).
  7. /// Has numerous raycast and interaction callbacks (overridable).
  8. /// </summary>
  9. public class InteractiveObject : MonoBehaviour
  10. {
  11. public bool InteractionEnabled { get { return m_InteractionEnabled; } set { m_InteractionEnabled = value; } }
  12. public string InteractionText { get { return m_InteractionText; } }
  13. [BHeader("Interaction", true)]
  14. [SerializeField]
  15. private bool m_InteractionEnabled = true;
  16. [SerializeField]
  17. [Multiline]
  18. protected string m_InteractionText = string.Empty;
  19. [Space]
  20. [SerializeField]
  21. private SoundPlayer m_RaycastStartAudio = null;
  22. [SerializeField]
  23. private SoundPlayer m_RaycastEndAudio = null;
  24. [SerializeField]
  25. private SoundPlayer m_InteractionStartAudio = null;
  26. [SerializeField]
  27. private SoundPlayer m_InteractionEndAudio = null;
  28. public UnityEvent m_InteractEvent = null;
  29. /// <summary>
  30. /// Called when a player starts looking at the object.
  31. /// </summary>
  32. public virtual void OnRaycastStart(Player player)
  33. {
  34. m_RaycastStartAudio.Play2D();
  35. }
  36. /// <summary>
  37. /// Called while a player is looking at the object.
  38. /// </summary>
  39. public virtual void OnRaycastUpdate(Player player) { }
  40. /// <summary>
  41. /// Called when a player stops looking at the object.
  42. /// </summary>
  43. public virtual void OnRaycastEnd(Player player)
  44. {
  45. m_RaycastEndAudio.Play2D();
  46. }
  47. /// <summary>
  48. /// Called when a player starts interacting with the object.
  49. /// </summary>
  50. public virtual void OnInteractionStart(Player player)
  51. {
  52. m_InteractionStartAudio.Play2D();
  53. m_InteractEvent.Invoke();
  54. }
  55. /// <summary>
  56. /// Called while a player is interacting with the object.
  57. /// </summary>
  58. public virtual void OnInteractionUpdate(Player player) { }
  59. /// <summary>
  60. /// Called when a player stops interacting with the object.
  61. /// </summary>
  62. public virtual void OnInteractionEnd(Player player)
  63. {
  64. m_InteractionEndAudio.Play2D();
  65. }
  66. }
  67. }