private void OnUpdate(EventArgs args)
{
CheckCrosshair();
var distance = 0f;
var playerPos = Player.Instance.Position;
switch (CameraMode)
{
case CameraModeSelector.None:
return;
case CameraModeSelector.Heroes:
var heroes =
Heroes.Enemies.Where(
x =>
x.GetPosistion().Distance(Player.Instance.Position) < HeroDetectionRange.CurrentValue &&
x.IsAlive()).ToList();
if (heroes.Count <= 0)
{
FocusPoint = playerPos.To2D();
return;
}
FocusPoint = heroes.AveragePosition().To2D();
distance = Math.Min(ExtraDistance.CurrentValue, playerPos.Distance(FocusPoint));
FocusPoint = playerPos.Extend(FocusPoint, distance);
break;
case CameraModeSelector.Minions:
var minions = Minions.Enemy.Where(x => x.GetPosistion().Distance(Player.Instance.Position) < MinionDetectionRange.CurrentValue / 2f && x.IsAlive()).ToList();
if (minions.Count <= 0)
{
minions = Minions.Ally.Where(x => x.GetPosistion().Distance(Player.Instance.Position) < MinionDetectionRange.CurrentValue / 2f && x.IsAlive()).ToList();
if (minions.Count <= 0)
{
FocusPoint = playerPos.To2D();
return;
}
}
FocusPoint = minions.AveragePosition().To2D();
distance = Math.Min(ExtraDistance.CurrentValue, playerPos.Distance(FocusPoint));
FocusPoint = playerPos.Extend(FocusPoint, distance);
break;
case CameraModeSelector.Mouse:
var pos = EloBuddy.Game.CursorPos2D;
distance = Math.Min(pos.Distance(_centerScreen), ExtraDistance.CurrentValue);
var angle = new Vector2(-(_centerScreen.X - pos.X) / _centerScreen.Distance(pos),
-(pos.Y - _centerScreen.Y) / _centerScreen.Distance(pos));
FocusPoint = new Vector2(Player.Instance.Position.X + angle.X * distance,
Player.Instance.Position.Y + angle.Y * distance);
break;
default:
return;
}
}