private void UpdateFailEffect() { if (_failEffect == null) return; // When the emitter is finished, stop the peng so that its particles don't fall // outside its visibility radius. if (_failEffect.Emitter.Finished) _failEffect.Move = Vector2.Zero; if (_failEffect.Dead) _failEffect = null; }
protected override void ShowFiringFailedEffect() { if (Owner == null) return; Gob.CreateGob<Gobs.Peng>(Owner.Game, _blinkFailTravelEffect, peng => { var pengMove = GetBlinkTargetAndMove().Item2 / _blinkMoveSpeed * _blinkFailTravelEffectSpeed; peng.ResetPos(Owner.Pos, pengMove, Owner.Rotation); var flyTime = (_blinkDistance - 50) / _blinkFailTravelEffectSpeed; // It looks better if it doesn't travel the full blink distance. peng.Emitter.NumberToCreate = (int)Math.Round(flyTime * peng.Emitter.EmissionFrequency); peng.MoveType = MoveType.Kinematic; peng.VisibilityLimitedTo = PlayerOwner; _failEffect = peng; Owner.Arena.Gobs.Add(peng); }); Gob.CreateGob<Gobs.Peng>(Owner.Game, _blinkFailTargetEffect, peng => { peng.ResetPos(GetBlinkTargetAndMove().Item1, Vector2.Zero, Owner.Rotation); peng.VisibilityLimitedTo = PlayerOwner; Owner.Arena.Gobs.Add(peng); }); }