示例#1
0
        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));
        }
示例#2
0
        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));
            }
        }