public void SendTargetsToServer(CollectTargetsInRadius evt, ExplosiveMassEffectNode effect, SelfTankNode tank) { SelfHitEvent eventInstance = new SelfHitEvent { Targets = new List <HitTarget>() }; foreach (Entity entity in evt.Targets) { Entity tankIncarnation = entity.SendEvent <GetTankIncarnationEvent>(new GetTankIncarnationEvent()).TankIncarnation; if (tankIncarnation != null) { HitTarget item = new HitTarget { Entity = entity, LocalHitPoint = Vector3.zero, HitDirection = Vector3.zero, HitDistance = 0f, IncarnationEntity = tankIncarnation, TargetPosition = Vector3.zero }; eventInstance.Targets.Add(item); } } base.ScheduleEvent <SynchronizeSelfTankPositionBeforeEffectEvent>(tank); base.ScheduleEvent(eventInstance, effect); }
public void CollectTargetsInNonTeamBattle(NodeAddedEvent e, ExplosiveMassEffectNode effect, [JoinByTank] SelfTankNonTeamNode selfTank, [JoinByBattle] NonTeamBattleNode battle, [JoinByBattle] ICollection <RemoteTankNode> otherTanks) { CollectTargetsInRadius eventInstance = new CollectTargetsInRadius { Radius = effect.explosiveMassEffect.Radius }; Node[] nodes = new Node[] { effect, selfTank, battle }; base.NewEvent(eventInstance).AttachAll(nodes).ScheduleDelayed(((float)effect.explosiveMassEffect.Delay) / 1000f); }
public void CollectTargetsInTeamBattle(NodeAddedEvent e, ExplosiveMassEffectNode effect, [JoinByTank] SelfTankTeamNode selfTank, [JoinByTeam] TeamNode selfTeam, [JoinByBattle] TeamBattleNode battle, [JoinByBattle, Combine] TeamNode team) { if (!team.Entity.Equals(selfTeam.Entity)) { CollectTargetsInRadius eventInstance = new CollectTargetsInRadius { Radius = effect.explosiveMassEffect.Radius }; Node[] nodes = new Node[] { effect, selfTank, battle, team }; base.NewEvent(eventInstance).AttachAll(nodes).ScheduleDelayed(((float)effect.explosiveMassEffect.Delay) / 1000f); } }
public void PlayEffect(NodeAddedEvent e, ExplosiveMassEffectNode effectNode, [JoinByTank] TankNode tank) { GameObject explosiveMassEffect = tank.moduleVisualEffectObjects.ExplosiveMassEffect; if (!explosiveMassEffect.activeInHierarchy) { explosiveMassEffect.transform.position = tank.rigidbody.RigidbodyTransform.position; explosiveMassEffect.SetActive(true); } TankFallEvent eventInstance = new TankFallEvent { FallingPower = 100f, FallingType = TankFallingType.NOTHING }; base.NewEvent(eventInstance).Attach(tank).ScheduleDelayed(((float)effectNode.explosiveMassEffect.Delay) / 1000f); }