Example #1
0
        public MapRectData()
        {
            // 最大の区画分しか作らない(使い回しを考える)
            _data = new RectData[SplitConst.MaxRectNum];

            for (int i = 0; i < SplitConst.MaxRectNum; ++i)
            {
                _data[i] = new RectData();
            }
        }
Example #2
0
        /// <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;
                }
            }
        }