private void CreateShot(Gob source, int sourceBoneIndex, Gob target, int chainIndex) { var birthPos = source.GetNamedPosition(sourceBoneIndex); Gob.CreateGob<Lightning>(Owner.Game, _shotTypeName, shot => { shot.ResetPos(birthPos, Vector2.Zero, Gob.DEFAULT_ROTATION); shot.Owner = PlayerOwner; shot.Shooter = source; shot.ShooterBoneIndex = sourceBoneIndex; shot.Target = target; shot.ChainIndex = chainIndex; Arena.Gobs.Add(shot); }); }
private static List<Segment> GetInitialSegments(Gob shooter, int shooterBoneIndex, Gob target) { var start = shooter.GetNamedPosition(shooterBoneIndex); if (target != null) return new List<Segment> { new Segment(start, target.Pos) }; var drawRotation = shooter.Rotation + shooter.DrawRotationOffset; var middle1 = shooter.Pos + RandomHelper.GetRandomCirclePoint(BLANK_SHOT_RANGE, drawRotation - MathHelper.PiOver4, drawRotation); var middle2 = shooter.Pos + RandomHelper.GetRandomCirclePoint(BLANK_SHOT_RANGE, drawRotation, drawRotation + MathHelper.PiOver4); return new List<Segment> { new Segment(start, middle1), new Segment(middle1, middle2), new Segment(middle2, start) }; }