瀏覽代碼

Start from sideway, new route,intersection preset

manuel.lehe 2 年之前
父節點
當前提交
9fff6bf253

+ 166 - 0
Assets/Editor/IntersectionPresetEditor.cs

@@ -0,0 +1,166 @@
+using System;
+using System.Collections.Generic;
+using Routes;
+using TrafficSimulation;
+using UniRx.Triggers;
+using UnityEditor;
+using UnityEngine;
+[CustomEditor(typeof(IntersectionPreset))]
+public class IntersectionPresetEditor : Editor
+{
+    private bool setPosition;
+    private IntersectionPreset preset;
+    private void OnEnable()
+    {
+        this.preset = (IntersectionPreset) target;
+    }
+
+    public override void OnInspectorGUI()
+    {
+        EditorGUILayout.LabelField("Traffic System");
+        EditorGUILayout.Space();
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("trafficSystem"));
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("intersection"));
+        EditorGUILayout.Space();
+        EditorGUILayout.LabelField("Car Items");
+        EditorGUILayout.Space();
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("cars"));
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("carSpawner"));
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("carPool"));
+        EditorGUILayout.Space();
+        EditorGUILayout.LabelField("Trigger");
+        EditorGUILayout.Space();
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("triggerIn"));
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("triggerOut"));
+        EditorGUILayout.Space();
+        EditorGUILayout.LabelField("Experiment Data");
+        EditorGUILayout.Space();
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("number"));
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("condition"));
+        EditorGUILayout.Space();
+        EditorGUILayout.LabelField("Position Trigger");
+        EditorGUILayout.Space();
+        if (GUILayout.Button("Reset Position", GUILayout.Width(128)))
+        {
+            ResetPosition();
+        }
+        if (GUILayout.Button("Position Spawns", GUILayout.Width(128)))
+        {
+            PositionSpawns();
+        }
+        if (GUILayout.Button("Trigger IN Right", GUILayout.Width(128)))
+        {
+            SetTrigger("in","r");
+        }
+        if (GUILayout.Button("Trigger IN Down", GUILayout.Width(128)))
+        {
+            SetTrigger("in","d");
+        }
+        if (GUILayout.Button("Trigger IN Top", GUILayout.Width(128)))
+        {
+            SetTrigger("in","t");
+        }
+        if (GUILayout.Button("Trigger IN Left", GUILayout.Width(128)))
+        {
+            SetTrigger("in","l");
+        }
+        if (GUILayout.Button("Trigger OUT Right", GUILayout.Width(128)))
+        {
+            SetTrigger("out","r");
+        }
+        if (GUILayout.Button("Trigger OUT Down", GUILayout.Width(128)))
+        {
+            SetTrigger("out","d");
+        }
+        if (GUILayout.Button("Trigger OUT Top", GUILayout.Width(128)))
+        {
+            SetTrigger("out","t");
+        }
+        if (GUILayout.Button("Trigger OUT Left", GUILayout.Width(128)))
+        {
+            SetTrigger("out","l");
+        }
+    }
+
+    private void PositionSpawns()
+    {
+        SpawnWatcher[] spawns = this.preset.GetComponentsInChildren<SpawnWatcher>();
+        if (spawns.Length == 4)
+        {
+            //right
+            spawns[0].gameObject.transform.localPosition =
+                new Vector3(2.5f, spawns[0].gameObject.transform.localPosition.y, -50.0f);
+            spawns[0].gameObject.transform.eulerAngles = new Vector3(0, 0);
+            //left
+            spawns[1].gameObject.transform.localPosition =
+                new Vector3(-1.5f, spawns[1].gameObject.transform.localPosition.y, 50.0f);
+            spawns[1].gameObject.transform.eulerAngles = new Vector3(0, 180);
+            //top
+            spawns[2].gameObject.transform.localPosition =
+                new Vector3(50f, spawns[2].gameObject.transform.localPosition.y, 3.5f);
+            spawns[2].gameObject.transform.eulerAngles = new Vector3(0, -90);
+            //down
+            spawns[3].gameObject.transform.localPosition =
+                new Vector3(-50f, spawns[3].gameObject.transform.localPosition.y, -1.5f);
+            spawns[3].gameObject.transform.eulerAngles = new Vector3(0, 90);
+        }
+    }
+
+    private void ResetPosition()
+    {
+        Vector3 intersectionPosition = this.preset.intersection.transform.position;
+        this.preset.transform.position = intersectionPosition;
+        Transform[] childTransforms = this.preset.GetComponentsInChildren<Transform>();
+        foreach (Transform child in childTransforms)
+        {
+            Debug.Log("Child found");
+            if (child.gameObject == this.preset.gameObject)
+            {
+                continue;
+            }
+            child.localPosition = new Vector3(child.localPosition.x,0.5f,child.localPosition.z);
+        }
+        this.preset.GetComponentInChildren<CarSituationSpawner>().transform.position = intersectionPosition;
+        
+    }
+
+    private void SetTrigger(String trigger, String direction)
+    {
+        PresetTrigger[] triggers = this.preset.GetComponentsInChildren<PresetTrigger>();
+        Transform triggerTransform = null;
+        if (trigger == "out")
+        {
+            //REQUIRES that the out trigger is the second element! not clean i know
+            triggerTransform = triggers[1].gameObject.transform;
+        }else if (trigger == "in")
+        {
+            triggerTransform = triggers[0].gameObject.transform;
+        }
+
+        if (triggerTransform == null)
+        {
+            Debug.Log("No trigger set. cant edit position");
+            return;
+        }
+        Debug.Log("change Gameobject:" + triggerTransform.gameObject.name);
+        switch (direction)
+        {
+            case "l":
+                triggerTransform.localPosition = new Vector3(-100.0f, triggerTransform.localPosition.y, 7.4f);
+                triggerTransform.eulerAngles = new Vector3(0, 0);
+                break;
+            case "r":
+                triggerTransform.localPosition = new Vector3(100.0f, triggerTransform.localPosition.y, 7.4f);
+                triggerTransform.eulerAngles = new Vector3(0, 0);
+                break;
+            case "d":
+                triggerTransform.localPosition = new Vector3(7.4f, triggerTransform.localPosition.y, -100.0f);
+                triggerTransform.eulerAngles = new Vector3(0, 90);
+                break;
+            case "t":
+                triggerTransform.localPosition = new Vector3(7.4f, triggerTransform.localPosition.y, 100.0f);
+                triggerTransform.eulerAngles = new Vector3(0, 90);
+                break;
+        }
+    }
+}

+ 3 - 0
Assets/Editor/IntersectionPresetEditor.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 48940a35d6ac4bdda2e5958ad27932d5
+timeCreated: 1649351886

+ 1 - 0
Assets/Editor/RouteEditor.cs

@@ -40,6 +40,7 @@ public class RoutesEditor : UnityEditor.Editor
         serializedObject.Update();
         EditorGUILayout.PropertyField(serializedObject.FindProperty("start"));
         EditorGUILayout.PropertyField(serializedObject.FindProperty("finish"));
+        EditorGUILayout.PropertyField(serializedObject.FindProperty("customStart"));
         RoutesList(serializedObject.FindProperty("items"));
         EditorGUILayout.LabelField($"Current length: {length}");
         //EditorGUILayout.PropertyField(routes.FindPropertyRelative("arraySize"), true);true);

+ 98 - 0
Assets/Prefabs/Roads/Arrow_Straigth_Right.prefab

@@ -0,0 +1,98 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1928482131014628186
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1928482131014628166}
+  - component: {fileID: 1928482131014628185}
+  - component: {fileID: 1928482131014628184}
+  - component: {fileID: 1928482131014628187}
+  m_Layer: 0
+  m_Name: Arrow_Straigth_Right
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1928482131014628166
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1928482131014628186}
+  m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0}
+  m_LocalPosition: {x: 376.28, y: 0.05, z: -130.02}
+  m_LocalScale: {x: 2, y: 2, z: 2}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0}
+--- !u!33 &1928482131014628185
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1928482131014628186}
+  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1928482131014628184
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1928482131014628186}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: 9e51c763eb6b94e5ea38d9c696320db5, 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_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &1928482131014628187
+MeshCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1928482131014628186}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 4
+  m_Convex: 0
+  m_CookingOptions: 30
+  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}

+ 7 - 0
Assets/Prefabs/Roads/Arrow_Straigth_Right.prefab.meta

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

+ 98 - 0
Assets/Prefabs/Roads/Arrow_left.prefab

@@ -0,0 +1,98 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &5624915252932512509
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5624915252932512497}
+  - component: {fileID: 5624915252932512496}
+  - component: {fileID: 5624915252932512511}
+  - component: {fileID: 5624915252932512510}
+  m_Layer: 0
+  m_Name: Arrow_left
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5624915252932512497
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5624915252932512509}
+  m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0}
+  m_LocalPosition: {x: 378.35, y: 0.05, z: -129.95}
+  m_LocalScale: {x: 2, y: 2, z: 2}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0}
+--- !u!33 &5624915252932512496
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5624915252932512509}
+  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &5624915252932512511
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5624915252932512509}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: 741c98ec6ac764a79ab3b66569573802, 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_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &5624915252932512510
+MeshCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5624915252932512509}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 4
+  m_Convex: 0
+  m_CookingOptions: 30
+  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}

+ 7 - 0
Assets/Prefabs/Roads/Arrow_left.prefab.meta

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

二進制
Assets/Scenes/MainScene.unity


+ 138 - 192
Assets/Scenes/TrafficScenes/IntersectionSituationBikeScene.unity

@@ -51294,102 +51294,6 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 2024935441}
   m_PrefabAsset: {fileID: 0}
---- !u!1 &408592021
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 408592025}
-  - component: {fileID: 408592024}
-  - component: {fileID: 408592023}
-  - component: {fileID: 408592022}
-  m_Layer: 0
-  m_Name: Arrow_left
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!64 &408592022
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 408592021}
-  m_Material: {fileID: 0}
-  m_IsTrigger: 0
-  m_Enabled: 1
-  serializedVersion: 4
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
---- !u!23 &408592023
-MeshRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 408592021}
-  m_Enabled: 1
-  m_CastShadows: 1
-  m_ReceiveShadows: 1
-  m_DynamicOccludee: 1
-  m_MotionVectors: 1
-  m_LightProbeUsage: 1
-  m_ReflectionProbeUsage: 1
-  m_RayTracingMode: 2
-  m_RayTraceProcedural: 0
-  m_RenderingLayerMask: 1
-  m_RendererPriority: 0
-  m_Materials:
-  - {fileID: 2100000, guid: 741c98ec6ac764a79ab3b66569573802, 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_SortingLayerID: 0
-  m_SortingLayer: 0
-  m_SortingOrder: 0
-  m_AdditionalVertexStreams: {fileID: 0}
---- !u!33 &408592024
-MeshFilter:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 408592021}
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
---- !u!4 &408592025
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 408592021}
-  m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0}
-  m_LocalPosition: {x: 378.35, y: 0.05, z: -129.95}
-  m_LocalScale: {x: 2, y: 2, z: 2}
-  m_Children: []
-  m_Father: {fileID: 0}
-  m_RootOrder: 10
-  m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0}
 --- !u!1001 &409079744
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -174507,102 +174411,6 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 584673567}
   m_PrefabAsset: {fileID: 0}
---- !u!1 &1478485388
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1478485392}
-  - component: {fileID: 1478485391}
-  - component: {fileID: 1478485390}
-  - component: {fileID: 1478485389}
-  m_Layer: 0
-  m_Name: Arrow_Straigth_Right
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!64 &1478485389
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1478485388}
-  m_Material: {fileID: 0}
-  m_IsTrigger: 0
-  m_Enabled: 1
-  serializedVersion: 4
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
---- !u!23 &1478485390
-MeshRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1478485388}
-  m_Enabled: 1
-  m_CastShadows: 1
-  m_ReceiveShadows: 1
-  m_DynamicOccludee: 1
-  m_MotionVectors: 1
-  m_LightProbeUsage: 1
-  m_ReflectionProbeUsage: 1
-  m_RayTracingMode: 2
-  m_RayTraceProcedural: 0
-  m_RenderingLayerMask: 1
-  m_RendererPriority: 0
-  m_Materials:
-  - {fileID: 2100000, guid: 9e51c763eb6b94e5ea38d9c696320db5, 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_SortingLayerID: 0
-  m_SortingLayer: 0
-  m_SortingOrder: 0
-  m_AdditionalVertexStreams: {fileID: 0}
---- !u!33 &1478485391
-MeshFilter:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1478485388}
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
---- !u!4 &1478485392
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1478485388}
-  m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0}
-  m_LocalPosition: {x: 376.28, y: 0.05, z: -130.02}
-  m_LocalScale: {x: 2, y: 2, z: 2}
-  m_Children: []
-  m_Father: {fileID: 0}
-  m_RootOrder: 11
-  m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0}
 --- !u!4 &1478575615 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 468664, guid: a0fc9668797c0ba40bfd0a39fc67f2ed,
@@ -253326,6 +253134,144 @@ PrefabInstance:
       objectReference: {fileID: 2100000, guid: 97942cb5527e6f24eb8b8f5c86f8744d, type: 2}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: ca5af9b35ab3f6d418a4a402844936e3, type: 3}
+--- !u!1001 &1928482129806579414
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications:
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_RootOrder
+      value: 11
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 376.28
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0.05
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: -130.02
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0.7071068
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0.7071068
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 90
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 180
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628166, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1928482131014628186, guid: 20985ac313a184da3a036c1d8511bf6d,
+        type: 3}
+      propertyPath: m_Name
+      value: Arrow_Straigth_Right
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 20985ac313a184da3a036c1d8511bf6d, type: 3}
+--- !u!1001 &5624915252801082472
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications:
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_RootOrder
+      value: 10
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 378.35
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0.05
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: -129.95
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0.7071068
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0.7071068
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 90
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 180
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512497, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5624915252932512509, guid: d3028f6ea463b484db0594a2726c077f,
+        type: 3}
+      propertyPath: m_Name
+      value: Arrow_left
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: d3028f6ea463b484db0594a2726c077f, type: 3}
 --- !u!1001 &8829470367399767050
 PrefabInstance:
   m_ObjectHideFlags: 0

+ 2 - 1
Assets/Scripts/Routes/Route.cs

@@ -39,9 +39,10 @@ namespace Routes
 
         public delegate void OnStartEnteredEvent();
 
+        public Transform customStart;
+
         public List<RouteItem> items;
 
-        public Transform customStartTransform;
         public StraightRoadExtras start;
         public StraightRoadExtras finish;
 

+ 3 - 3
Assets/Scripts/Routes/RouteManager.cs

@@ -27,10 +27,10 @@ namespace Routes
 
         private void PlaceBike()
         {
-            if(routes[selectedRoute].customStartTransform != null)
+            if (routes[selectedRoute].customStart != null)
             {
-                bicycle.gameObject.transform.position = routes[selectedRoute].customStartTransform.position;
-                bicycle.gameObject.transform.rotation = routes[selectedRoute].customStartTransform.rotation;
+                bicycle.gameObject.transform.position = routes[selectedRoute].customStart.position;
+                bicycle.gameObject.transform.rotation = routes[selectedRoute].customStart.rotation;
             }
             else
             {

+ 2 - 1
Assets/Scripts/TrafficSimulation/IntersectionSituation/CarSituationSpawner.cs

@@ -7,6 +7,7 @@ namespace TrafficSimulation{
     {
         public float spawnRate = 5.0f;
         public GameObject[] spawns;
+        public bool despawnerActive;
         public PresetTrigger[] despawns;
         public CarPool carPool;
         private List<IEnumerator> coroutines = new List<IEnumerator>();
@@ -22,7 +23,7 @@ namespace TrafficSimulation{
         // Update is called once per frame
         void Update()
         {
-            if(this.isActive){
+            if(this.isActive && this.despawnerActive){
                 CheckDespawns();   
             }
         }

+ 35 - 14
Assets/Scripts/TrafficSimulation/IntersectionSituation/IntersectionPreset.cs

@@ -1,8 +1,11 @@
 using System.Collections;
 using System.Collections.Generic;
+using Routes;
 using UnityEngine;
+using UnityEditor;
 
-namespace TrafficSimulation{
+namespace TrafficSimulation
+{
     public class IntersectionPreset : MonoBehaviour
     {
         public TrafficSystem trafficSystem;
@@ -12,6 +15,10 @@ namespace TrafficSimulation{
         public PresetTrigger triggerIn;
         public PresetTrigger triggerOut;
         public CarPool carPool;
+        public int number;
+        public string condition = "X";
+        public RoadDirection inTriggerPosition;
+        public RoadDirection outTriggerPosition;
         private bool presetRunning;
         private List<GameObject> activeCars;
         // Start is called before the first frame update
@@ -24,22 +31,27 @@ namespace TrafficSimulation{
         // Update is called once per frame
         void Update()
         {
-            if(triggerIn.checkLastTrigger()){
+            if (triggerIn.checkLastTrigger())
+            {
                 HandleInTrigger();
             }
 
-            if(triggerOut.checkLastTrigger()){
+            if (triggerOut.checkLastTrigger())
+            {
                 handleOutTrigger();
             }
         }
 
+
         /// <summary>
         /// Starts preset it not already running
         /// </summary>
-        private void HandleInTrigger(){
+        private void HandleInTrigger()
+        {
             Debug.Log("In Trigger");
 
-            if(this.presetRunning){
+            if (this.presetRunning)
+            {
                 Debug.Log("Preset already running");
                 return;
             }
@@ -49,9 +61,11 @@ namespace TrafficSimulation{
         /// <summary>
         /// Ends the preset if it was running
         /// </summary>
-        private void handleOutTrigger(){
+        private void handleOutTrigger()
+        {
             Debug.Log("Out Trigger");
-            if(!this.presetRunning){
+            if (!this.presetRunning)
+            {
                 Debug.Log("Preset wasn´t running, so couldn´t be ended.");
                 return;
             }
@@ -62,31 +76,38 @@ namespace TrafficSimulation{
         /// <summary>
         /// If Cars are set, they will be spawned on the given positions. If a carSpawner is set, it will be activated
         /// </summary>
-        private void SpawnCars(){
-            if(this.cars == null){
+        private void SpawnCars()
+        {
+            if (this.cars == null)
+            {
                 Debug.Log("Found no Car Object. Can´t init preset");
                 return;
-            }else{
+            }
+            else
+            {
                 foreach (Transform carSpawn in this.cars.transform)
                 {
                     this.activeCars.Add(this.carPool.SpawnCar(carSpawn));
                 }
             }
-            if(this.carSpawner != null){
+            if (this.carSpawner != null)
+            {
                 this.carSpawner.StartSpawner();
             }
         }
         /// <summary>
         /// Each car, used from this preset will be despawned, if set the carspawner will be stopped
         /// </summary>
-        private void DespawnCars(){
+        private void DespawnCars()
+        {
             Debug.Log("despawnCars");
             this.activeCars.ForEach(car => this.carPool.DespawnCar(car));
             this.activeCars.Clear();
-            if(this.carSpawner != null){
+            if (this.carSpawner != null)
+            {
                 this.carSpawner.StopSpawner();
             }
         }
-    }
 
+    }
 }

+ 17 - 0
Assets/Scripts/TrafficSimulation/IntersectionSituation/NewMonoBehaviour.cs

@@ -0,0 +1,17 @@
+using UnityEngine;
+using System.Collections;
+
+public class NewMonoBehaviour : MonoBehaviour
+{
+    // Use this for initialization
+    void Start()
+    {
+
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+
+    }
+}

+ 11 - 0
Assets/Scripts/TrafficSimulation/IntersectionSituation/NewMonoBehaviour.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cc0df5c3a8e06472881015e536a090a3
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: