/// <summary> /// X軸上のポイントを設定する /// </summary> /// <param name="rect">設定したいRect</param> private void SetLeftOneRect(PlacableRect rect) { var conflicts = GetConflictRects(rect, placedRects); rect.rect.X = _minPos; SetPlacableRect(ref rect.rect, conflicts); }
/// <summary> /// 2つのRectを比較してコンフリクトする可能性のあるRectのリストを返す /// </summary> /// <param name="placable">判定対象のRect</param> /// <param name="cmpList">コンフリクト判定するRectのリスト</param> /// <returns>コンフリクト可能性のあるRectのリスト</returns> private List <PlacableRect> GetConflictRects(PlacableRect placable, List <PlacableRect> cmpList) { List <PlacableRect> retRects = new List <PlacableRect>(); if (placable.rect.Height == 0) { return(retRects); } foreach (var rect in cmpList) { if (IsConflictRectVertical(ref placable.rect, ref rect.rect)) { if (rect.rect.Height == 0) { continue; } retRects.Add(rect); } } return(retRects); }
/// <summary> /// X軸上のポイントを設定する /// </summary> /// <param name="rect">設定したいRect</param> private void SetLeftOneRect(PlacableRect rect) { var conflicts = GetConflictRects(rect, placedRects); rect.rect.X = _minPos; SetPlacableRect(ref rect.rect, conflicts); }
/// <summary> /// 2つのRectを比較してコンフリクトする可能性のあるRectのリストを返す /// </summary> /// <param name="placable">判定対象のRect</param> /// <param name="cmpList">コンフリクト判定するRectのリスト</param> /// <returns>コンフリクト可能性のあるRectのリスト</returns> private List<PlacableRect> GetConflictRects(PlacableRect placable, List<PlacableRect> cmpList) { List<PlacableRect> retRects = new List<PlacableRect>(); if (placable.rect.Height == 0) { return retRects; } foreach (var rect in cmpList) { if (IsConflictRectVertical(ref placable.rect, ref rect.rect)) { if (rect.rect.Height == 0) { continue; } retRects.Add(rect); } } return retRects; }