Переглянути джерело

Improved cars, created mass traffic, optimized

Marcel Zickler 2 роки тому
батько
коміт
bf4a3d085d

+ 1 - 1
Assets/PolygonCity/Prefabs/Props/SM_Prop_Billboard_Roof_01.prefab

@@ -48,7 +48,7 @@ MeshRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 148764}
   m_Enabled: 1
-  m_CastShadows: 1
+  m_CastShadows: 0
   m_ReceiveShadows: 1
   m_DynamicOccludee: 1
   m_MotionVectors: 1

+ 1 - 1
Assets/PolygonCity/Prefabs/Roads/SM_Env_Road_02.prefab

@@ -155,7 +155,7 @@ MeshRenderer:
   m_RenderingLayerMask: 1
   m_RendererPriority: 0
   m_Materials:
-  - {fileID: 2100000, guid: 1106348819e754523a3c4da331883f49, type: 2}
+  - {fileID: 2100000, guid: 5ef4bf80a393edb4aade7b34e29bd181, type: 2}
   m_StaticBatchInfo:
     firstSubMesh: 0
     subMeshCount: 0

+ 2 - 2
Assets/Prefabs/Cars/Convertable.prefab

@@ -455,12 +455,12 @@ Rigidbody:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1847148240549790}
   serializedVersion: 2
-  m_Mass: 1000
+  m_Mass: 1800
   m_Drag: 0
   m_AngularDrag: 0.05
   m_UseGravity: 1
   m_IsKinematic: 0
-  m_Interpolate: 0
+  m_Interpolate: 1
   m_Constraints: 0
   m_CollisionDetection: 0
 --- !u!114 &7137033629658202046

+ 11 - 11
Assets/Prefabs/Cars/SUV.prefab

@@ -362,12 +362,12 @@ Rigidbody:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 157676}
   serializedVersion: 2
-  m_Mass: 1000
+  m_Mass: 2000
   m_Drag: 0
   m_AngularDrag: 0.05
   m_UseGravity: 1
   m_IsKinematic: 0
-  m_Interpolate: 0
+  m_Interpolate: 1
   m_Constraints: 0
   m_CollisionDetection: 0
 --- !u!114 &1266725097120312596
@@ -383,12 +383,12 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   trafficSystem: {fileID: 0}
-  waypointThresh: 3
+  waypointThresh: 5
   raycastAnchor: {fileID: 1865297059863583701}
   raycastLength: 5
-  raySpacing: 8
+  raySpacing: 6
   raysNumber: 5
-  emergencyBrakeThresh: 1.5
+  emergencyBrakeThresh: 3
   slowDownThresh: 5
   vehicleStatus: 0
 --- !u!114 &4964375416919538269
@@ -403,14 +403,14 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 5021f9004f348d74abb4f0ae3ed02375, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  downForce: 100
-  maxAngle: 60
+  downForce: 300
+  maxAngle: 40
   steeringLerp: 5
-  steeringSpeedMax: 10
+  steeringSpeedMax: 15
   maxTorque: 500
-  brakeTorque: 30000
+  brakeTorque: 100000
   unitType: 0
-  minSpeed: 15
+  minSpeed: 2
   maxSpeed: 45
   leftWheelShape: {fileID: 3590927662457520146}
   rightWheelShape: {fileID: 2368949255394964899}
@@ -950,7 +950,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 6870940806869115480}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0.62, z: 2.375}
+  m_LocalPosition: {x: -0, y: 0.81, z: 2.38}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 477648}

+ 7 - 0
Assets/Prefabs/TrafficLight.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1f53b9d5e84f398448183d07d0ae1d96
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Scenes/MainScene.unity


+ 234 - 7
Assets/Scenes/TrafficScenes/TrafficBikeScene.unity

@@ -11646,7 +11646,9 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   carPool: {fileID: 93233581}
   trafficSystem: {fileID: 553908397}
-  SpawnRate: 10
+  carSpacing: 15
+  carSize: 4.5
+  bufferZone: 15
 --- !u!114 &93233581
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -11664,7 +11666,7 @@ MonoBehaviour:
   - {fileID: 1847148240549790, guid: 48e00d6d12d61428580baf9d177d4de6, type: 3}
   - {fileID: 157676, guid: 1c801847369424623a4780d1ecb98545, type: 3}
   pooledCars: []
-  poolSize: 40
+  poolSize: 100
 --- !u!4 &93466135 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 493762, guid: 99e3d52be60050d4883633a4b0e12226,
@@ -14904,12 +14906,21 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: d34b092cf55ce0e48be4ea9a5cad206f, type: 3}
---- !u!4 &124042956 stripped
+--- !u!4 &124042956
 Transform:
+  m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 8829470368112346785, guid: c32d7d83220164fa8901436adf7f3637,
     type: 3}
   m_PrefabInstance: {fileID: 296332182}
   m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1547026767}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &124288627
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -34762,6 +34773,36 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: a8075fecadfce7c4abe277fb835ca5c5, type: 3}
+--- !u!1 &282406828
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 282406829}
+  m_Layer: 0
+  m_Name: TrafficLight3 (Missing Prefab)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &282406829
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 282406828}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!4 &282433883 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 487096, guid: b307a3e7dc3e3ec409ff68b9cb1080ed,
@@ -36460,6 +36501,36 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 665552645}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &302100438
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 302100439}
+  m_Layer: 0
+  m_Name: TrafficLight4 (Missing Prefab)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &302100439
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 302100438}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!4 &302368634 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 478286, guid: 64b839200fb1c394abe8b5e1693c5cf4,
@@ -65676,7 +65747,8 @@ MonoBehaviour:
   arrowSizeWaypoint: 1
   arrowSizeIntersection: 0.5
   waypointSize: 0.5
-  collisionLayers: []
+  collisionLayers:
+  - TrafficCollider
   segments:
   - {fileID: 126365633}
   - {fileID: 728343570}
@@ -79125,12 +79197,21 @@ PrefabInstance:
       objectReference: {fileID: 2100000, guid: 97942cb5527e6f24eb8b8f5c86f8744d, type: 2}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 9384e4f7925dd0d47a003b910f826bf8, type: 3}
---- !u!4 &680210115 stripped
+--- !u!4 &680210115
 Transform:
+  m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 8829470368112346785, guid: c32d7d83220164fa8901436adf7f3637,
     type: 3}
   m_PrefabInstance: {fileID: 1446037240}
   m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 859479301}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!4 &680355806 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 468664, guid: a0fc9668797c0ba40bfd0a39fc67f2ed,
@@ -91229,12 +91310,21 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: eba1f7ece2536204bb30cc7ab64ae8bf, type: 3}
---- !u!4 &765455019 stripped
+--- !u!4 &765455019
 Transform:
+  m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 8829470368112346785, guid: c32d7d83220164fa8901436adf7f3637,
     type: 3}
   m_PrefabInstance: {fileID: 8829470367399767050}
   m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1927366225}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &765563717
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -101146,6 +101236,22 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 426566971}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &859479301
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 680210115}
+  m_Layer: 0
+  m_Name: Missing Prefab (Dummy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!4 &859531386 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 454224, guid: 015249c005381134e896458eb3ed0bb1,
@@ -132208,6 +132314,22 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1087583922}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &1133568696
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1413696276}
+  m_Layer: 0
+  m_Name: Missing Prefab (Dummy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!4 &1133582624 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 454224, guid: 015249c005381134e896458eb3ed0bb1,
@@ -144750,6 +144872,36 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1422905164}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &1243341510
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1243341511}
+  m_Layer: 0
+  m_Name: TrafficLight (Missing Prefab)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1243341511
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1243341510}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 7
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1243487263
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -163550,12 +163702,21 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: dbda624de6be8fc4391bb7008161cce8, type: 3}
---- !u!4 &1413696276 stripped
+--- !u!4 &1413696276
 Transform:
+  m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 8829470368112346785, guid: c32d7d83220164fa8901436adf7f3637,
     type: 3}
   m_PrefabInstance: {fileID: 312944898}
   m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1133568696}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1413757270
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -179890,6 +180051,22 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: a5b72bb8afb9a3241ae5eb12007ad0ac, type: 3}
+--- !u!1 &1547026767
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 124042956}
+  m_Layer: 0
+  m_Name: Missing Prefab (Dummy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!1001 &1547377007
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -193169,6 +193346,36 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1786562438}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &1664879322
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1664879323}
+  m_Layer: 0
+  m_Name: TrafficLight2 (Missing Prefab)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1664879323
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1664879322}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 6
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!4 &1664967173 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 499442, guid: 24785933d7ceaad4a800f09511c371db,
@@ -214441,6 +214648,10 @@ Transform:
   - {fileID: 680210115}
   - {fileID: 1413696276}
   - {fileID: 124042956}
+  - {fileID: 302100439}
+  - {fileID: 282406829}
+  - {fileID: 1664879323}
+  - {fileID: 1243341511}
   m_Father: {fileID: 0}
   m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -226881,6 +227092,22 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 260ea4bf1ba71314c9c3833b491586bc, type: 3}
+--- !u!1 &1927366225
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 765455019}
+  m_Layer: 0
+  m_Name: Missing Prefab (Dummy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!4 &1927423776 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 463644, guid: ca5af9b35ab3f6d418a4a402844936e3,

+ 448 - 8
Assets/Scenes/TrafficScenes/TrafficLightsTestScene.unity

@@ -14654,12 +14654,21 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: d34b092cf55ce0e48be4ea9a5cad206f, type: 3}
---- !u!4 &124042956 stripped
+--- !u!4 &124042956
 Transform:
+  m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 8829470368112346785, guid: c32d7d83220164fa8901436adf7f3637,
     type: 3}
   m_PrefabInstance: {fileID: 296332182}
   m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1692298412}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &124288627
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -33754,7 +33763,7 @@ PrefabInstance:
     - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
         type: 3}
       propertyPath: driveType
-      value: 0
+      value: 2
       objectReference: {fileID: 0}
     - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
         type: 3}
@@ -33771,6 +33780,16 @@ PrefabInstance:
       propertyPath: steeringSpeedMax
       value: 15
       objectReference: {fileID: 0}
+    - target: {fileID: 8485239902145736706, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: m_Mass
+      value: 2000
+      objectReference: {fileID: 0}
+    - target: {fileID: 8485239902145736706, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: m_Interpolate
+      value: 1
+      objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 1c801847369424623a4780d1ecb98545, type: 3}
 --- !u!4 &276628849 stripped
@@ -52360,6 +52379,36 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 7518e6d86c572544cb2f51453141465f, type: 3}
+--- !u!1 &431000862
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 431000863}
+  m_Layer: 0
+  m_Name: TrafficLight4 (Missing Prefab)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &431000863
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 431000862}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &431014845
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -59902,6 +59951,36 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1288910660}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &510046685
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 510046686}
+  m_Layer: 0
+  m_Name: TrafficLight (Missing Prefab)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &510046686
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 510046685}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 7
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &511297458
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -61108,6 +61187,22 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: c1d46775cc1dffd41859257aad55f33c, type: 3}
+--- !u!1 &519104468
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 680210115}
+  m_Layer: 0
+  m_Name: Missing Prefab (Dummy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!4 &519390667 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 3096612912498399422, guid: e9cd064b2063c1d42b4e9a6948aa3a96,
@@ -64944,7 +65039,8 @@ MonoBehaviour:
   arrowSizeWaypoint: 1
   arrowSizeIntersection: 0.5
   waypointSize: 0.5
-  collisionLayers: []
+  collisionLayers:
+  - TrafficCollider
   segments:
   - {fileID: 126365633}
   - {fileID: 728343570}
@@ -73163,6 +73259,12 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 807576773}
   m_PrefabAsset: {fileID: 0}
+--- !u!4 &638779733 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545,
+    type: 3}
+  m_PrefabInstance: {fileID: 1765259385}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1001 &638981817
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -78408,12 +78510,21 @@ PrefabInstance:
       objectReference: {fileID: 2100000, guid: 97942cb5527e6f24eb8b8f5c86f8744d, type: 2}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 9384e4f7925dd0d47a003b910f826bf8, type: 3}
---- !u!4 &680210115 stripped
+--- !u!4 &680210115
 Transform:
+  m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 8829470368112346785, guid: c32d7d83220164fa8901436adf7f3637,
     type: 3}
   m_PrefabInstance: {fileID: 1446037240}
   m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519104468}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!4 &680355806 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 468664, guid: a0fc9668797c0ba40bfd0a39fc67f2ed,
@@ -90441,12 +90552,21 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: eba1f7ece2536204bb30cc7ab64ae8bf, type: 3}
---- !u!4 &765455019 stripped
+--- !u!4 &765455019
 Transform:
+  m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 8829470368112346785, guid: c32d7d83220164fa8901436adf7f3637,
     type: 3}
   m_PrefabInstance: {fileID: 8829470367399767050}
   m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 993246408}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &765563717
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -93861,6 +93981,12 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 66826657}
   m_PrefabAsset: {fileID: 0}
+--- !u!4 &797862995 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545,
+    type: 3}
+  m_PrefabInstance: {fileID: 1936204951}
+  m_PrefabAsset: {fileID: 0}
 --- !u!4 &797992720 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 404554, guid: 6c5cf72eed364734aa359fd03de15100,
@@ -113732,7 +113858,7 @@ Transform:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 967480043}
-  m_LocalRotation: {x: 0.32683188, y: 0.3516572, z: -0.13254067, w: 0.86715114}
+  m_LocalRotation: {x: 0.3268319, y: 0.35165724, z: -0.13254069, w: 0.86715114}
   m_LocalPosition: {x: 379.03, y: 6.94, z: -164.24}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children:
@@ -115981,6 +116107,22 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 015249c005381134e896458eb3ed0bb1, type: 3}
+--- !u!1 &993246408
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 765455019}
+  m_Layer: 0
+  m_Name: Missing Prefab (Dummy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!1001 &993333916
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -126352,6 +126494,36 @@ PrefabInstance:
       objectReference: {fileID: 2100000, guid: c29d9dff2056b1543bbb70ec32427a62, type: 2}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 694588147c2fd7e41b0105d7054a7f1a, type: 3}
+--- !u!1 &1091455853
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1091455854}
+  m_Layer: 0
+  m_Name: TrafficLight3 (Missing Prefab)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1091455854
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1091455853}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1092114766
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -139643,7 +139815,7 @@ Transform:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1210226322}
-  m_LocalRotation: {x: 0.32683188, y: 0.3516572, z: -0.13254067, w: 0.86715114}
+  m_LocalRotation: {x: 0.3268319, y: 0.35165724, z: -0.13254069, w: 0.86715114}
   m_LocalPosition: {x: 379.03, y: 6.94, z: -164.24}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
@@ -139721,6 +139893,36 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1108288950}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &1210653900
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1210653901}
+  m_Layer: 0
+  m_Name: TrafficLight2 (Missing Prefab)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1210653901
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1210653900}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 6
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1210804157
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -158643,6 +158845,8 @@ Transform:
   m_Children:
   - {fileID: 213221433}
   - {fileID: 1965586321}
+  - {fileID: 638779733}
+  - {fileID: 797862995}
   m_Father: {fileID: 0}
   m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -162480,12 +162684,21 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: dbda624de6be8fc4391bb7008161cce8, type: 3}
---- !u!4 &1413696276 stripped
+--- !u!4 &1413696276
 Transform:
+  m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 8829470368112346785, guid: c32d7d83220164fa8901436adf7f3637,
     type: 3}
   m_PrefabInstance: {fileID: 312944898}
   m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2006226091}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1822956122}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1413757270
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -195944,6 +196157,22 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1178952510}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &1692298412
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 124042956}
+  m_Layer: 0
+  m_Name: Missing Prefab (Dummy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!1001 &1692564248
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -205502,6 +205731,72 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 99e3d52be60050d4883633a4b0e12226, type: 3}
+--- !u!1001 &1765259385
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 1372011704}
+    m_Modifications:
+    - target: {fileID: 157676, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_Name
+      value: SUV Last
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_RootOrder
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 4.39
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 145.03
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 62.06
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: -0.99670684
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0.079892874
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: -0.008350433
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0.011087682
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 9.153
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 361.069
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 1.36
+      objectReference: {fileID: 0}
+    - target: {fileID: 2324734, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_Materials.Array.data[0]
+      value: 
+      objectReference: {fileID: 2100000, guid: 62e25ef75a2216f418d06453c9ad15cb, type: 2}
+    - target: {fileID: 1266725097120312596, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: trafficSystem
+      value: 
+      objectReference: {fileID: 553908397}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 1c801847369424623a4780d1ecb98545, type: 3}
 --- !u!1001 &1765835619
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -213208,6 +213503,10 @@ Transform:
   - {fileID: 680210115}
   - {fileID: 1413696276}
   - {fileID: 124042956}
+  - {fileID: 431000863}
+  - {fileID: 1091455854}
+  - {fileID: 1210653901}
+  - {fileID: 510046686}
   m_Father: {fileID: 0}
   m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -226289,6 +226588,131 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 260ea4bf1ba71314c9c3833b491586bc, type: 3}
+--- !u!1001 &1936204951
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 1372011704}
+    m_Modifications:
+    - target: {fileID: 157676, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_Name
+      value: SUV (1)
+      objectReference: {fileID: 0}
+    - target: {fileID: 157676, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_RootOrder
+      value: 3
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 4.42
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 140.6
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 89.45
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: -0.99670684
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0.079892874
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: -0.008350433
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0.011087682
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 9.153
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 361.069
+      objectReference: {fileID: 0}
+    - target: {fileID: 477648, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 1.36
+      objectReference: {fileID: 0}
+    - target: {fileID: 2324734, guid: 1c801847369424623a4780d1ecb98545, type: 3}
+      propertyPath: m_Materials.Array.data[0]
+      value: 
+      objectReference: {fileID: 2100000, guid: 62e25ef75a2216f418d06453c9ad15cb, type: 2}
+    - target: {fileID: 1266725097120312596, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: raySpacing
+      value: 6
+      objectReference: {fileID: 0}
+    - target: {fileID: 1266725097120312596, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: raycastLength
+      value: 8
+      objectReference: {fileID: 0}
+    - target: {fileID: 1266725097120312596, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: trafficSystem
+      value: 
+      objectReference: {fileID: 553908397}
+    - target: {fileID: 1266725097120312596, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: waypointThresh
+      value: 5
+      objectReference: {fileID: 0}
+    - target: {fileID: 1266725097120312596, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: emergencyBrakeThresh
+      value: 3
+      objectReference: {fileID: 0}
+    - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: maxAngle
+      value: 40
+      objectReference: {fileID: 0}
+    - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: minSpeed
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: downForce
+      value: 300
+      objectReference: {fileID: 0}
+    - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: driveType
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: maxTorque
+      value: 500
+      objectReference: {fileID: 0}
+    - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: brakeTorque
+      value: 100000
+      objectReference: {fileID: 0}
+    - target: {fileID: 4964375416919538269, guid: 1c801847369424623a4780d1ecb98545,
+        type: 3}
+      propertyPath: steeringSpeedMax
+      value: 15
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 1c801847369424623a4780d1ecb98545, type: 3}
 --- !u!1001 &1936267316
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -233602,6 +234026,22 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 723944466}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &2006226091
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1413696276}
+  m_Layer: 0
+  m_Name: Missing Prefab (Dummy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!4 &2006273846 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 485062, guid: 260ea4bf1ba71314c9c3833b491586bc,

+ 13 - 8
Assets/Scripts/TrafficSimulation/CarPool.cs

@@ -33,10 +33,6 @@ namespace TrafficSimulation{
                 pooledCars.Add(tmpInstance);
             }
         }
-        // Start is called before the first frame update
-        void Start()
-        {   
-        }
 
         public GameObject getCar(){
             foreach(GameObject car in pooledCars){
@@ -47,14 +43,23 @@ namespace TrafficSimulation{
             Debug.Log("no car free to use. returning null!");
             return null;
         }
-        public GameObject spawnCar(Transform spawnTranform){
+        public GameObject SpawnCar(Transform spawnTranform){
+            return SpawnCar(spawnTranform.position, spawnTranform.rotation, null);
+        }
+        public GameObject SpawnCar(Vector3 spawnPos, Quaternion spawnRot, Transform lookAt)
+        {
             GameObject car = this.getCar();
-            if(car == null){
+            if (car == null)
+            {
                 Debug.Log("No car was available. Spawn aborted");
                 return null;
             }
-            car.transform.position = spawnTranform.position;
-            car.transform.rotation = spawnTranform.rotation;
+            car.transform.position = spawnPos;
+            car.transform.rotation = spawnRot;
+            if(lookAt != null)
+            {
+                car.transform.LookAt(lookAt);
+            }
             car.SetActive(true);
             return car;
         }

+ 35 - 13
Assets/Scripts/TrafficSimulation/CarSpawner.cs

@@ -7,10 +7,10 @@ namespace TrafficSimulation{
     {
         public CarPool carPool;
         public TrafficSystem trafficSystem;
-        public float SpawnRate;
-
-        private List<float> lastSpawn = new List<float>();
-
+        
+        public float carSpacing;
+        public float carSize = 4.0f;
+        public float bufferZone = 3.0f;
         // Start is called before the first frame update
         void Start()
         {
@@ -18,14 +18,8 @@ namespace TrafficSimulation{
                 spawnOnSegment(segment);
             }
         }
-
-        // Update is called once per frame
-        void Update()
-        {
-        }
         
         void spawnOnSegment(Segment segment){
-            Debug.Log("Spawn on Segment");
             if(segment == null){ 
                 Debug.Log("Segment is null");
                 return;
@@ -34,9 +28,37 @@ namespace TrafficSimulation{
                 Debug.Log("Waypoints not set");
                 return;
             }
-            Transform spawnPos = segment.waypoints[0].transform;
-            spawnPos.LookAt(segment.waypoints[1].transform);
-            carPool.spawnCar(spawnPos);
+            float distance = 0.0f;
+            Waypoint lastWp = null;
+
+            foreach(Waypoint wp in segment.waypoints)
+            {
+                if(lastWp != null)
+                {
+                    distance += Vector3.Distance(lastWp.transform.position, wp.transform.position);
+                    float wpDistance = Vector3.Distance(lastWp.transform.position, wp.transform.position);
+                    wpDistance = Mathf.Floor(wpDistance);
+
+                    float spawnDistance = wpDistance;
+                    spawnDistance -= bufferZone;
+                    while(spawnDistance >= bufferZone)
+                    {
+                        Vector3 spawnPos = lastWp.transform.position;
+                        Quaternion spawnRot = lastWp.transform.rotation;
+                        Vector3 currentRoad = wp.transform.position - lastWp.transform.position;
+                        spawnPos += (currentRoad.normalized * (wpDistance - spawnDistance));
+                        carPool.SpawnCar(spawnPos,spawnRot,wp.transform);
+                        Debug.Log("spawn Car on Segment " + segment.name + " and Waypoint " + lastWp.name +  " in Distance " + (wpDistance - spawnDistance));
+                        spawnDistance -= carSize;
+                        spawnDistance -= carSpacing;
+                    }
+                }
+                lastWp = wp;
+            }
+            Debug.Log("Segment " + segment.name + "distance " + distance );
+            //Transform spawnPos = segment.waypoints[0].transform;
+            //spawnPos.LookAt(segment.waypoints[1].transform);
+            //carPool.spawnCar(spawnPos);
         }
     }
 }

+ 4 - 4
Assets/Scripts/TrafficSimulation/Intersection.cs

@@ -51,10 +51,10 @@ namespace TrafficSimulation{
             if(IsAlreadyInIntersection(_other.gameObject) || Time.timeSinceLevelLoad < .5f) return;
 
             if(_other.tag == "AutonomousVehicle" && intersectionType == IntersectionType.STOP){
-                Debug.Log("Trigger Stop!");
+                //Debug.Log("Trigger Stop!");
                 TriggerStop(_other.gameObject);
             }else if(_other.tag == "AutonomousVehicle" && intersectionType == IntersectionType.TRAFFIC_LIGHT){
-                Debug.Log("Trigger Light!");
+                //Debug.Log("Trigger Light!");
                 TriggerLight(_other.gameObject);
             }
         }
@@ -103,12 +103,12 @@ namespace TrafficSimulation{
             VehicleAI vehicleAI = _vehicle.GetComponent<VehicleAI>();
             int vehicleSegment = vehicleAI.GetSegmentVehicleIsIn();
             if(IsRedLightSegment(vehicleSegment)){
-                Debug.Log("Stop Vehicle");
+                //Debug.Log("Stop Vehicle");
                 vehicleAI.vehicleStatus = Status.STOP;
                 vehiclesQueue.Add(_vehicle);
             }
             else{
-                Debug.Log("Go Vehicle");
+                //Debug.Log("Go Vehicle");
                 vehicleAI.vehicleStatus = Status.GO;
             }
         }

+ 7 - 7
Assets/Scripts/TrafficSimulation/IntersectionPreset.cs

@@ -24,7 +24,7 @@ namespace TrafficSimulation{
         void Update()
         {
             if(triggerIn.isTriggered){
-                handleInTrigger();
+                HandleInTrigger();
             }
 
             if(triggerOut.isTriggered){
@@ -32,7 +32,7 @@ namespace TrafficSimulation{
             }
         }
 
-        void handleInTrigger(){
+        void HandleInTrigger(){
             triggerIn.isTriggered = false;
             Debug.Log("In Trigger");
 
@@ -40,7 +40,7 @@ namespace TrafficSimulation{
                 Debug.Log("Preset already running");
                 return;
             }
-            spawnCars();
+            SpawnCars();
             this.presetRunning = true;
         }
         void handleOutTrigger(){
@@ -50,21 +50,21 @@ namespace TrafficSimulation{
                 Debug.Log("Preset wasn´t running, so couldn´t be ended.");
                 return;
             }
-            despawnCars();
+            DespawnCars();
             this.presetRunning = false;
         }
 
-        void spawnCars(){
+        void SpawnCars(){
             if(this.cars == null){
                 Debug.Log("Found no Car Object. Can´t init preset");
                 return;
             }
             foreach (Transform carSpawn in this.cars.transform)
             {
-                this.activeCars.Add(this.carPool.spawnCar(carSpawn));
+                this.activeCars.Add(this.carPool.SpawnCar(carSpawn));
             }
         }
-        void despawnCars(){
+        void DespawnCars(){
             Debug.Log("despawnCars");
             foreach (GameObject car in this.activeCars)
             {

+ 26 - 16
Assets/Scripts/TrafficSimulation/VehicleAI.cs

@@ -74,9 +74,9 @@ namespace TrafficSimulation {
             SetWaypointVehicleIsOn();
         }
 
-        void Update()
+        private void FixedUpdate()
         {
-            if(trafficSystem == null)
+            if (trafficSystem == null)
                 return;
 
             WaypointChecker();
@@ -115,7 +115,6 @@ namespace TrafficSimulation {
 
         void MoveVehicle()
         {
-
             //Default, full acceleration, no break and no steering
             float acc = 1;
             float brake = 0;
@@ -131,9 +130,10 @@ namespace TrafficSimulation {
             //Check if the car has to stop
             if(vehicleStatus == Status.STOP)
             {
-                Debug.Log("STOP");
+                //Debug.Log(gameObject.name + ":STOP");
                 acc = 0;
                 brake = 1;
+
                 //wheelDrive.maxSpeed = Mathf.Min(wheelDrive.maxSpeed / 2f, 5f);
                 wheelDrive.maxSpeed = 0f;
             }
@@ -141,7 +141,7 @@ namespace TrafficSimulation {
                 
                 //Not full acceleration if have to slow down
                 if(vehicleStatus == Status.SLOW_DOWN){
-                    Debug.Log("SLOW DOWN");
+                    //Debug.Log(gameObject.name + ": SLOW DOWN");
                     acc = .3f;
                     brake = 0f;
                 }
@@ -149,17 +149,16 @@ namespace TrafficSimulation {
                 //If planned to steer, decrease the speed
                 if(futureSteering > .3f || futureSteering < -.3f)
                 {
-                    Debug.Log("Future Steering. Decrease Speed");
+                    //Debug.Log( gameObject.name + " :Future Steering. Decrease Speed");
                     wheelDrive.maxSpeed = Mathf.Min(wheelDrive.maxSpeed, wheelDrive.steeringSpeedMax);
                 }
 
                 //2. Check if there are obstacles which are detected by the radar
                 float hitDist;
                 GameObject obstacle = GetDetectedObstacles(out hitDist);
-
                 //Check if we hit something
                 if(obstacle != null){
-
+                    //Debug.Log(gameObject.name + ": Obstacle detected  " + obstacle.name + "!");
                     WheelDrive otherVehicle = null;
                     otherVehicle = obstacle.GetComponent<WheelDrive>();
 
@@ -170,17 +169,26 @@ namespace TrafficSimulation {
                         float dotFront = Vector3.Dot(this.transform.forward, otherVehicle.transform.forward);
 
                         //If detected front vehicle max speed is lower than ego vehicle, then decrease ego vehicle max speed
-                        if(otherVehicle.maxSpeed < wheelDrive.maxSpeed  && otherVehicle.maxSpeed > 0 && dotFront > .8f)
+                        //if(otherVehicle.maxSpeed < wheelDrive.maxSpeed  && otherVehicle.maxSpeed > 0 && dotFront > .8f)
+                        if (otherVehicle.maxSpeed < wheelDrive.maxSpeed && otherVehicle.maxSpeed > 0 && dotFront > .8f)
                         {
                             float ms = Mathf.Max(wheelDrive.GetSpeedMS(otherVehicle.maxSpeed) - .5f, .1f);
-                            Debug.Log("Front Vehicle slower. lower speed to " + wheelDrive.GetSpeedUnit(ms) + "!");
+                            //Debug.Log(obstacle.name + " slower. lower speed of " +gameObject.name + " to " + wheelDrive.GetSpeedUnit(ms) + "!");
                             wheelDrive.maxSpeed = wheelDrive.GetSpeedUnit(ms);
                         }
+                        else if(otherVehicle.maxSpeed == 0f)
+                        {
+                            //Debug.Log(gameObject.name + ": Stopping because of " + obstacle.name  +"!");
+                            acc = 0;
+                            brake = 1;
+                            wheelDrive.maxSpeed = 0f;
+                        }
+
                         
                         //If the two vehicles are too close, and facing the same direction, brake the ego vehicle
                         if(hitDist < emergencyBrakeThresh && dotFront > .8f)
                         {
-                            Debug.Log("Two close, same direction. Breaking");
+                            //Debug.Log(gameObject.name + "Two close, same direction. Breaking");
                             acc = 0;
                             brake = 1;
                             wheelDrive.maxSpeed = Mathf.Max(wheelDrive.maxSpeed / 2f, wheelDrive.minSpeed);
@@ -189,7 +197,7 @@ namespace TrafficSimulation {
                         //If the two vehicles are too close, and not facing same direction, slight make the ego vehicle go backward
                         else if(hitDist < emergencyBrakeThresh && dotFront <= .8f)
                         {
-                            Debug.Log("Too Close, not same direction. Go Backward");
+                            //Debug.Log(gameObject.name + "Too Close, not same direction. Go Backward");
                             acc = -.3f;
                             brake = 0f;
                             wheelDrive.maxSpeed = Mathf.Max(wheelDrive.maxSpeed / 2f, wheelDrive.minSpeed);
@@ -198,21 +206,23 @@ namespace TrafficSimulation {
                             float dotRight = Vector3.Dot(this.transform.forward, otherVehicle.transform.right);                            
                             if(dotRight > 0.1f)//Right
                             {
-                                Debug.Log("Steer left");
+                                //Debug.Log("Steer left");
                                 steering = -.2f;
                             }else if(dotRight < -0.1f) //Left
                             {
-                                Debug.Log("Steer right");
+                                //Debug.Log("Steer right");
                                 steering = .2f;
                             }else //Middle
                             {
-                                Debug.Log("Steer Middle");
+                                //Debug.Log("Steer Middle");
                                  steering = -.7f;
                             } 
                         }
                         //If the two vehicles are getting close, slow down their speed
-                        else if(hitDist < slowDownThresh)
+                        else if(hitDist < slowDownThresh && acc > 0)
                         {
+
+                            //Debug.Log(gameObject.name + ": Too Close, Slow Down!");
                             acc = .5f;
                             brake = 0f;
                             //wheelDrive.maxSpeed = Mathf.Max(wheelDrive.maxSpeed / 1.5f, wheelDrive.minSpeed);

+ 2 - 0
Packages/manifest.json

@@ -1,11 +1,13 @@
 {
   "dependencies": {
+    "com.unity.cinemachine": "2.6.11",
     "com.unity.collab-proxy": "1.3.9",
     "com.unity.formats.fbx": "3.2.1-preview.2",
     "com.unity.ide.rider": "1.2.1",
     "com.unity.ide.visualstudio": "2.0.3",
     "com.unity.ide.vscode": "1.2.3",
     "com.unity.inputsystem": "1.0.1",
+    "com.unity.memoryprofiler": "0.4.2-preview.1",
     "com.unity.render-pipelines.universal": "8.2.0",
     "com.unity.test-framework": "1.1.22",
     "com.unity.textmeshpro": "3.0.1",

+ 23 - 0
Packages/packages-lock.json

@@ -7,6 +7,13 @@
       "dependencies": {},
       "url": "https://packages.unity.com"
     },
+    "com.unity.cinemachine": {
+      "version": "2.6.11",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {},
+      "url": "https://packages.unity.com"
+    },
     "com.unity.collab-proxy": {
       "version": "1.3.9",
       "depth": 0,
@@ -14,6 +21,13 @@
       "dependencies": {},
       "url": "https://packages.unity.com"
     },
+    "com.unity.editorcoroutines": {
+      "version": "1.0.0",
+      "depth": 1,
+      "source": "registry",
+      "dependencies": {},
+      "url": "https://packages.unity.com"
+    },
     "com.unity.ext.nunit": {
       "version": "1.0.6",
       "depth": 1,
@@ -62,6 +76,15 @@
       "dependencies": {},
       "url": "https://packages.unity.com"
     },
+    "com.unity.memoryprofiler": {
+      "version": "0.4.2-preview.1",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.editorcoroutines": "1.0.0"
+      },
+      "url": "https://packages.unity.com"
+    },
     "com.unity.recorder": {
       "version": "2.2.0-preview.4",
       "depth": 1,