Fix RigidBody overlap on the right + Add tests
This commit is contained in:
parent
9f9ec8dc65
commit
fa2d8e3e6e
4 changed files with 17994 additions and 445 deletions
|
@ -301,7 +301,7 @@ function getAvailableWidthsTwoLines(
|
||||||
|
|
||||||
const isOverlappingOnTheRight = rectRight >= unallocatedSpaceRight;
|
const isOverlappingOnTheRight = rectRight >= unallocatedSpaceRight;
|
||||||
if (isOverlappingOnTheRight) {
|
if (isOverlappingOnTheRight) {
|
||||||
return getAvailableWidthsRight(unallocatedSpace.x, rectRight);
|
return getAvailableWidthsRight(unallocatedSpace.x, rectX);
|
||||||
}
|
}
|
||||||
|
|
||||||
return getAvailableWidthsMiddle(unallocatedSpace.x, unallocatedSpaceRight, rectX, rectRight);
|
return getAvailableWidthsMiddle(unallocatedSpace.x, unallocatedSpaceRight, rectX, rectRight);
|
||||||
|
@ -320,31 +320,31 @@ function getAvailableWidthsLeft(unallocatedSpaceRight: number, rectRight: number
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAvailableWidthsRight(unalloctedSpaceX: number, rectRight: number): ISizePointer[] {
|
function getAvailableWidthsRight(unallocatedSpaceX: number, rectX: number): ISizePointer[] {
|
||||||
if (rectRight - unalloctedSpaceX <= 0) {
|
if (rectX - unallocatedSpaceX <= 0) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
x: unalloctedSpaceX,
|
x: unallocatedSpaceX,
|
||||||
width: rectRight - unalloctedSpaceX
|
width: rectX - unallocatedSpaceX
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAvailableWidthsMiddle(
|
function getAvailableWidthsMiddle(
|
||||||
unalloctedSpaceX: number,
|
unallocatedSpaceX: number,
|
||||||
unallocatedSpaceRight: number,
|
unallocatedSpaceRight: number,
|
||||||
rectX: number,
|
rectX: number,
|
||||||
rectRight: number
|
rectRight: number
|
||||||
): ISizePointer[] {
|
): ISizePointer[] {
|
||||||
const sizePointers: ISizePointer[] = [];
|
const sizePointers: ISizePointer[] = [];
|
||||||
|
|
||||||
if (rectX - unalloctedSpaceX > 0) {
|
if (rectX - unallocatedSpaceX > 0) {
|
||||||
sizePointers.push({
|
sizePointers.push({
|
||||||
x: unalloctedSpaceX,
|
x: unallocatedSpaceX,
|
||||||
width: rectX - unalloctedSpaceX
|
width: rectX - unallocatedSpaceX
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4837
src/tests/resources/montantMustImpose.json
Normal file
4837
src/tests/resources/montantMustImpose.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,436 +0,0 @@
|
||||||
{
|
|
||||||
"history": [
|
|
||||||
{
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "main",
|
|
||||||
"TypeCounters": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Add container",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 75,
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "main",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Select container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 75,
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Change property of container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": "7",
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Change property of container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": "",
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Change property of container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": "2",
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Change property of container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": "20",
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Change property of container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": "200",
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Change property of container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": "2000",
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Change property of container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": "20000",
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": false,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LastAction": "Change property of container Container-0",
|
|
||||||
"MainContainer": {
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"children": [],
|
|
||||||
"properties": {
|
|
||||||
"id": "Container-0",
|
|
||||||
"parentId": "main",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"isRigidBody": true,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
},
|
|
||||||
"userData": {
|
|
||||||
"type": "Container"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"id": "main",
|
|
||||||
"parentId": "null",
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"width": 2000,
|
|
||||||
"height": 100,
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
},
|
|
||||||
"userData": {}
|
|
||||||
},
|
|
||||||
"SelectedContainerId": "Container-0",
|
|
||||||
"TypeCounters": {
|
|
||||||
"Container": 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"historyCurrentStep": 10,
|
|
||||||
"configuration": {
|
|
||||||
"AvailableContainers": [
|
|
||||||
{
|
|
||||||
"Type": "Container",
|
|
||||||
"Width": 75,
|
|
||||||
"Height": 100,
|
|
||||||
"Style": {
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "green"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"AvailableSymbols": [],
|
|
||||||
"MainContainer": {
|
|
||||||
"Type": "Container",
|
|
||||||
"Width": 2000,
|
|
||||||
"Height": 100,
|
|
||||||
"Style": {
|
|
||||||
"fillOpacity": 0,
|
|
||||||
"stroke": "black"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
13148
src/tests/resources/squeezeChassis2.json
Normal file
13148
src/tests/resources/squeezeChassis2.json
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue