diff --git a/.gitignore b/.gitignore index 29ff97f..449fd5b 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,25 @@ /[Aa]ssets/[Ss]treamingAssets/aa/* .vscode -/Assets/Scripts/*.meta \ No newline at end of file +/[Aa]ssets/Scripts/*.meta +Assets/Scripts/Car/Car.cs.meta +Assets/Scripts/Car/CarData.cs.meta +Assets/Scripts/Roads/Node/SpawnNodeData.cs +Assets/Scripts/Roads/Node/PermanentNode.cs.meta +Assets/Scripts/Roads/Node/SpawnNode.cs.meta +Assets/Scripts/Roads/Node/SpawnNodeData.cs.meta +Assets/Scripts/Roads/Node/NodeData.cs.meta +Assets/Scripts/Roads/Node/Node.cs.meta +Assets/Scripts/Roads/Node/ExitNodeData.cs.meta +Assets/Scripts/Roads/Node/ExitNode.cs.meta +Assets/Scripts/Roads/Node/CustomNode.cs.meta +Assets/Scripts/Roads/RoadEdit.cs.meta +Assets/Scripts/Roads/Roads.cs.meta +Assets/Scripts/Roads/RoadData.cs.meta +Assets/Scripts/Roads/Road.cs.meta +Assets/Scripts/Roads/Node.meta +Assets/Scripts/Primitives/NewtonPolynom.cs.meta +Assets/Scripts/Primitives/FlatCircleRenderer.cs.meta +Assets/Scripts/Primitives/FlatBezierRenderer.cs.meta +Assets/Scripts/Primitives/Bezier.cs.meta +Assets/Scripts/Car/Route.cs.meta diff --git a/.gitignore b/.gitignore index 29ff97f..449fd5b 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,25 @@ /[Aa]ssets/[Ss]treamingAssets/aa/* .vscode -/Assets/Scripts/*.meta \ No newline at end of file +/[Aa]ssets/Scripts/*.meta +Assets/Scripts/Car/Car.cs.meta +Assets/Scripts/Car/CarData.cs.meta +Assets/Scripts/Roads/Node/SpawnNodeData.cs +Assets/Scripts/Roads/Node/PermanentNode.cs.meta +Assets/Scripts/Roads/Node/SpawnNode.cs.meta +Assets/Scripts/Roads/Node/SpawnNodeData.cs.meta +Assets/Scripts/Roads/Node/NodeData.cs.meta +Assets/Scripts/Roads/Node/Node.cs.meta +Assets/Scripts/Roads/Node/ExitNodeData.cs.meta +Assets/Scripts/Roads/Node/ExitNode.cs.meta +Assets/Scripts/Roads/Node/CustomNode.cs.meta +Assets/Scripts/Roads/RoadEdit.cs.meta +Assets/Scripts/Roads/Roads.cs.meta +Assets/Scripts/Roads/RoadData.cs.meta +Assets/Scripts/Roads/Road.cs.meta +Assets/Scripts/Roads/Node.meta +Assets/Scripts/Primitives/NewtonPolynom.cs.meta +Assets/Scripts/Primitives/FlatCircleRenderer.cs.meta +Assets/Scripts/Primitives/FlatBezierRenderer.cs.meta +Assets/Scripts/Primitives/Bezier.cs.meta +Assets/Scripts/Car/Route.cs.meta diff --git a/Assets/Scripts/Car/Car.cs b/Assets/Scripts/Car/Car.cs index 07dfb2e..0102886 100644 --- a/Assets/Scripts/Car/Car.cs +++ b/Assets/Scripts/Car/Car.cs @@ -71,7 +71,7 @@ private float getDistance(Car car) { if (car.road == this.road) { - //return this.roadPositon - car.roadPositon; + return car.roadPositon - this.roadPositon; } Road commonRoad = car.road; float otherPosition = car.roadPositon; @@ -88,7 +88,7 @@ } private bool needsBrakingForCar(Car car) { - if (car.road == road && roadPositon > car.roadPositon) { + if (car.road == this.road && this.roadPositon > car.roadPositon) { return false; } float distance = getDistance(car); @@ -107,10 +107,6 @@ Road currentRoad = road; float currentRoadPosition = roadPositon; int currentRoadIndex = roadIndex; - List carsToCheck = new List(); - foreach (Car car in currentRoad.carsOnRoute) { - carsToCheck.Add(car); - } int steps = 30; for (int i = 1; i <= steps; i++) { currentRoadPosition += stoppingDistance / steps; @@ -122,17 +118,20 @@ } currentRoadPosition -= currentRoad.path.length; currentRoad = route.roads[currentRoadIndex]; - foreach (Car car in currentRoad.carsOnRoute) { - if (!carsToCheck.Contains(car)) { - carsToCheck.Add(car); - } - } } if (needsBraking(totalDistance, getMaxSpeed(currentRoad, currentRoadPosition))) { return true; } } end: + List carsToCheck = new List(); + for (int i = this.roadIndex; i < this.route.roads.Count; i++) { + foreach (Car car in this.route.roads[i].carsOnRoute) { + if (!carsToCheck.Contains(car)) { + carsToCheck.Add(car); + } + } + } foreach (Car car in carsToCheck) { if (car != this && needsBrakingForCar(car)) { return true; diff --git a/.gitignore b/.gitignore index 29ff97f..449fd5b 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,25 @@ /[Aa]ssets/[Ss]treamingAssets/aa/* .vscode -/Assets/Scripts/*.meta \ No newline at end of file +/[Aa]ssets/Scripts/*.meta +Assets/Scripts/Car/Car.cs.meta +Assets/Scripts/Car/CarData.cs.meta +Assets/Scripts/Roads/Node/SpawnNodeData.cs +Assets/Scripts/Roads/Node/PermanentNode.cs.meta +Assets/Scripts/Roads/Node/SpawnNode.cs.meta +Assets/Scripts/Roads/Node/SpawnNodeData.cs.meta +Assets/Scripts/Roads/Node/NodeData.cs.meta +Assets/Scripts/Roads/Node/Node.cs.meta +Assets/Scripts/Roads/Node/ExitNodeData.cs.meta +Assets/Scripts/Roads/Node/ExitNode.cs.meta +Assets/Scripts/Roads/Node/CustomNode.cs.meta +Assets/Scripts/Roads/RoadEdit.cs.meta +Assets/Scripts/Roads/Roads.cs.meta +Assets/Scripts/Roads/RoadData.cs.meta +Assets/Scripts/Roads/Road.cs.meta +Assets/Scripts/Roads/Node.meta +Assets/Scripts/Primitives/NewtonPolynom.cs.meta +Assets/Scripts/Primitives/FlatCircleRenderer.cs.meta +Assets/Scripts/Primitives/FlatBezierRenderer.cs.meta +Assets/Scripts/Primitives/Bezier.cs.meta +Assets/Scripts/Car/Route.cs.meta diff --git a/Assets/Scripts/Car/Car.cs b/Assets/Scripts/Car/Car.cs index 07dfb2e..0102886 100644 --- a/Assets/Scripts/Car/Car.cs +++ b/Assets/Scripts/Car/Car.cs @@ -71,7 +71,7 @@ private float getDistance(Car car) { if (car.road == this.road) { - //return this.roadPositon - car.roadPositon; + return car.roadPositon - this.roadPositon; } Road commonRoad = car.road; float otherPosition = car.roadPositon; @@ -88,7 +88,7 @@ } private bool needsBrakingForCar(Car car) { - if (car.road == road && roadPositon > car.roadPositon) { + if (car.road == this.road && this.roadPositon > car.roadPositon) { return false; } float distance = getDistance(car); @@ -107,10 +107,6 @@ Road currentRoad = road; float currentRoadPosition = roadPositon; int currentRoadIndex = roadIndex; - List carsToCheck = new List(); - foreach (Car car in currentRoad.carsOnRoute) { - carsToCheck.Add(car); - } int steps = 30; for (int i = 1; i <= steps; i++) { currentRoadPosition += stoppingDistance / steps; @@ -122,17 +118,20 @@ } currentRoadPosition -= currentRoad.path.length; currentRoad = route.roads[currentRoadIndex]; - foreach (Car car in currentRoad.carsOnRoute) { - if (!carsToCheck.Contains(car)) { - carsToCheck.Add(car); - } - } } if (needsBraking(totalDistance, getMaxSpeed(currentRoad, currentRoadPosition))) { return true; } } end: + List carsToCheck = new List(); + for (int i = this.roadIndex; i < this.route.roads.Count; i++) { + foreach (Car car in this.route.roads[i].carsOnRoute) { + if (!carsToCheck.Contains(car)) { + carsToCheck.Add(car); + } + } + } foreach (Car car in carsToCheck) { if (car != this && needsBrakingForCar(car)) { return true; diff --git a/Assets/Scripts/Roads/Node/SpawnNodeData.cs b/Assets/Scripts/Roads/Node/SpawnNodeData.cs index 3db61bb..b122bd2 100644 --- a/Assets/Scripts/Roads/Node/SpawnNodeData.cs +++ b/Assets/Scripts/Roads/Node/SpawnNodeData.cs @@ -18,7 +18,7 @@ timeLeft = interval; ExitNodeData target = targets[Random.Range(0, targets.Length)]; Route route = new Route(node, target.node); - if (route.isValid) { + if (route.isValid && route.roads[0].carsOnRoute.Count == 0) { new Car(route, transform, config); } }