public void SendEmpTargetsToServer(CollectTargetsInRadius evt, EMPEffectNode emp, SelfTankNode tank)
        {
            ApplyTargetsForEMPEffectEvent eventInstance = new ApplyTargetsForEMPEffectEvent {
                Targets = evt.Targets.ToArray()
            };

            base.ScheduleEvent <SynchronizeSelfTankPositionBeforeEffectEvent>(tank);
            base.ScheduleEvent(eventInstance, emp);
        }
        public void CollectTargetsForEMPEffectInNonTeamBattle(NodeAddedEvent e, EMPEffectNode emp, [JoinByTank] SelfTankNonTeamNode selfTank, [JoinByBattle] NonTeamBattleNode battle, [JoinByBattle] ICollection <RemoteTankNode> otherTanks)
        {
            CollectTargetsInRadius eventInstance = new CollectTargetsInRadius {
                Radius = emp.empEffect.Radius
            };

            Node[] nodes = new Node[] { emp, selfTank, battle };
            base.NewEvent(eventInstance).AttachAll(nodes).Schedule();
        }
 public void CollectTargetsForEMPEffectInTeamBattle(NodeAddedEvent e, EMPEffectNode emp, [JoinByTank] SelfTankTeamNode selfTank, [JoinByTeam] TeamNode selfTeam, [JoinByBattle] TeamBattleNode battle, [JoinByBattle, Combine] TeamNode team)
 {
     if (!team.Entity.Equals(selfTeam.Entity))
     {
         CollectTargetsInRadius eventInstance = new CollectTargetsInRadius {
             Radius = emp.empEffect.Radius
         };
         Node[] nodes = new Node[] { emp, selfTank, battle, team };
         base.NewEvent(eventInstance).AttachAll(nodes).Schedule();
     }
 }
        public void PlayEMPEffect(EMPEffectReadyEvent e, EMPEffectNode effect, [JoinByTank] TankNode tank, [JoinAll] SingleNode <MapInstanceComponent> map)
        {
            EMPWaveGraphicsBehaviour behaviour = Object.Instantiate <EMPWaveGraphicsBehaviour>(tank.empWaveGraphicsEffect.EMPWaveAsset, tank.tankVisualRoot.transform.position, tank.tankVisualRoot.transform.rotation, map.component.SceneRoot.transform);
            float          num2 = effect.empEffect.Radius * 2f;
            ParticleSystem waveParticleSystem = behaviour.WaveParticleSystem;

            ParticleSystem.SizeOverLifetimeModule sizeOverLifetime = waveParticleSystem.sizeOverLifetime;
            ParticleSystem.MinMaxCurve            size             = sizeOverLifetime.size;
            AnimationCurve curve = size.curve;
            Keyframe       key   = curve.keys[0];

            key.value = (num2 * 0.152f) / 50f;
            curve.MoveKey(0, key);
            size.curveMultiplier  = num2;
            sizeOverLifetime.size = size;
            AudioSource waveSound = behaviour.WaveSound;

            waveSound.transform.parent = null;
            waveSound.Play();
            waveParticleSystem.Play();
            Object.Destroy(behaviour.gameObject, waveParticleSystem.startLifetime + 0.5f);
            Object.Destroy(waveSound.gameObject, waveSound.clip.length + 0.5f);
        }