private HitData GetHitData(AoEDamageEvent aoeEvent) { return(new HitData() { Damage = aoeEvent.Damage, DamageType = DamageType.Collateral, SourcePosition = aoeEvent.SourcePosition, RaycastHit = new RaycastHit() { point = aoeEvent.SourcePosition } }); }
private void DamageAllThingsNearby(AoEDamageEvent aoeEvent) { Transform[] all = CollectAllTransforms(aoeEvent); foreach (Transform transform in all) { if (transform != aoeEvent.Source && transform != null) { HealthPoints hp = transform.GetComponent <HealthPoints>(); if (hp != null && hp.IsAlive == true) { hp.DoDamage(GetHitData(aoeEvent)); } } } }
private Transform[] CollectAllTransforms(AoEDamageEvent aoeEvent) { Transform[] aiTransforms = AI_Behaviour.GetEnemiesWithinRadius(aoeEvent.SourcePosition, aoeEvent.Radius); Transform[] barrelTransforms = Barrel.GetBarrelsWithinRadius(aoeEvent.SourcePosition, aoeEvent.Radius); Transform[] all = new Transform[aiTransforms.Length + barrelTransforms.Length + 1]; aiTransforms.CopyTo(all, 0); barrelTransforms.CopyTo(all, 0); if (Vector3.Distance(PlayerController.Position, aoeEvent.SourcePosition) < aoeEvent.Radius) { Transform playerTransform = PlayerController.GameObject.transform; all[all.Length - 1] = playerTransform; } return(all); }