public MapRectData() { // 最大の区画分しか作らない(使い回しを考える) _data = new RectData[SplitConst.MaxRectNum]; for (int i = 0; i < SplitConst.MaxRectNum; ++i) { _data[i] = new RectData(); } }
/// <summary> /// 隣接している区画同士のデータをつなげる /// </summary> public void ConnectNeighbor(RectData targetData) { var targetRect = targetData.rect; foreach (var data in _data) { if (data == targetData) { continue; } var rect = data.rect; // 上 if (targetRect.yMin == rect.yMax) { targetData.nearbyTop.Add(data); data.nearbyBottom.Add(data); continue; } // 下 if (targetRect.yMax == rect.yMin) { targetData.nearbyBottom.Add(data); data.nearbyTop.Add(data); continue; } // 左 if (targetRect.xMin == rect.xMax) { targetData.nearbyLeft.Add(data); data.nearbyRight.Add(data); continue; } // 右 if (targetRect.xMax == rect.yMin) { targetData.nearbyRight.Add(data); data.nearbyLeft.Add(data); continue; } } }