public static Vector3 TryFindObjectivePosition(IList <ObjectiveActor> objectives, int searchRadius, out ObjectiveActor foundObjective) { var objectiveMarkers = new HashSet <int>(objectives.Select(o => o.MarkerNameHash)); var miniMapMarker = AdvDia.CurrentWorldMarkers .FirstOrDefault(m => objectiveMarkers.Contains(m.NameHash) && m.Position.Distance(AdvDia.MyPosition) <= searchRadius && !EntryPortals.IsEntryPortal(AdvDia.CurrentWorldDynamicId, m.NameHash)); if (miniMapMarker != null) { foundObjective = objectives.FirstOrDefault(o => o.MarkerNameHash == miniMapMarker.Id); return(miniMapMarker.Position); } foundObjective = null; return(Vector3.Zero); }
public static Vector3 TryFindObjectivePosition(IList<ObjectiveActor> objectives, int searchRadius, out ObjectiveActor foundObjective) { var objectiveMarkers = new HashSet<int>(objectives.Select(o => o.MarkerNameHash)); var miniMapMarker = AdvDia.CurrentWorldMarkers .FirstOrDefault(m => objectiveMarkers.Contains(m.NameHash) && m.Position.Distance2D(AdvDia.MyPosition) <= searchRadius && !EntryPortals.IsEntryPortal(AdvDia.CurrentWorldDynamicId, m.NameHash)); if (miniMapMarker != null) { foundObjective = objectives.FirstOrDefault(o => o.MarkerNameHash == miniMapMarker.Id); return miniMapMarker.Position; } foundObjective = null; return Vector3.Zero; }