Basic reconfiguration added
This commit is contained in:
parent
1d16f1dc7e
commit
a2c9647681
3
.gitignore
vendored
3
.gitignore
vendored
@ -74,5 +74,8 @@ crashlytics-build.properties
|
|||||||
/[Aa]ssets/[Ss]treamingAssets/aa.meta
|
/[Aa]ssets/[Ss]treamingAssets/aa.meta
|
||||||
/[Aa]ssets/[Ss]treamingAssets/aa/*
|
/[Aa]ssets/[Ss]treamingAssets/aa/*
|
||||||
|
|
||||||
|
# Lock files
|
||||||
|
**/.~lock*
|
||||||
|
|
||||||
# Notes
|
# Notes
|
||||||
/Notes/
|
/Notes/
|
||||||
|
@ -1 +0,0 @@
|
|||||||
,davp,arch-desktop,04.09.2022 23:00,file:///home/davp/.config/libreoffice/4;
|
|
@ -532,7 +532,7 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 557435655}
|
m_GameObject: {fileID: 557435655}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: -1.6363324, y: 1.5066413, z: -0.28673837}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@ -647,7 +647,7 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 632826359}
|
m_GameObject: {fileID: 632826359}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: -1.6363324, y: 1.5066413, z: -0.28673837}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
|
@ -47,6 +47,9 @@ namespace Parking
|
|||||||
public bool Reserved = false;
|
public bool Reserved = false;
|
||||||
public int ReservedPriority = 0;
|
public int ReservedPriority = 0;
|
||||||
public ParkingPreference ParkingDirection = ParkingPreference.Any;
|
public ParkingPreference ParkingDirection = ParkingPreference.Any;
|
||||||
|
public int Lane = 0;
|
||||||
|
public bool Perpendicular = true;
|
||||||
|
public bool AlignToTop = true;
|
||||||
|
|
||||||
public Spot(Size size, bool flipped)
|
public Spot(Size size, bool flipped)
|
||||||
{
|
{
|
||||||
|
@ -29,7 +29,7 @@ namespace Parking
|
|||||||
[SerializeField] public Transform mainPlanContainer;
|
[SerializeField] public Transform mainPlanContainer;
|
||||||
[SerializeField] public Transform emergencyPlanContainer;
|
[SerializeField] public Transform emergencyPlanContainer;
|
||||||
|
|
||||||
private readonly float[] _spotHeights = {3.5f, 4f, 5f, 7.5f};
|
private readonly float[] _spotHeights = {4f, 4.5f, 5f, 7.5f};
|
||||||
|
|
||||||
private readonly List<List<Spot>> _spotMap = new()
|
private readonly List<List<Spot>> _spotMap = new()
|
||||||
{new List<Spot>(), new List<Spot>(), new List<Spot>(), new List<Spot>()};
|
{new List<Spot>(), new List<Spot>(), new List<Spot>(), new List<Spot>()};
|
||||||
@ -231,6 +231,7 @@ namespace Parking
|
|||||||
driver.GameObject.GetComponentInChildren<TextMeshProUGUI>().transform.rotation =
|
driver.GameObject.GetComponentInChildren<TextMeshProUGUI>().transform.rotation =
|
||||||
Quaternion.Euler(new Vector3(0, 0, spot.Flipped ? 180 : 0));
|
Quaternion.Euler(new Vector3(0, 0, spot.Flipped ? 180 : 0));
|
||||||
driver.GameObject.transform.position = spot.GameObject.transform.position;
|
driver.GameObject.transform.position = spot.GameObject.transform.position;
|
||||||
|
driver.GameObject.transform.localPosition += new Vector3(0, 0, -1);
|
||||||
driver.GameObject.transform.rotation =
|
driver.GameObject.transform.rotation =
|
||||||
Quaternion.Euler(new Vector3(0, 0, spot.Flipped ? 180 : 0));
|
Quaternion.Euler(new Vector3(0, 0, spot.Flipped ? 180 : 0));
|
||||||
}
|
}
|
||||||
@ -242,6 +243,8 @@ namespace Parking
|
|||||||
|
|
||||||
private void ReconfigureSpots()
|
private void ReconfigureSpots()
|
||||||
{
|
{
|
||||||
|
List<GameObject> prefabs = new List<GameObject>()
|
||||||
|
{spotPrefabA, spotPrefabB, spotPrefabC};
|
||||||
int[] freeSpots = GetFreeSpotCount();
|
int[] freeSpots = GetFreeSpotCount();
|
||||||
var nextCars = GetNextCars(10);
|
var nextCars = GetNextCars(10);
|
||||||
int[] plannedSpots = {0, 0, 0, 0};
|
int[] plannedSpots = {0, 0, 0, 0};
|
||||||
@ -255,8 +258,41 @@ namespace Parking
|
|||||||
if (neededSpots.Sum() > 5) {
|
if (neededSpots.Sum() > 5) {
|
||||||
Debug.Log($"Needed spots = {neededSpots[0]} {neededSpots[1]} {neededSpots[2]} {neededSpots[3]}");
|
Debug.Log($"Needed spots = {neededSpots[0]} {neededSpots[1]} {neededSpots[2]} {neededSpots[3]}");
|
||||||
Debug.Log("Attempting reconfiguration...");
|
Debug.Log("Attempting reconfiguration...");
|
||||||
}
|
|
||||||
|
|
||||||
|
for (int size = 0; size < 3; size++) {
|
||||||
|
bool foundReplacement = true;
|
||||||
|
while (foundReplacement && neededSpots[size] != 0) {
|
||||||
|
foundReplacement = false;
|
||||||
|
foreach (var t in _spotMap) {
|
||||||
|
foreach (Spot spot in t) {
|
||||||
|
if ((int) spot.Size > size && spot.Free && spot.Lane != 3 && spot.Size != Size.D) {
|
||||||
|
foundReplacement = true;
|
||||||
|
|
||||||
|
float diff = (_spotHeights[(int)spot.Size] - _spotHeights[size]) / 2.0f;
|
||||||
|
if (!spot.AlignToTop)
|
||||||
|
diff *= -1;
|
||||||
|
|
||||||
|
spot.Size = (Size) size;
|
||||||
|
Vector3 position = Vector3.zero;
|
||||||
|
Quaternion rotation = Quaternion.identity;
|
||||||
|
if (spot.GameObject != null) {
|
||||||
|
position = spot.GameObject.transform.position;
|
||||||
|
rotation = spot.GameObject.transform.rotation;
|
||||||
|
Destroy(spot.GameObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
spot.GameObject = Instantiate(prefabs[size],
|
||||||
|
position + new Vector3(0, diff, 0), rotation, mainPlanContainer);
|
||||||
|
|
||||||
|
goto whileEnd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
whileEnd:;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int[] GetFreeSpotCount()
|
private int[] GetFreeSpotCount()
|
||||||
@ -353,6 +389,7 @@ namespace Parking
|
|||||||
new Vector3(currentX,
|
new Vector3(currentX,
|
||||||
currentY + (alignTop ? -1 : 1) * spotSizes[(int) spotMap[i][j].Size] / 2.0f, 0);
|
currentY + (alignTop ? -1 : 1) * spotSizes[(int) spotMap[i][j].Size] / 2.0f, 0);
|
||||||
|
|
||||||
|
spotMap[i][j].AlignToTop = alignTop;
|
||||||
|
|
||||||
spotMap[i][j].GameObject.transform.rotation =
|
spotMap[i][j].GameObject.transform.rotation =
|
||||||
Quaternion.Euler(new Vector3(0, 0, spotMap[i][j].Flipped ? 180 : 0));
|
Quaternion.Euler(new Vector3(0, 0, spotMap[i][j].Flipped ? 180 : 0));
|
||||||
@ -360,6 +397,8 @@ namespace Parking
|
|||||||
bool frontalParking = !parkingFromTop ^ flipped;
|
bool frontalParking = !parkingFromTop ^ flipped;
|
||||||
spotMap[i][j].ParkingDirection = frontalParking ? ParkingPreference.Front : ParkingPreference.Back;
|
spotMap[i][j].ParkingDirection = frontalParking ? ParkingPreference.Front : ParkingPreference.Back;
|
||||||
|
|
||||||
|
spotMap[i][j].Lane = i;
|
||||||
|
|
||||||
currentX += 2.25f;
|
currentX += 2.25f;
|
||||||
|
|
||||||
flipped = !flipped;
|
flipped = !flipped;
|
||||||
@ -406,6 +445,7 @@ namespace Parking
|
|||||||
Vector3 position = new Vector3(currentX, currentY + 2.25f/2.0f, 0);
|
Vector3 position = new Vector3(currentX, currentY + 2.25f/2.0f, 0);
|
||||||
spawnedSpot = Instantiate(Instance.spotPrefabC, position,
|
spawnedSpot = Instantiate(Instance.spotPrefabC, position,
|
||||||
Quaternion.Euler(new Vector3(0, 0, 90)), emergencyPlanContainer);
|
Quaternion.Euler(new Vector3(0, 0, 90)), emergencyPlanContainer);
|
||||||
|
|
||||||
currentX -= 5;
|
currentX -= 5;
|
||||||
}else {
|
}else {
|
||||||
bool alignTop = i % 2 != 0;
|
bool alignTop = i % 2 != 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user