public HitTestResult HitTest(UrbanChallenge.Common.Coordinates loc, float tol, WorldTransform wt, DisplayObjectFilter filter) { if (filter(this)) { Coordinates closest = this.GetClosest(loc); if ((float)loc.DistanceTo(closest) < 5 + tol) { return(new HitTestResult(this, true, (float)loc.DistanceTo(closest))); } } return(new HitTestResult(this, false, float.MaxValue)); }
public HitTestResult HitTest(UrbanChallenge.Common.Coordinates loc, float tol, WorldTransform wt, DisplayObjectFilter filter) { // check filter if (filter.Target == null || filter.Target is ArbiterParkingSpotWaypoint) { // get bounding box dependent on tolerance RectangleF bounding = this.GetBoundingBox(wt); bounding.Inflate(tol, tol); // check if contains point if (bounding.Contains(DrawingUtility.ToPointF(loc))) { return(new HitTestResult(this, true, (float)loc.DistanceTo(this.Position))); } } return(new HitTestResult(this, false, float.MaxValue)); }
public HitTestResult HitTest(UrbanChallenge.Common.Coordinates loc, float tol, WorldTransform wt, DisplayObjectFilter filter) { if (this.SafetyPolygon == null) { /*if (this.safetyZoneBegin.Equals(this.safetyZoneEnd)) * { * Console.WriteLine("dupilicate safety zone changed" + this.safetyZoneBegin.Location.ToString()); * this.safetyZoneBegin = this.lane.LanePath().StartPoint; * }*/ this.GenerateSafetyZone(); } if (this.SafetyPolygon.IsInside(loc) && DrawingUtility.DrawArbiterSafetyZones) { Coordinates center = new Coordinates((this.safetyZoneBegin.Location.X + this.safetyZoneEnd.Location.X) / 2.0, (this.safetyZoneEnd.Location.Y + this.safetyZoneBegin.Location.Y) / 2.0); return(new HitTestResult(this, true, (float)loc.DistanceTo(center))); } else { return(new HitTestResult(this, false, float.MaxValue)); } }