From d7218e63522ec82901c29083a0235aa269409ccf Mon Sep 17 00:00:00 2001 From: Dawid Pietrykowski Date: Fri, 28 Oct 2022 00:19:11 +0200 Subject: [PATCH] WIP Perpendicular spot regeneration --- Assets/Scenes/SampleScene.unity | 2 +- Assets/Scripts/ParkingManager.cs | 36 +++++++++++++++++++++++++++++++- Packages/manifest.json | 2 +- Packages/packages-lock.json | 2 +- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index e81440e..0624cf7 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -2932,7 +2932,7 @@ MonoBehaviour: mainPlanContainer: {fileID: 557435656} emergencyPlanContainer: {fileID: 632826360} reconfigurationToggle: {fileID: 441283505} - defaultPath: /home/dawp/Projects/Commisions/Parking/Assets/Data/Tablica2.csv + defaultPath: /home/dawp/Projects/Commisions/Parking/Assets/Data/Tablica5_2022-09-09.csv --- !u!1 &1347097428 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/ParkingManager.cs b/Assets/Scripts/ParkingManager.cs index 72f4a0e..04e1ee8 100644 --- a/Assets/Scripts/ParkingManager.cs +++ b/Assets/Scripts/ParkingManager.cs @@ -735,7 +735,8 @@ namespace Parking } - if (spot.Lane == 0 && Width / 2.0f - newX < 5.5f + 0.5f + 2.25f) { + float distToRightWall = Width / 2.0f - newX + SpotHeights[(int)newSize] / 2.0f; + if (spot.Lane == 0 && distToRightWall < 5.5f && (distToRightWall != 0)) { // Try to remove one spot next continue; } @@ -838,6 +839,39 @@ namespace Parking lastRightBorder = _spotMap[0][i].RightBorder; } + // return false; + + spaceNeeded = 2.25f; + // Try for perpendicular + for (int i = _spotMap[0].Count - 1; i >= -1; i--) { + + float leftBorder; + if (i >= 0) { + leftBorder = _spotMap[0][i].LeftBorder; + } + else + leftBorder = Width / 2.0f; + + if (leftBorder - lastRightBorder >= spaceNeeded) { + newPosition.x = (lastRightBorder + 0.5f + SpotHeights[(int)size] / 2.0f); + newPosition.y = (-Height / 2.0f) + 2.25f / 2.0f; + float nextBorder = GetNextBorderVectical(newPosition, 0, true, size, true); + float spotBorder = -Height / 2.0f + SpotHeights[(int) size]; + if(nextBorder - spotBorder < 5.5f) + continue; + Spot newSpot = new Spot(size, false); + //newPosition.x = (lastRightBorder + SpotHeights[(int)size] / 2.0f); + newSpot.Perpendicular = false; + newSpot.GameObject = Instantiate(_spotPrefabs[(int)size], + newPosition, Quaternion.Euler(0, 0, 90), mainPlanContainer); + _spotMap[0].Add(newSpot); + _spotMap[0].Sort((a, b) => Comparer.Default.Compare(b.Position.x, a.Position.x)); + return true; + } + if (i >= 0) + lastRightBorder = _spotMap[0][i].RightBorder; + } + return false; // newPosition.y = bottomBorder + SpotHeights[(int) newSize] / 2.0f; diff --git a/Packages/manifest.json b/Packages/manifest.json index c424c09..de16b41 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -2,7 +2,7 @@ "dependencies": { "com.unity.collab-proxy": "1.17.2", "com.unity.feature.2d": "1.0.0", - "com.unity.ide.rider": "3.0.15", + "com.unity.ide.rider": "3.0.16", "com.unity.ide.visualstudio": "2.0.16", "com.unity.ide.vscode": "1.2.5", "com.unity.test-framework": "1.1.31", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 31b0e97..af4c5cb 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -125,7 +125,7 @@ } }, "com.unity.ide.rider": { - "version": "3.0.15", + "version": "3.0.16", "depth": 0, "source": "registry", "dependencies": {