Esempio n. 1
0
            public PotentialDiagonal(GroundEdge edgeA, GroundEdge edgeB, GroundPoint sharedPoint)
            {
                EdgeA       = edgeA;
                EdgeB       = edgeB;
                SharedPoint = sharedPoint;
                GroundPoint otherPointA = edgeA.GetOtherPoint(sharedPoint);
                GroundPoint otherPointB = edgeB.GetOtherPoint(sharedPoint);

                Key = GetKey(otherPointA.Index, otherPointB.Index);
            }
Esempio n. 2
0
 public GroundEdge(MainGrid grid, GroundPoint pointA, GroundPoint pointB)
 {
     this.grid = grid;
     if (pointA.Index == pointB.Index)
     {
         throw new ArgumentException("Can't make an edge out of two points with the same ID");
     }
     PointA = pointA.Index < pointB.Index ? pointA : pointB;
     PointB = pointA.Index < pointB.Index ? pointB : pointA;
 }
Esempio n. 3
0
        private IEnumerable <PotentialDiagonal> GetPotentialDiagonals(GroundPoint point)
        {
            List <GroundEdge> edgeList = edgesTable[point];

            for (int i = 0; i < edgeList.Count; i++)
            {
                int nextIndex = (i + 1) % edgeList.Count;
                yield return(new PotentialDiagonal(edgeList[i], edgeList[nextIndex], point));
            }
        }
Esempio n. 4
0
        private void DoEasePoint(GroundPoint point, float targetCellLength)
        {
            Vector2 normalAverage = Vector2.zero;

            GroundPoint[] allConnections = point.DirectConnections.Concat(point.DiagonalConnections).ToArray();
            foreach (GroundPoint connection in allConnections)
            {
                Vector2 diff       = point.Position - connection.Position;
                Vector2 diffNormal = diff.normalized * targetCellLength;
                Vector2 targetPos  = connection.Position + diffNormal;
                normalAverage += targetPos;
            }
            normalAverage /= allConnections.Length;
            point.Position = normalAverage;
        }
Esempio n. 5
0
 public GroundPoint GetDiagonalPoint(GroundPoint point)
 {
     return(diagonalsTable[point]);
 }
Esempio n. 6
0
 public GroundEdge GetEdge(GroundPoint pointA, GroundPoint pointB)
 {
     return(Edges.First(edge => (edge.PointA == pointA && edge.PointB == pointB) ||
                        (edge.PointA == pointB && edge.PointB == pointA)));
 }
 public GroundPointBuilder(GroundPoint point)
     : this(point.Index, point.Position)
 {
 }
Esempio n. 8
0
 public GroundPoint GetOtherPoint(GroundPoint point)
 {
     return(PointA == point ? PointB : PointA);
 }
Esempio n. 9
0
 internal IEnumerable <GroundQuad> GetConnectedQuads(GroundPoint gridPoint)
 {
     return(polyTable[gridPoint]);
 }
Esempio n. 10
0
 internal IEnumerable <GroundEdge> GetEdges(GroundPoint gridPoint)
 {
     return(edgesTable[gridPoint]);
 }
Esempio n. 11
0
        private float GetSignedAngle(GroundEdge item, GroundPoint point)
        {
            GroundPoint otherPoint = item.GetOtherPoint(point);

            return(Vector2.SignedAngle(Vector2.up, otherPoint.Position - point.Position));
        }