diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index fb22858..c082a53 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -189,87 +189,6 @@ m_Father: {fileID: 0} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &14297888 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 14297889} - - component: {fileID: 14297892} - - component: {fileID: 14297891} - m_Layer: 0 - m_Name: Cube (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &14297889 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 2, y: 0.2, z: 0.2} - m_Children: [] - m_Father: {fileID: 581008542} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &14297891 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - 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: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &14297892 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &128843414 GameObject: m_ObjectHideFlags: 0 @@ -348,7 +267,7 @@ m_LocalScale: {x: 0.1, y: 0.05, z: 1000} m_Children: [] m_Father: {fileID: 581008542} - m_RootOrder: 2 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &267250014 MeshRenderer: @@ -470,8 +389,6 @@ m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 1409854103} - - {fileID: 14297889} - {fileID: 267250013} - {fileID: 1331646752} m_Father: {fileID: 0} @@ -1188,7 +1105,7 @@ m_LocalScale: {x: 1000, y: 0.05, z: 0.1} m_Children: [] m_Father: {fileID: 581008542} - m_RootOrder: 3 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &1331646753 MeshRenderer: @@ -1283,87 +1200,8 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} ---- !u!1 &1409854102 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1409854103} - - component: {fileID: 1409854106} - - component: {fileID: 1409854105} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1409854103 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.2, y: 0.2, z: 2} - m_Children: [] - m_Father: {fileID: 581008542} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1409854105 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - 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: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1409854106 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + targets: + - {fileID: 349804700} --- !u!1 &1551909212 GameObject: m_ObjectHideFlags: 0 @@ -1490,19 +1328,7 @@ m_TargetGraphic: {fileID: 1621584774} m_OnClick: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 128843415} - m_TargetAssemblyTypeName: Config, Assembly-CSharp - m_MethodName: onDeleteClick - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] --- !u!114 &1621584774 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1647,3 +1473,5 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} + targets: + - {fileID: 1551909214} diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index fb22858..c082a53 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -189,87 +189,6 @@ m_Father: {fileID: 0} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &14297888 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 14297889} - - component: {fileID: 14297892} - - component: {fileID: 14297891} - m_Layer: 0 - m_Name: Cube (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &14297889 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 2, y: 0.2, z: 0.2} - m_Children: [] - m_Father: {fileID: 581008542} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &14297891 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - 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: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &14297892 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &128843414 GameObject: m_ObjectHideFlags: 0 @@ -348,7 +267,7 @@ m_LocalScale: {x: 0.1, y: 0.05, z: 1000} m_Children: [] m_Father: {fileID: 581008542} - m_RootOrder: 2 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &267250014 MeshRenderer: @@ -470,8 +389,6 @@ m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 1409854103} - - {fileID: 14297889} - {fileID: 267250013} - {fileID: 1331646752} m_Father: {fileID: 0} @@ -1188,7 +1105,7 @@ m_LocalScale: {x: 1000, y: 0.05, z: 0.1} m_Children: [] m_Father: {fileID: 581008542} - m_RootOrder: 3 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &1331646753 MeshRenderer: @@ -1283,87 +1200,8 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} ---- !u!1 &1409854102 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1409854103} - - component: {fileID: 1409854106} - - component: {fileID: 1409854105} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1409854103 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.2, y: 0.2, z: 2} - m_Children: [] - m_Father: {fileID: 581008542} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1409854105 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - 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: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1409854106 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + targets: + - {fileID: 349804700} --- !u!1 &1551909212 GameObject: m_ObjectHideFlags: 0 @@ -1490,19 +1328,7 @@ m_TargetGraphic: {fileID: 1621584774} m_OnClick: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 128843415} - m_TargetAssemblyTypeName: Config, Assembly-CSharp - m_MethodName: onDeleteClick - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] --- !u!114 &1621584774 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1647,3 +1473,5 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} + targets: + - {fileID: 1551909214} diff --git a/Assets/Scripts/Roads/Node/SpawnNodeData.cs b/Assets/Scripts/Roads/Node/SpawnNodeData.cs index 519c784..356fcdb 100644 --- a/Assets/Scripts/Roads/Node/SpawnNodeData.cs +++ b/Assets/Scripts/Roads/Node/SpawnNodeData.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using UnityEngine; -public class SpawnNodeData : MonoBehaviour -{ +public class SpawnNodeData : MonoBehaviour { private SpawnNode node; public Config config; + public ExitNodeData[] targets = new ExitNodeData[0]; void Start() { node = new SpawnNode(transform.position, transform, config); diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index fb22858..c082a53 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -189,87 +189,6 @@ m_Father: {fileID: 0} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &14297888 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 14297889} - - component: {fileID: 14297892} - - component: {fileID: 14297891} - m_Layer: 0 - m_Name: Cube (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &14297889 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 2, y: 0.2, z: 0.2} - m_Children: [] - m_Father: {fileID: 581008542} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &14297891 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - 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: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &14297892 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &128843414 GameObject: m_ObjectHideFlags: 0 @@ -348,7 +267,7 @@ m_LocalScale: {x: 0.1, y: 0.05, z: 1000} m_Children: [] m_Father: {fileID: 581008542} - m_RootOrder: 2 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &267250014 MeshRenderer: @@ -470,8 +389,6 @@ m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 1409854103} - - {fileID: 14297889} - {fileID: 267250013} - {fileID: 1331646752} m_Father: {fileID: 0} @@ -1188,7 +1105,7 @@ m_LocalScale: {x: 1000, y: 0.05, z: 0.1} m_Children: [] m_Father: {fileID: 581008542} - m_RootOrder: 3 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &1331646753 MeshRenderer: @@ -1283,87 +1200,8 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} ---- !u!1 &1409854102 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1409854103} - - component: {fileID: 1409854106} - - component: {fileID: 1409854105} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1409854103 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.2, y: 0.2, z: 2} - m_Children: [] - m_Father: {fileID: 581008542} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1409854105 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - 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: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1409854106 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + targets: + - {fileID: 349804700} --- !u!1 &1551909212 GameObject: m_ObjectHideFlags: 0 @@ -1490,19 +1328,7 @@ m_TargetGraphic: {fileID: 1621584774} m_OnClick: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 128843415} - m_TargetAssemblyTypeName: Config, Assembly-CSharp - m_MethodName: onDeleteClick - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] --- !u!114 &1621584774 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1647,3 +1473,5 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} + targets: + - {fileID: 1551909214} diff --git a/Assets/Scripts/Roads/Node/SpawnNodeData.cs b/Assets/Scripts/Roads/Node/SpawnNodeData.cs index 519c784..356fcdb 100644 --- a/Assets/Scripts/Roads/Node/SpawnNodeData.cs +++ b/Assets/Scripts/Roads/Node/SpawnNodeData.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using UnityEngine; -public class SpawnNodeData : MonoBehaviour -{ +public class SpawnNodeData : MonoBehaviour { private SpawnNode node; public Config config; + public ExitNodeData[] targets = new ExitNodeData[0]; void Start() { node = new SpawnNode(transform.position, transform, config); diff --git a/Assets/Scripts/Roads/Road.cs b/Assets/Scripts/Roads/Road.cs index 57cd7cf..a1656c2 100644 --- a/Assets/Scripts/Roads/Road.cs +++ b/Assets/Scripts/Roads/Road.cs @@ -4,8 +4,8 @@ public class Road { public List nodes = new List(); - Bezier path; - private FlatBezierRenderer pathLine, roadBody; + Bezier path, arrow1, arrow2; + private FlatBezierRenderer pathLine, roadBody, arrow1Renderer, arrow2Renderer; private Config config; private MeshCollider collider; public GameObject gameObject; @@ -13,14 +13,21 @@ public Road(Node start, Node end, Config config) { nodes.Add(start); nodes.Add(end); - path = new Bezier(); - pathLine = new FlatBezierRenderer(path, 50, 0.05f); - roadBody = new FlatBezierRenderer(path, 50, 2f); this.config = config; } public void initialize(Transform parent) { + path = new Bezier(); + pathLine = new FlatBezierRenderer(path, 50, 0.05f); + roadBody = new FlatBezierRenderer(path, 50, 2f); + + arrow1 = new Bezier(); + arrow1Renderer = new FlatBezierRenderer(arrow1, 3, 0.05f); + + arrow2 = new Bezier(); + arrow2Renderer = new FlatBezierRenderer(arrow2, 3, 0.05f); + gameObject = new GameObject(); gameObject.transform.parent = parent; gameObject.transform.position = Vector3.zero; @@ -38,9 +45,20 @@ collider = bodyChild.AddComponent(); bodyChild.transform.parent = gameObject.transform; bodyChild.layer = 8; + + setupArrow(arrow1Renderer, gameObject.transform); + setupArrow(arrow2Renderer, gameObject.transform); update(true); } + private void setupArrow(FlatBezierRenderer renderer, Transform parent) { + GameObject child = new GameObject(); + child.transform.position = Vector3.zero; + child.AddComponent().material = config.roadEditMaterial; + child.AddComponent().mesh = renderer.mesh; + child.transform.parent = parent; + } + public void update(bool updateOthers) { path.A = nodes[0].position; path.D = nodes[1].position; @@ -64,6 +82,22 @@ pathLine.update(); roadBody.update(); collider.sharedMesh = roadBody.mesh; + + Vector3 midPosition = path.getPosition(0.5f); + Vector3 midDirection = path.getDirection(0.5f); + midDirection.Normalize(); + Vector3 midNormal = new Vector3(-midDirection.z, 0, midDirection.x); + midNormal.Normalize(); + arrow1.A = midPosition; + arrow2.A = midPosition; + arrow1.B = midPosition - midDirection * 0.5f + midNormal * 0.5f; + arrow2.B = arrow1.B - midNormal; + arrow1.C = midPosition; + arrow2.C = midPosition; + arrow1.D = arrow1.B; + arrow2.D = arrow2.B; + arrow1Renderer.update(); + arrow2Renderer.update(); } override public bool Equals(object other) { diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index fb22858..c082a53 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -189,87 +189,6 @@ m_Father: {fileID: 0} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &14297888 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 14297889} - - component: {fileID: 14297892} - - component: {fileID: 14297891} - m_Layer: 0 - m_Name: Cube (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &14297889 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 2, y: 0.2, z: 0.2} - m_Children: [] - m_Father: {fileID: 581008542} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &14297891 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - 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: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &14297892 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 14297888} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &128843414 GameObject: m_ObjectHideFlags: 0 @@ -348,7 +267,7 @@ m_LocalScale: {x: 0.1, y: 0.05, z: 1000} m_Children: [] m_Father: {fileID: 581008542} - m_RootOrder: 2 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &267250014 MeshRenderer: @@ -470,8 +389,6 @@ m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 1409854103} - - {fileID: 14297889} - {fileID: 267250013} - {fileID: 1331646752} m_Father: {fileID: 0} @@ -1188,7 +1105,7 @@ m_LocalScale: {x: 1000, y: 0.05, z: 0.1} m_Children: [] m_Father: {fileID: 581008542} - m_RootOrder: 3 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &1331646753 MeshRenderer: @@ -1283,87 +1200,8 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} ---- !u!1 &1409854102 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1409854103} - - component: {fileID: 1409854106} - - component: {fileID: 1409854105} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1409854103 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.2, y: 0.2, z: 2} - m_Children: [] - m_Father: {fileID: 581008542} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1409854105 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - 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: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1409854106 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409854102} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + targets: + - {fileID: 349804700} --- !u!1 &1551909212 GameObject: m_ObjectHideFlags: 0 @@ -1490,19 +1328,7 @@ m_TargetGraphic: {fileID: 1621584774} m_OnClick: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 128843415} - m_TargetAssemblyTypeName: Config, Assembly-CSharp - m_MethodName: onDeleteClick - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] --- !u!114 &1621584774 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1647,3 +1473,5 @@ m_Name: m_EditorClassIdentifier: config: {fileID: 128843415} + targets: + - {fileID: 1551909214} diff --git a/Assets/Scripts/Roads/Node/SpawnNodeData.cs b/Assets/Scripts/Roads/Node/SpawnNodeData.cs index 519c784..356fcdb 100644 --- a/Assets/Scripts/Roads/Node/SpawnNodeData.cs +++ b/Assets/Scripts/Roads/Node/SpawnNodeData.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using UnityEngine; -public class SpawnNodeData : MonoBehaviour -{ +public class SpawnNodeData : MonoBehaviour { private SpawnNode node; public Config config; + public ExitNodeData[] targets = new ExitNodeData[0]; void Start() { node = new SpawnNode(transform.position, transform, config); diff --git a/Assets/Scripts/Roads/Road.cs b/Assets/Scripts/Roads/Road.cs index 57cd7cf..a1656c2 100644 --- a/Assets/Scripts/Roads/Road.cs +++ b/Assets/Scripts/Roads/Road.cs @@ -4,8 +4,8 @@ public class Road { public List nodes = new List(); - Bezier path; - private FlatBezierRenderer pathLine, roadBody; + Bezier path, arrow1, arrow2; + private FlatBezierRenderer pathLine, roadBody, arrow1Renderer, arrow2Renderer; private Config config; private MeshCollider collider; public GameObject gameObject; @@ -13,14 +13,21 @@ public Road(Node start, Node end, Config config) { nodes.Add(start); nodes.Add(end); - path = new Bezier(); - pathLine = new FlatBezierRenderer(path, 50, 0.05f); - roadBody = new FlatBezierRenderer(path, 50, 2f); this.config = config; } public void initialize(Transform parent) { + path = new Bezier(); + pathLine = new FlatBezierRenderer(path, 50, 0.05f); + roadBody = new FlatBezierRenderer(path, 50, 2f); + + arrow1 = new Bezier(); + arrow1Renderer = new FlatBezierRenderer(arrow1, 3, 0.05f); + + arrow2 = new Bezier(); + arrow2Renderer = new FlatBezierRenderer(arrow2, 3, 0.05f); + gameObject = new GameObject(); gameObject.transform.parent = parent; gameObject.transform.position = Vector3.zero; @@ -38,9 +45,20 @@ collider = bodyChild.AddComponent(); bodyChild.transform.parent = gameObject.transform; bodyChild.layer = 8; + + setupArrow(arrow1Renderer, gameObject.transform); + setupArrow(arrow2Renderer, gameObject.transform); update(true); } + private void setupArrow(FlatBezierRenderer renderer, Transform parent) { + GameObject child = new GameObject(); + child.transform.position = Vector3.zero; + child.AddComponent().material = config.roadEditMaterial; + child.AddComponent().mesh = renderer.mesh; + child.transform.parent = parent; + } + public void update(bool updateOthers) { path.A = nodes[0].position; path.D = nodes[1].position; @@ -64,6 +82,22 @@ pathLine.update(); roadBody.update(); collider.sharedMesh = roadBody.mesh; + + Vector3 midPosition = path.getPosition(0.5f); + Vector3 midDirection = path.getDirection(0.5f); + midDirection.Normalize(); + Vector3 midNormal = new Vector3(-midDirection.z, 0, midDirection.x); + midNormal.Normalize(); + arrow1.A = midPosition; + arrow2.A = midPosition; + arrow1.B = midPosition - midDirection * 0.5f + midNormal * 0.5f; + arrow2.B = arrow1.B - midNormal; + arrow1.C = midPosition; + arrow2.C = midPosition; + arrow1.D = arrow1.B; + arrow2.D = arrow2.B; + arrow1Renderer.update(); + arrow2Renderer.update(); } override public bool Equals(object other) { diff --git a/Assets/Scripts/Roads/Roads.cs b/Assets/Scripts/Roads/Roads.cs index 6e53a72..3d87131 100644 --- a/Assets/Scripts/Roads/Roads.cs +++ b/Assets/Scripts/Roads/Roads.cs @@ -42,6 +42,12 @@ pullingNode.roads.Add(road); endNode.roads.Add(road); road.initialize(transform); + } else { + Road other = pullingNode.roads.Find(it => road.Equals(it)); + if (other.nodes[0] != road.nodes[0]) { + other.nodes = road.nodes; + other.update(false); + } } pullingNode = null; } @@ -88,7 +94,7 @@ Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; Physics.Raycast(ray, out hit, Mathf.Infinity, 1 << 6); - Vector3 groundPosition = snapGroundPosition(hit.point, 1f, 5); + Vector3 groundPosition = snapGroundPosition(hit.point, .5f, 2); if (config.mode == Mode.DrawRoad) { handleRoadDrawing(ray, groundPosition);