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); }
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); }