Esempio n. 1
0
    private List <LightColumn> columnsThatColumnJustConnectedWith(LightColumn colAtY, int y)
    {
        List <LightColumn> result = new List <LightColumn>();

        bool colExtentMinusOneEqualY = colAtY.extent() - 1 == y;
        bool colStartEqualY          = colAtY.startP == y;

        foreach (PTwo co in DirectionUtil.SurroundingPTwoCoordsFromPTwo(colAtY.coord))
        {
            DiscreteDomainRangeList <LightColumn> licols = m_lightColumnMap[co];
            LightColumn justConnected = null;
            if (colExtentMinusOneEqualY)
            {
                justConnected = licols.rangeWithStartEqual(y);
            }
            else if (colStartEqualY)
            {
                justConnected = licols.rangeWithExtentMinusOneEqual(y);
            }
            else
            {
                justConnected = licols.rangeWithStartAndExtentMinusOneEqual(y);
            }

            if (justConnected != null)
            {
                result.Add(justConnected);
            }
        }
        return(result);
    }
Esempio n. 2
0
    public List <LightColumn> lightColumnsAdjacentToAndAtleastPartiallyAbove(Coord coord)
    {
        List <LightColumn> result = new List <LightColumn>();

        foreach (PTwo surroundingCo in DirectionUtil.SurroundingPTwoCoordsFromPTwo(PTwo.PTwoXZFromCoord(coord)))
        {
            DiscreteDomainRangeList <LightColumn> adjRangeList = this.lightColumnListAtOrNull(surroundingCo.s, surroundingCo.t);
            if (adjRangeList == null)
            {
                continue;
            }
            for (int i = 0; i < adjRangeList.Count; ++i)
            {
                LightColumn adjLightColumn = adjRangeList[i];
                if (adjLightColumn.extent() > coord.y)
                {
                    b.bug("actually added one");
                    result.Add(adjLightColumn);
                }
            }
        }
        return(result);
    }