diff --git a/Assets/Main.unity b/Assets/Main.unity
index 9d1aec8..f1a4b5d 100644
--- a/Assets/Main.unity
+++ b/Assets/Main.unity
@@ -1801,6 +1801,64 @@ Transform:
m_Children: []
m_Father: {fileID: 924830808}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &980030819
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 980030821}
+ - component: {fileID: 980030820}
+ m_Layer: 0
+ m_Name: Traffic
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &980030820
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 980030819}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b9bb25da9b61d4849b3c17eff30adbf8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::TrafficLane
+ routeLength: 60
+ laneCenter: 0
+ vehiclePrefabs:
+ - {fileID: 1557020077158108179, guid: 7893264379c7b27449c0d5cd800de112, type: 3}
+ - {fileID: 6059035821173914762, guid: bf52a0f6f1d4ca94abedb85fa135a7cd, type: 3}
+ - {fileID: 7937761055385602081, guid: 692d27357d450044883464a7dc84418a, type: 3}
+ poolSize: 12
+ baseSpeed: 6
+ speedVariance: 0.05
+ spawnInterval: 0.5
+ spawnIntervalVariance: 0.4
+ minSpawnGap: 4
+ driftAmplitude: 0.05
+ driftFrequency: 0.08
+--- !u!4 &980030821
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 980030819}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
+ m_LocalPosition: {x: -0.28, y: 0, z: 37.23}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &1142443635
GameObject:
m_ObjectHideFlags: 0
@@ -3520,7 +3578,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
- m_IsActive: 1
+ m_IsActive: 0
--- !u!23 &7499497021674395898
MeshRenderer:
m_ObjectHideFlags: 0
@@ -3850,5 +3908,6 @@ SceneRoots:
- {fileID: 604712594}
- {fileID: 505702790}
- {fileID: 1142443636}
+ - {fileID: 980030821}
- {fileID: 465598214}
- {fileID: 303688530}
diff --git a/Assets/Scripts/Traffic.meta b/Assets/Scripts/Traffic.meta
new file mode 100644
index 0000000..ba4a2b4
--- /dev/null
+++ b/Assets/Scripts/Traffic.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9a186e998591ef46a976b06d5973e32
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Traffic/TrafficLane.cs b/Assets/Scripts/Traffic/TrafficLane.cs
new file mode 100644
index 0000000..82df533
--- /dev/null
+++ b/Assets/Scripts/Traffic/TrafficLane.cs
@@ -0,0 +1,264 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// Simulates a single lane of traffic by recycling a fixed pool of vehicle GameObjects.
+/// Vehicles travel along local +Z, with organic lateral drift driven by Perlin noise.
+///
+/// Usage:
+/// 1. Place this component on an empty GameObject aligned with the road lane.
+/// 2. Assign vehicle prefabs, tune speed and drift.
+/// 3. Duplicate and mirror-X for the opposite lane.
+///
+public class TrafficLane : MonoBehaviour
+{
+ // ── Route ─────────────────────────────────────────────────────────────────
+
+ [Header("Route")]
+ [Tooltip("Length of the lane in local +Z units. Vehicles are recycled at the far end.")]
+ public float routeLength = 80f;
+
+ [Tooltip("Local X position of the lane centre.")]
+ public float laneCenter = 0f;
+
+ // ── Vehicle Pool ──────────────────────────────────────────────────────────
+
+ [Header("Vehicle Pool")]
+ [Tooltip("Prefabs to randomly draw from when spawning. Can contain different vehicle types.")]
+ public GameObject[] vehiclePrefabs;
+
+ [Tooltip("Total number of vehicle instances kept alive at once.")]
+ [Range(1, 60)]
+ public int poolSize = 12;
+
+ // ── Speed ─────────────────────────────────────────────────────────────────
+
+ [Header("Speed")]
+ [Tooltip("Average forward speed in units / second.")]
+ public float baseSpeed = 6f;
+
+ [Tooltip("Per-vehicle speed spread as a fraction of baseSpeed (±).")]
+ [Range(0f, 0.5f)]
+ public float speedVariance = 0.2f;
+
+ // ── Spawn ─────────────────────────────────────────────────────────────────
+
+ [Header("Spawn")]
+ [Tooltip("Average seconds between consecutive spawns.")]
+ public float spawnInterval = 2.5f;
+
+ [Tooltip("Randomisation of spawn interval as a fraction (±).")]
+ [Range(0f, 0.9f)]
+ public float spawnIntervalVariance = 0.4f;
+
+ [Tooltip("Minimum clearance required at Z=0 before the next vehicle may enter.")]
+ public float minSpawnGap = 4f;
+
+ // ── Lateral Drift ─────────────────────────────────────────────────────────
+
+ [Header("Lateral Drift")]
+ [Tooltip("Maximum left / right deviation from lane centre (units).")]
+ public float driftAmplitude = 0.25f;
+
+ [Tooltip("Spatial frequency of the drift wave — lower = longer, lazier curves.")]
+ [Range(0.01f, 1f)]
+ public float driftFrequency = 0.08f;
+
+ // ── Private state ─────────────────────────────────────────────────────────
+
+ private class Agent
+ {
+ public GameObject go;
+ public float progress; // distance travelled along Z this trip
+ public float speed; // units / second for this trip
+ public float noiseRow; // unique Y coordinate in Perlin space for this trip
+ public bool active;
+ }
+
+ private readonly List pool = new();
+ private float spawnTimer;
+ private float nextSpawnDelay;
+
+ // ── Lifecycle ─────────────────────────────────────────────────────────────
+
+ private void Start()
+ {
+ if (vehiclePrefabs == null || vehiclePrefabs.Length == 0)
+ {
+ Debug.LogWarning("[TrafficLane] No vehicle prefabs assigned.", this);
+ enabled = false;
+ return;
+ }
+
+ BuildPool();
+ ScheduleNextSpawn();
+
+ // Scatter a few vehicles along the lane so it doesn't look empty at start.
+ PrewarmLane();
+ }
+
+ private void Update()
+ {
+ TickAgents();
+ TickSpawn();
+ }
+
+ // ── Pool construction ─────────────────────────────────────────────────────
+
+ private void BuildPool()
+ {
+ for (var i = 0; i < poolSize; i++)
+ {
+ var prefab = vehiclePrefabs[Random.Range(0, vehiclePrefabs.Length)];
+ var go = Instantiate(prefab, transform);
+ go.SetActive(false);
+ pool.Add(new Agent { go = go, noiseRow = Random.Range(0f, 100f) });
+ }
+ }
+
+ private void PrewarmLane()
+ {
+ // Spread inactive vehicles evenly so the lane looks populated from frame 1.
+ var step = routeLength / Mathf.Max(poolSize * 0.5f, 1f);
+ var z = Random.Range(0f, step);
+ foreach (var agent in pool)
+ {
+ if (z >= routeLength)
+ {
+ break;
+ }
+ Activate(agent, z);
+ z += step * Random.Range(0.7f, 1.3f);
+ }
+ }
+
+ // ── Per-frame tick ────────────────────────────────────────────────────────
+
+ private void TickAgents()
+ {
+ foreach (var agent in pool)
+ {
+ if (!agent.active)
+ {
+ continue;
+ }
+
+ agent.progress += agent.speed * Time.deltaTime;
+
+ if (agent.progress >= routeLength)
+ {
+ Deactivate(agent);
+ continue;
+ }
+
+ // Perlin noise: x-axis = position along route, y-axis = per-agent seed.
+ var noise = Mathf.PerlinNoise(agent.progress * driftFrequency, agent.noiseRow);
+ var lateral = laneCenter + (noise * 2f - 1f) * driftAmplitude;
+
+ var prev = agent.go.transform.localPosition;
+ var next = new Vector3(lateral, 0f, agent.progress);
+ agent.go.transform.localPosition = next;
+
+ // Face direction of travel, ignoring tiny sub-frame deltas.
+ var delta = next - prev;
+ if (delta.sqrMagnitude > 1e-6f)
+ {
+ agent.go.transform.localRotation = Quaternion.LookRotation(delta, Vector3.up);
+ }
+ }
+ }
+
+ private void TickSpawn()
+ {
+ spawnTimer += Time.deltaTime;
+ if (spawnTimer < nextSpawnDelay)
+ {
+ return;
+ }
+
+ spawnTimer = 0f;
+ ScheduleNextSpawn();
+
+ // Block spawn if another vehicle is still near the entry point.
+ foreach (var agent in pool)
+ {
+ if (agent.active && agent.progress < minSpawnGap)
+ {
+ return;
+ }
+ }
+
+ SpawnNext(0f);
+ }
+
+ // ── Helpers ───────────────────────────────────────────────────────────────
+
+ private void Activate(Agent agent, float startProgress)
+ {
+ agent.progress = startProgress;
+ agent.speed = baseSpeed * (1f + Random.Range(-speedVariance, speedVariance));
+ agent.noiseRow = Random.Range(0f, 100f);
+ agent.go.SetActive(true);
+ agent.active = true;
+
+ // Teleport silently to start position before enabling.
+ var noise = Mathf.PerlinNoise(startProgress * driftFrequency, agent.noiseRow);
+ var lateral = laneCenter + (noise * 2f - 1f) * driftAmplitude;
+ agent.go.transform.localPosition = new Vector3(lateral, 0f, startProgress);
+ }
+
+ private void SpawnNext(float startProgress)
+ {
+ foreach (var agent in pool)
+ {
+ if (!agent.active)
+ {
+ Activate(agent, startProgress);
+ return;
+ }
+ }
+ // Pool exhausted — skip this cycle.
+ }
+
+ private static void Deactivate(Agent agent)
+ {
+ agent.go.SetActive(false);
+ agent.active = false;
+ }
+
+ private void ScheduleNextSpawn()
+ {
+ var variance = spawnInterval * spawnIntervalVariance;
+ nextSpawnDelay = Mathf.Max(0.1f, spawnInterval + Random.Range(-variance, variance));
+ }
+
+ // ── Editor visualisation ──────────────────────────────────────────────────
+
+#if UNITY_EDITOR
+ private void OnDrawGizmosSelected()
+ {
+ var start = transform.TransformPoint(new Vector3(laneCenter, 0f, 0f));
+ var end = transform.TransformPoint(new Vector3(laneCenter, 0f, routeLength));
+
+ Gizmos.color = Color.yellow;
+ Gizmos.DrawLine(start, end);
+
+ // Drift envelope.
+ Gizmos.color = new Color(1f, 1f, 0f, 0.25f);
+ var left = transform.TransformPoint(new Vector3(laneCenter - driftAmplitude, 0f, 0f));
+ var right = transform.TransformPoint(new Vector3(laneCenter + driftAmplitude, 0f, 0f));
+ var leftEnd = transform.TransformPoint(new Vector3(laneCenter - driftAmplitude, 0f, routeLength));
+ var rightEnd = transform.TransformPoint(new Vector3(laneCenter + driftAmplitude, 0f, routeLength));
+ Gizmos.DrawLine(left, leftEnd);
+ Gizmos.DrawLine(right, rightEnd);
+ Gizmos.DrawLine(left, right);
+ Gizmos.DrawLine(leftEnd, rightEnd);
+
+ // Entry / exit markers.
+ Gizmos.color = Color.green;
+ Gizmos.DrawSphere(start, 0.3f);
+ Gizmos.color = Color.red;
+ Gizmos.DrawSphere(end, 0.3f);
+ }
+#endif
+}
diff --git a/Assets/Scripts/Traffic/TrafficLane.cs.meta b/Assets/Scripts/Traffic/TrafficLane.cs.meta
new file mode 100644
index 0000000..4b452a3
--- /dev/null
+++ b/Assets/Scripts/Traffic/TrafficLane.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: b9bb25da9b61d4849b3c17eff30adbf8
\ No newline at end of file
diff --git a/Assets/Temp/Skoda Kamiq.prefab b/Assets/Temp/Skoda Kamiq.prefab
new file mode 100644
index 0000000..5d1ae88
--- /dev/null
+++ b/Assets/Temp/Skoda Kamiq.prefab
@@ -0,0 +1,146 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1557020077158108179
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8678393413767825165}
+ m_Layer: 0
+ m_Name: Skoda Kamiq
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8678393413767825165
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1557020077158108179}
+ serializedVersion: 2
+ 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_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 5897071126227124009}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2325977463038497186
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5897071126227124009}
+ - component: {fileID: 7052644008610836356}
+ - component: {fileID: 1832160163738719301}
+ - component: {fileID: 5942392679462043245}
+ m_Layer: 0
+ m_Name: Dummy
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &5897071126227124009
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2325977463038497186}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.077, z: 0}
+ m_LocalScale: {x: 0.1793, y: 0.154, z: 0.4241}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8678393413767825165}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7052644008610836356
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2325977463038497186}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1832160163738719301
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2325977463038497186}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &5942392679462043245
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2325977463038497186}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
diff --git a/Assets/Temp/Skoda Kamiq.prefab.meta b/Assets/Temp/Skoda Kamiq.prefab.meta
new file mode 100644
index 0000000..da6260e
--- /dev/null
+++ b/Assets/Temp/Skoda Kamiq.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7893264379c7b27449c0d5cd800de112
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Temp/Tesla Model Y.prefab b/Assets/Temp/Tesla Model Y.prefab
new file mode 100644
index 0000000..9c42a45
--- /dev/null
+++ b/Assets/Temp/Tesla Model Y.prefab
@@ -0,0 +1,146 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2909664378286430652
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8179583403278623410}
+ - component: {fileID: 4213176841392790473}
+ - component: {fileID: 2544296818586992976}
+ - component: {fileID: 1169592420900285185}
+ m_Layer: 0
+ m_Name: Dummy
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8179583403278623410
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2909664378286430652}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.0812, z: 0}
+ m_LocalScale: {x: 0.192, y: 0.1624, z: 0.479}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8656289922454706414}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4213176841392790473
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2909664378286430652}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &2544296818586992976
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2909664378286430652}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &1169592420900285185
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2909664378286430652}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &6059035821173914762
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8656289922454706414}
+ m_Layer: 0
+ m_Name: Tesla Model Y
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8656289922454706414
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6059035821173914762}
+ serializedVersion: 2
+ 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_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 8179583403278623410}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Temp/Tesla Model Y.prefab.meta b/Assets/Temp/Tesla Model Y.prefab.meta
new file mode 100644
index 0000000..2ab0333
--- /dev/null
+++ b/Assets/Temp/Tesla Model Y.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: bf52a0f6f1d4ca94abedb85fa135a7cd
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Temp/Toyota Altis.prefab b/Assets/Temp/Toyota Altis.prefab
new file mode 100644
index 0000000..227f435
--- /dev/null
+++ b/Assets/Temp/Toyota Altis.prefab
@@ -0,0 +1,146 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &369911992068276538
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3817041185149164022}
+ - component: {fileID: 7596283371511926204}
+ - component: {fileID: 3959783925517860865}
+ - component: {fileID: 2975129725945164033}
+ m_Layer: 0
+ m_Name: Dummy
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3817041185149164022
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 369911992068276538}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.07175, z: 0}
+ m_LocalScale: {x: 0.178, y: 0.1435, z: 0.463}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 657832765405581052}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7596283371511926204
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 369911992068276538}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &3959783925517860865
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 369911992068276538}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &2975129725945164033
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 369911992068276538}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &7937761055385602081
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 657832765405581052}
+ m_Layer: 0
+ m_Name: Toyota Altis
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &657832765405581052
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7937761055385602081}
+ serializedVersion: 2
+ 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_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 3817041185149164022}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Temp/Toyota Altis.prefab.meta b/Assets/Temp/Toyota Altis.prefab.meta
new file mode 100644
index 0000000..9e07f7f
--- /dev/null
+++ b/Assets/Temp/Toyota Altis.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 692d27357d450044883464a7dc84418a
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant: