public void CreateExplosionOnEachTarget(HitEvent evt, WeaponNode weapon) { HitExplosionGraphicsComponent hitExplosionGraphics = weapon.hitExplosionGraphics; Vector3 fireDirectionWorld = new MuzzleVisualAccessor(weapon.muzzlePoint).GetFireDirectionWorld(); foreach (HitTarget target in evt.Targets) { ExplosionEvent eventInstance = new ExplosionEvent { ExplosionOffset = -fireDirectionWorld * hitExplosionGraphics.ExplosionOffset, HitDirection = target.HitDirection, Asset = hitExplosionGraphics.ExplosionAsset, Duration = hitExplosionGraphics.ExplosionDuration, Target = target }; base.ScheduleEvent(eventInstance, target.Entity); } if (evt.StaticHit != null) { Vector3 position = evt.StaticHit.Position - (fireDirectionWorld * hitExplosionGraphics.ExplosionOffset); this.DrawExplosionEffect(position, evt.StaticHit.Normal, hitExplosionGraphics.ExplosionAsset, hitExplosionGraphics.ExplosionDuration, weapon); } }
public void CreateExplosionEffect(ExplosionEvent evt, TankNode tank) { Vector3 position = tank.tankVisualRoot.transform.TransformPoint(evt.Target.LocalHitPoint) + evt.ExplosionOffset; this.DrawExplosionEffect(position, evt.ExplosionOffset, evt.Asset, evt.Duration, tank); }