public bool LineOfSight(Attackable a, Attackable b) { return grid.LineOfSight(a.Position, b.Position); }
public bool IsInSightRange(Attackable a, int faction) { foreach (Attackable att in attackables) { if (att.Faction == faction && AttackableHelper.Distance(att, a) <= att.VisionRange) { return true; } } return false; }
public void Attack(Attackable target) { AttackTarget = target; fsm.ChangeState(FSMState.FSMStates.Attack, true); AttackMoving = false; }
public Attackable GetNearestTarget(Attackable u, float range = float.MaxValue) { float distance = float.MaxValue; Attackable closest = null; foreach (Attackable a in attackables) { if (a == u || a.Faction == u.Faction) continue; float d = AttackableHelper.Distance(u,a); if (d < range && d < distance) { closest = a; distance = d; } } return closest; }
public bool LineOfSight(Attackable a, Attackable b) { return(grid.LineOfSight(a.Position, b.Position)); }