diff --git a/src/Components/Editor/Behaviors/RigidBodyBehaviors.ts b/src/Components/Editor/Behaviors/RigidBodyBehaviors.ts index b683baa..7e3a1f6 100644 --- a/src/Components/Editor/Behaviors/RigidBodyBehaviors.ts +++ b/src/Components/Editor/Behaviors/RigidBodyBehaviors.ts @@ -240,39 +240,49 @@ function getAvailableWidths( /** * Returns the unallocated widths between two lines in 1D - * @param min1 left of the first line - * @param max1 rigth of the first line - * @param min2 left of the second line - * @param max2 right of the second line + * @param unalloctedSpaceLeft left of the first line + * @param unallocatedSpaceRight rigth of the first line + * @param rectLeft left of the second line + * @param rectRight right of the second line * @returns Available widths */ function getAvailableWidthsTwoLines( - min1: number, - max1: number, - min2: number, - max2: number + unalloctedSpaceLeft: number, + unallocatedSpaceRight: number, + rectLeft: number, + rectRight: number ): ISizePointer[] { - if (min2 < min1 && max2 > max1) { + if (unallocatedSpaceRight < rectLeft || + unalloctedSpaceLeft > rectRight + ) { + // object 1 and 2 are not overlapping + return [{ + x: unalloctedSpaceLeft, + width: unallocatedSpaceRight - unalloctedSpaceLeft + }]; + } + + if (rectLeft < unalloctedSpaceLeft && rectRight > unallocatedSpaceRight) { // object 2 is overlapping full width return []; } - if (min1 >= min2) { + if (unalloctedSpaceLeft >= rectLeft) { // object 2 is partially overlapping on the left return [ { - x: max2, - width: max1 - max2 + x: rectRight, + width: unallocatedSpaceRight - rectRight } ]; } - if (max2 >= max1) { + if (rectRight >= unallocatedSpaceRight) { // object 2 is partially overlapping on the right return [ { - x: min2, - width: max2 - min1 + x: rectLeft, + width: rectRight - unalloctedSpaceLeft } ]; } @@ -280,12 +290,12 @@ function getAvailableWidthsTwoLines( // object 2 is overlapping in the middle return [ { - x: min1, - width: min2 - min1 + x: unalloctedSpaceLeft, + width: rectLeft - unalloctedSpaceLeft }, { - x: max2, - width: max1 - max2 + x: rectRight, + width: unallocatedSpaceRight - rectRight } ]; }