12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System.Collections;
- using UnityEngine;
- namespace HQFPSWeapons
- {
- public class EntityDeathHandler : LivingEntityComponent
- {
- [Header("Audio")]
- [SerializeField]
- private AudioSource m_AudioSource = null;
- [SerializeField]
- private SoundPlayer m_DeathAudio = null;
- [Header("Stuff To Disable On Death")]
- [SerializeField]
- private GameObject[] m_ObjectsToDisable = null;
- [SerializeField]
- private Behaviour[] m_BehavioursToDisable = null;
- [SerializeField]
- private Collider[] m_CollidersToDisable = null;
- [Header("Death Animation")]
- [SerializeField]
- [Tooltip("On death, you can either have a ragdoll, or an animation to play.")]
- private bool m_EnableDeathAnim = false;
- [SerializeField]
- private Animator m_Animator = null;
- [Header("Destroy Timer")]
- [SerializeField]
- [Clamp(0f, 1000f)]
- [Tooltip("")]
- private float m_DestroyTimer = 0f;
- private void Awake()
- {
- Entity.Health.AddChangeListener(OnChanged_Health);
- }
- private void OnChanged_Health(float health)
- {
- if(health == 0f)
- On_Death();
- }
- private void On_Death()
- {
- m_DeathAudio.Play(ItemSelection.Method.Random, m_AudioSource);
- if(m_EnableDeathAnim && m_Animator)
- m_Animator.SetTrigger("Die");
- foreach(var obj in m_ObjectsToDisable)
- obj.SetActive(false);
- foreach(var behaviour in m_BehavioursToDisable)
- {
- var animator = behaviour as Animator;
- if(animator != null)
- Destroy(animator);
- else
- behaviour.enabled = false;
- }
- foreach(var collider in m_CollidersToDisable)
- collider.enabled = false;
- Destroy(gameObject, m_DestroyTimer);
- Entity.Death.Send();
- }
- }
- }
|