private IEnumerator WaitForeRevive(DeadData deadData) { yield return(new WaitForSeconds(ReviveWaitTime)); ReviveAnimator.SetTrigger("Revive"); Object.Destroy(deadData); var abilities = gameObject.GetComponents <Ability>(); var childAbilities = gameObject.GetComponentsInChildren <Ability>(); var behaviours = gameObject.GetComponentsInParent <Behaviour>(); Data.CurrentHealth = Data.BaseHealth; foreach (var ability in abilities) { ability.enabled = true; } foreach (var ability in childAbilities) { ability.enabled = true; } foreach (var behaviour in behaviours) { throw new NotImplementedException("Behaciour revive is not done yet"); } AgentToPlace.isStopped = true; AgentToPlace.transform.position = ReviveSpot.position; AgentToPlace.nextPosition = ReviveSpot.position; AgentToPlace.SetDestination(ReviveSpot.position); _gameStartSignal.Fire(); }
private void Update() { if (Data.CurrentHealth <= 0 && DeadData == null) { var abilities = gameObject.GetComponents <Ability>(); var childAbilities = gameObject.GetComponentsInChildren <Ability>(); var parentBehaviours = gameObject.GetComponentsInParent <Behaviour>(); foreach (var ability in abilities) { if (!ability.ResistsDeath) { ability.enabled = false; ability.Cancel(); } } foreach (var ability in childAbilities) { if (!ability.ResistsDeath) { ability.enabled = false; ability.Cancel(); } } foreach (var behaviour in parentBehaviours) { behaviour.DeactivateBehaviour(); } DeadData = gameObject.AddComponent <DeadData>(); foreach (var ability in ActivateOnDeath) { ability.Activate(); } _taskSystem.StopAll(this.gameObject); } }
void Update() { if (_deadData == null) { _deadData = gameObject.GetComponent <DeadData>(); } if (_deadData != null && !_deadData.Dying) { _deadData.Dying = true; if (Sound != null) { Sound.Play(); } AnimationControl.SetTrigger("Die"); } }