Esempio n. 1
0
        public Vector2?GetNearestPointOnContour(Vector2 point, out Vector2 tangent)
        {
            var result = GetNearestPointOnContour(point);

            tangent = new Vector2();
            for (int i = 0, count = _Contour.Count; i < count; i++)
            {
                RoomVert v1 = _Contour[i],
                         v2 = _Contour[(i + 1) % count];
                if (MathUtils.IsPointInsideLineSegment(result.Value, v1.Position, v2.Position))
                {
                    tangent = MathUtils.CalculateTangent(v1.Position, v2.Position);
                }
            }
            return(result);
        }
Esempio n. 2
0
        public RoomVert GetVertInPos(Vector2 point, Room excludeRoom = null)
        {
            RoomVert vert = null;

            foreach (var room in _Rooms)
            {
                if (room == excludeRoom)
                {
                    continue;
                }

                vert = room.GetVertInPos(point);
                if (vert != null)
                {
                    break;
                }
            }
            return(vert);
        }