Пример #1
0
        public void Intersections_Diagonal()
        {
            var shape = new InternalPath(new LinearLineSegment(new PointF(0, 0), new PointF(10, 10)), false);

            PointF[] buffer = shape.FindIntersections(new PointF(0, 10), new PointF(10, 0)).ToArray();

            Assert.Single(buffer);
            Assert.Equal(new PointF(5, 5), buffer[0]);
        }
        public void Intersections_Diagonal_and_straight_Hit()
        {
            InternalPath shape = new InternalPath(new LinearLineSegment(new PointF(0, 0), new PointF(4, 4)), false);

            PointF[] buffer = shape.FindIntersections(new PointF(3, 10), new PointF(3, 0)).ToArray();

            Assert.Single(buffer);
            Assert.Equal(new PointF(3, 3), buffer[0]);
        }
Пример #3
0
        [InlineData(620, 150, 50, Pi)] // wrap about end of path
        public void PointOnPath(float distance, float expectedX, float expectedY, float expectedAngle)
        {
            InternalPath shape = Create(new PointF(50, 50), new Size(200, 60));
            SegmentInfo  point = shape.PointAlongPath(distance);

            Assert.Equal(expectedX, point.Point.X, 4);
            Assert.Equal(expectedY, point.Point.Y, 4);
            Assert.Equal(expectedAngle, point.Angle, 4);
        }
Пример #4
0
        public void IndexOutoufRangeException()
        {
            var p = new InternalPath(new PointF[] { new Vector2(0, 0), new Vector2(0.000000001f, 0), new Vector2(0, 0.000000001f) }, true);

            IEnumerable <PointF> inter = p.FindIntersections(Vector2.One, Vector2.Zero);

            // if simplified to single point then we should never have an intersection
            Assert.Empty(inter);
        }
Пример #5
0
        public void Intersections_Diagonal()
        {
            var shape = new InternalPath(new LinearLineSegment(new Vector2(0, 0), new Vector2(10, 10)), false);

            var buffer = shape.FindIntersections(new Vector2(0, 10), new Vector2(10, 0)).ToArray();

            Assert.Equal(1, buffer.Length);
            Assert.Equal(new Vector2(5, 5), buffer[0]);
        }
Пример #6
0
        public void Intersections_Diagonal_and_straight_Hit()
        {
            var shape = new InternalPath(new LinearLineSegment(new Vector2(0, 0), new Vector2(4, 4)), false);

            var buffer = shape.FindIntersections(new Vector2(3, 10), new Vector2(3, 0)).ToArray();

            Assert.Equal(1, buffer.Length);
            Assert.Equal(new Vector2(3, 3), buffer[0]);
        }
Пример #7
0
        public void Intersections_buffer()
        {
            InternalPath shape  = Create(new PointF(0, 0), new Size(10, 10));
            var          buffer = new PointF[shape.PointCount];
            int          hits   = shape.FindIntersections(new PointF(5, -10), new PointF(5, 20), buffer);

            Assert.Equal(2, hits);
            Assert.Equal(new PointF(5, 0), buffer[0]);
            Assert.Equal(new PointF(5, 10), buffer[1]);
        }
Пример #8
0
        public void Intersections_enumerabe_openpath()
        {
            InternalPath shape = Create(new PointF(0, 0), new Size(10, 10), false);

            PointF[] buffer = shape.FindIntersections(new PointF(5, -10), new PointF(5, 20)).ToArray();

            Assert.Equal(2, buffer.Length);
            Assert.Equal(new PointF(5, 0), buffer[0]);
            Assert.Equal(new PointF(5, 10), buffer[1]);
        }
        void Start()
        {
            currentPath = new InternalPath()
            {
                halfHeight = halfHeight
            };

            terrain = GameManager.Instance.currentMainHandler.terrainHandler.MyTerrain;

            StartCoroutine(TestOnGround(1f));
        }
Пример #10
0
        public void MultipleLineSegmentsSimplePathsAreMerged()
        {
            var seg1 = new LinearLineSegment(new PointF(0, 0), new PointF(2, 2));
            var seg2 = new LinearLineSegment(new PointF(4, 4), new PointF(5, 5));

            var path = new InternalPath(new ILineSegment[] { seg1, seg2 }, true);

            Assert.Contains(new PointF(0, 0), path.Points().ToArray());
            Assert.DoesNotContain(new PointF(2, 2), path.Points().ToArray());
            Assert.DoesNotContain(new PointF(4, 4), path.Points().ToArray());
            Assert.Contains(new PointF(5, 5), path.Points().ToArray());
        }
Пример #11
0
        public void Bounds()
        {
            var seg1 = new LinearLineSegment(new Vector2(0, 0), new Vector2(2, 2));
            var seg2 = new LinearLineSegment(new Vector2(4, 4), new Vector2(5, 5));

            var path = new InternalPath(new ILineSegment[] { seg1, seg2 }, true);

            Assert.Equal(0, path.Bounds.Left);
            Assert.Equal(5, path.Bounds.Right);
            Assert.Equal(0, path.Bounds.Top);
            Assert.Equal(5, path.Bounds.Bottom);
        }
Пример #12
0
        public void PointInPolygon_OpenPath()
        {
            LinearLineSegment seg1 = new LinearLineSegment(new PointF(0, 0), new PointF(0, 10), new PointF(10, 10), new PointF(10, 0));

            InternalPath p = new InternalPath(seg1, false);

            Assert.False(p.PointInPolygon(new PointF(5, 5)));

            InternalPath p2 = new InternalPath(seg1, true);

            Assert.True(p2.PointInPolygon(new PointF(5, 5f)));
        }
Пример #13
0
        public void MultipleLineSegmentsSimplePathsAreMerged()
        {
            var seg1 = new LinearLineSegment(new Vector2(0, 0), new Vector2(2, 2));
            var seg2 = new LinearLineSegment(new Vector2(4, 4), new Vector2(5, 5));

            var path = new InternalPath(new ILineSegment[] { seg1, seg2 }, true);

            Assert.Equal(new Vector2(0, 0), path.Points[0]);
            Assert.Equal(new Vector2(2, 2), path.Points[1]);
            Assert.Equal(new Vector2(4, 4), path.Points[2]);
            Assert.Equal(new Vector2(5, 5), path.Points[3]);
        }
Пример #14
0
        public void InternalPathLoosingSelfIntersectingPoint()
        {
            var line1      = new PointF[] { new Vector2(117f, 199f), new Vector2(31f, 210f), new Vector2(35f, 191f), new Vector2(117f, 199f), new Vector2(2f, 9f) };
            var path       = new InternalPath(new LinearLineSegment(line1), false);
            var pathPoints = path.Points();

            // all points must not be in the outline;
            foreach (var v in line1)
            {
                Assert.Contains(v, pathPoints);
            }
        }
Пример #15
0
        public void PointInPolygon_OpenPath()
        {
            var seg1 = new LinearLineSegment(new Vector2(0, 0), new Vector2(0, 10), new Vector2(10, 10), new Vector2(10, 0));

            var p = new InternalPath(seg1, false);

            Assert.False(p.PointInPolygon(new Vector2(5, 5)));

            var p2 = new InternalPath(seg1, true);

            Assert.True(p2.PointInPolygon(new Vector2(5, 5f)));
        }
Пример #16
0
        public void Bounds()
        {
            LinearLineSegment seg1 = new LinearLineSegment(new PointF(0, 0), new PointF(2, 2));
            LinearLineSegment seg2 = new LinearLineSegment(new PointF(4, 4), new PointF(5, 5));

            InternalPath path = new InternalPath(new ILineSegment[] { seg1, seg2 }, true);

            Assert.Equal(0, path.Bounds.Left);
            Assert.Equal(5, path.Bounds.Right);
            Assert.Equal(0, path.Bounds.Top);
            Assert.Equal(5, path.Bounds.Bottom);
        }
Пример #17
0
        public void Intersections_IntersectionRule_Nonezero()
        {
            var shape = new InternalPath(new LinearLineSegment(
                                             new PointF(1, 3),
                                             new PointF(1, 2),
                                             new PointF(5, 2),
                                             new PointF(5, 5),
                                             new PointF(2, 5),
                                             new PointF(2, 1),
                                             new PointF(3, 1),
                                             new PointF(3, 4),
                                             new PointF(4, 4),
                                             new PointF(3, 4)), true);

            PointF[] buffer = shape.FindIntersections(new PointF(0, 2.5f), new PointF(6, 2.5f), IntersectionRule.Nonzero).ToArray();

            Assert.Equal(2, buffer.Length);
        }
Пример #18
0
        protected override void CheckFolderStructure()
        {
            var data = Client.GetMetaData("/");

            if (!data.Contents.Any(x => x.Is_Dir && x.Name.ToLower() == InternalPath.ToLower()))
            {
                var newPath = string.Format(@"/{0}", InternalPath);
                Client.CreateFolder(newPath);
                Client.CreateFolder(string.Format(@"{0}/{1}", newPath, PhotoPath));
                Client.CreateFolder(string.Format(@"{0}/{1}", newPath, MemberPath));
                var readMeStream = GetReadmeStream();
                UploadFile("/", "readme.txt", readMeStream);
                readMeStream.Close();
            }

            if (!data.Contents.Any(x => x.Is_Dir && x.Name.ToLower() == ToPublishPath.ToLower()))
            {
                Client.CreateFolder(string.Format(@"/{0}", ToPublishPath));
            }
        }
Пример #19
0
        protected override void CheckFolderStructure()
        {
            var data = Task.Run(() => Client.Files.ListFolderAsync(string.Empty)).Result;

            if (!data.Entries.Any(x => x.IsFolder && x.PathLower == InternalPath.ToLower()))
            {
                var newPath = string.Format(@"/{0}", InternalPath);
                Task.Run(() => Client.Files.CreateFolderAsync(newPath)).RunSynchronously();
                Task.Run(() => Client.Files.CreateFolderAsync(string.Format(@"{0}/{1}", newPath, PhotoPath))).RunSynchronously();
                Task.Run(() => Client.Files.CreateFolderAsync(string.Format(@"{0}/{1}", newPath, MemberPath))).RunSynchronously();
                var readMeStream = GetReadmeStream();
                UploadFile("/", "readme.txt", readMeStream);
                readMeStream.Close();
            }

            if (!data.Entries.Any(x => x.IsFolder && x.PathLower == ToPublishPath.ToLower()))
            {
                Task.Run(() => Client.Files.CreateFolderAsync(string.Format(@"/{0}", ToPublishPath)).RunSynchronously());
            }
        }
 public ConfigRole[] Path()
 {
     return(InternalPath.ToArray());
 }
Пример #21
0
        private void GetFolderIds()
        {
            var folderItems = GetFolderInformation(AppRootFolder);

            if (!folderItems.Collection.Any())
            {
                return;
            }

            _toPublishFolderId = folderItems.Collection.First(f => f.Folder != null && f.Name.ToLower() == ToPublishPath.ToLower()).Id;
            var internPathId = folderItems.Collection.First(f => f.Folder != null && f.Name.ToLower() == InternalPath.ToLower()).Id;
            var folders      = GetFolderInformation("/drive/items/" + internPathId);

            _photosFolderId = folders.Collection.First(f => f.Folder != null && f.Name.ToLower() == PhotoPath.ToLower()).Id;
            _memberPathOrId = folders.Collection.First(f => f.Folder != null && f.Name.ToLower() == MemberPath.ToLower()).Id;
        }
Пример #22
0
        protected override void CheckForGlitchFolder()
        {
            if (!string.IsNullOrEmpty(_glitchPathId))
            {
                return;
            }

            var folderItems = GetFolderInformation(AppRootFolder);

            if (!folderItems.Collection.Any())
            {
                return;
            }

            var internPathId = folderItems.Collection.First(f => f.Folder != null && f.Name.ToLower().Equals(InternalPath.ToLower())).Id;
            var folders      = GetFolderInformation("/drive/items/" + internPathId);
            var folder       = folders.Collection.FirstOrDefault(f => f.Folder != null && f.Name.ToLower().Equals(GlitchPath.ToLower()));

            _glitchPathId = folder == null?CreateFolder("drive/items/" + internPathId, GlitchPath).Id : folder.Id;
        }
Пример #23
0
        public void PointInPolygon(TestPoint location, TestSize size, TestPoint point, bool isInside)
        {
            InternalPath shape = Create(location, size);

            Assert.Equal(isInside, shape.PointInPolygon(point));
        }
Пример #24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Polygon" /> class.
 /// </summary>
 /// <param name="segment">The segment.</param>
 public Polygon(ILineSegment segment)
 {
     this.innerPath      = new InternalPath(segment, true);
     this.pathCollection = new[] { this };
 }
Пример #25
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Polygon"/> class.
 /// </summary>
 /// <param name="segments">The segments.</param>
 public Polygon(params ILineSegment[] segments)
 {
     this.innerPath      = new InternalPath(segments, true);
     this.pathCollection = new[] { this };
 }