LivingEntity.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using UnityEngine;
  2. namespace HQFPSWeapons
  3. {
  4. /// <summary>
  5. /// Base Class for any Entity
  6. /// </summary>
  7. public class LivingEntity : MonoBehaviour
  8. {
  9. public AudioSource AudioSource { get => m_AudioSource; }
  10. public Animator Animator { get => m_Animator; }
  11. /// <summary></summary>
  12. public readonly Value<float> Health = new Value<float>(100f);
  13. /// <summary> </summary>
  14. public readonly Attempt<HealthEventData> ChangeHealth = new Attempt<HealthEventData>();
  15. /// <summary> </summary>
  16. public readonly Value<bool> IsGrounded = new Value<bool>(true);
  17. /// <summary> </summary>
  18. public readonly Value<Vector3> Velocity = new Value<Vector3>(Vector3.zero);
  19. public Value<Vector3> LookDirection = new Value<Vector3>();
  20. /// <summary> </summary>
  21. public readonly Message<float> FallImpact = new Message<float>();
  22. /// <summary></summary>
  23. public readonly Message Death = new Message();
  24. /// <summary></summary>
  25. public readonly Message Respawn = new Message();
  26. public Hitbox[] Hitboxes;
  27. public Inventory Inventory { get { return m_Inventory; } }
  28. [BHeader("Main Components")]
  29. [SerializeField]
  30. private AudioSource m_AudioSource = null;
  31. [SerializeField]
  32. private Animator m_Animator = null;
  33. [SerializeField]
  34. private Inventory m_Inventory = null;
  35. private void Start()
  36. {
  37. Hitboxes = GetComponentsInChildren<Hitbox>();
  38. foreach (var component in GetComponentsInChildren<LivingEntityComponent>(true))
  39. component.OnEntityStart();
  40. }
  41. }
  42. }