Example #1
0
        private void PermissiveFov(int sourceX, int sourceY, permissiveMaskT mask)
        {
            fovStateT state = new fovStateT();

            state.m_Source = new Point2I(sourceX, sourceY);
            state.m_Mask   = mask;
            state.m_Board  = mask.m_Board;
            // state.isBlocked = isBlocked;
            // state.visit = visit;
            // state.context = context;

            int quadrantCount = 4;

            Point2I[] quadrants = { new Point2I(1,   1), new Point2I(-1, 1),
                                    new Point2I(-1, -1), new Point2I(1, -1) };

            Point2I[] extents = { new Point2I(mask.m_East, mask.m_North),
                                  new Point2I(mask.m_West, mask.m_North),
                                  new Point2I(mask.m_West, mask.m_South),
                                  new Point2I(mask.m_East, mask.m_South) };
            int       quadrantIndex = 0;

            for (; quadrantIndex < quadrantCount; ++quadrantIndex)
            {
                state.m_Quadrant      = quadrants[quadrantIndex];
                state.m_Extent        = extents[quadrantIndex];
                state.m_QuadrantIndex = quadrantIndex;
                CalculateFovQuadrant(state);
            }
        }
Example #2
0
        public void VisitFieldOfView(int x, int y, int distance)
        {
            permissiveMaskT mask = new permissiveMaskT();

            mask.m_East          = mask.m_North = mask.m_South = mask.m_West = distance;
            mask.m_Mask          = null;
            mask.m_FovType       = FovType.CIRCLE;
            mask.m_DistPlusOneSq = (distance + 1) * (distance + 1);
            mask.m_Board         = m_Board;
            PermissiveFov(x, y, mask);
        }
Example #3
0
 private int DoesPermissiveVisit(permissiveMaskT mask, int x, int y)
 {
     if (mask.m_FovType == FovType.SQUARE)
     {
         return(1);
     }
     else if (mask.m_FovType == FovType.CIRCLE)
     {
         if (x * x + y * y < mask.m_DistPlusOneSq)
         {
             return(1);
         }
         else
         {
             return(0);
         }
     }
     return(1);
 }