Skip to content
Snippets Groups Projects
Commit 9560c9c7 authored by gawen.ackerman's avatar gawen.ackerman :robot:
Browse files

BUGFIX : RoadGeneration error when End was colliding with another piece....

BUGFIX : RoadGeneration error when End was colliding with another piece. Wasn't never replaced afterward
parent be9751b2
Branches
No related tags found
No related merge requests found
...@@ -35,9 +35,10 @@ public class RoadGenerator : MonoBehaviour ...@@ -35,9 +35,10 @@ public class RoadGenerator : MonoBehaviour
void Start() void Start()
{ {
//int seed = (int)System.DateTime.Now.Ticks; int seed = (int)System.DateTime.Now.Ticks;
//Debug.Log("Seed custom utilisé : " + seed); //seed = 1728374951;
Random.InitState(-1324498718); Debug.Log("SEED : " + seed);
Random.InitState(seed);
ApplyPlayerPrefs(this.roadPartBlueprintList); ApplyPlayerPrefs(this.roadPartBlueprintList);
// Fix iterations // Fix iterations
...@@ -150,6 +151,21 @@ public class RoadGenerator : MonoBehaviour ...@@ -150,6 +151,21 @@ public class RoadGenerator : MonoBehaviour
placedRoads.Add(nextRoadPart); placedRoads.Add(nextRoadPart);
} }
} }
// Ensures that if the very last road part (end) collided with any road part, to fix it and re-inject it.
GameObject lastPiece = gameObject.transform.childCount > 0 ? gameObject.transform.GetChild(gameObject.transform.childCount - 1).gameObject : null;
if (lastPiece == null || !lastPiece.name.StartsWith(roadPartEnd.gameObject.name))
{
Debug.LogWarning("Missing End road part. Forcing End placement.");
GameObject previousRoad = gameObject.transform.GetChild(gameObject.transform.childCount - 1).gameObject;
GameObject forcedEnd = SpawnRoadPart(roadPartEnd);
ConnectRoadParts(previousRoad, forcedEnd);
placedRoads.Add(forcedEnd);
}
// Allows to filter ALL destroyed road part.
placedRoads = placedRoads.Where(r => r != null).ToList();
LogManager.Instance.RegisterParcourLength(CalculateTotalDistanceFromStartEnd()); LogManager.Instance.RegisterParcourLength(CalculateTotalDistanceFromStartEnd());
} }
...@@ -251,6 +267,7 @@ public class RoadGenerator : MonoBehaviour ...@@ -251,6 +267,7 @@ public class RoadGenerator : MonoBehaviour
} }
badRoadPart = newRoadPart; badRoadPart = newRoadPart;
placedRoads.RemoveAll(r => r == null || r.name == badRoadPart.name);
// If every road part bluepint are still colliding, take one step back and try again // If every road part bluepint are still colliding, take one step back and try again
if (i == 1 && IsColliding(badRoadPart)) if (i == 1 && IsColliding(badRoadPart))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment