public void TakeDamage(FlowUnit damagingUnit, float damage) { lock (damageLock) { if (isDead) { //return; } var ev = new UnitDamaged(); ev.damageTaken = damage; ev.damagingUnit = damagingUnit; ev.damagedUnit = this; health -= damage; this.Trigger <UnitDamaged>(ev); if (health <= 0) { isDead = true; var death = new UnitDied(); death.damageTaken = damage; death.damagingUnit = damagingUnit; death.deadUnit = this; this.Trigger <UnitDied>(death); if (destroyOnDeath) { FlowPool.Recycle(this.gameObject); } } } }
public void Kill(FlowUnit damagingUnit) { TakeDamage(damagingUnit, health); }