diff --git a/Assets/Materials/Road.mat b/Assets/Materials/Road.mat new file mode 100644 index 0000000..e10604a --- /dev/null +++ b/Assets/Materials/Road.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Road.mat b/Assets/Materials/Road.mat new file mode 100644 index 0000000..e10604a --- /dev/null +++ b/Assets/Materials/Road.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Road.mat.meta b/Assets/Materials/Road.mat.meta new file mode 100644 index 0000000..4718a1a --- /dev/null +++ b/Assets/Materials/Road.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b0a930ba0e3dba46a226bb15ae71b80 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Road.mat b/Assets/Materials/Road.mat new file mode 100644 index 0000000..e10604a --- /dev/null +++ b/Assets/Materials/Road.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Road.mat.meta b/Assets/Materials/Road.mat.meta new file mode 100644 index 0000000..4718a1a --- /dev/null +++ b/Assets/Materials/Road.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b0a930ba0e3dba46a226bb15ae71b80 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index d050c89..837f323 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -123,6 +123,51 @@ debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &128843414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 128843416} + - component: {fileID: 128843415} + m_Layer: 0 + m_Name: Config + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &128843415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2f1a9c31b852ee6488341a2da4b2fdee, type: 3} + m_Name: + m_EditorClassIdentifier: + roadMaterial: {fileID: 2100000, guid: 1b0a930ba0e3dba46a226bb15ae71b80, type: 2} + roadEditMaterial: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} +--- !u!4 &128843416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.88340354, y: -0.10408807, z: 0.8284404} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &683864801 GameObject: m_ObjectHideFlags: 0 @@ -216,7 +261,7 @@ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &705507993 GameObject: @@ -406,6 +451,7 @@ - component: {fileID: 978069799} - component: {fileID: 978069798} - component: {fileID: 978069797} + - component: {fileID: 978069801} m_Layer: 6 m_Name: Plane m_TagString: Untagged @@ -488,8 +534,21 @@ m_LocalScale: {x: 100, y: 1, z: 100} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &978069801 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978069796} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 0.002, z: 10} + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1256630289 GameObject: m_ObjectHideFlags: 0 @@ -541,102 +600,6 @@ cursor: {fileID: 683864801} roads: {fileID: 1714391591} cursorPosition: {x: 0, y: 0, z: 0} ---- !u!1 &1430037196 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1430037200} - - component: {fileID: 1430037199} - - component: {fileID: 1430037198} - - component: {fileID: 1430037197} - m_Layer: 6 - m_Name: ground - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!64 &1430037197 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1430037198 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Enabled: 1 - m_CastShadows: 0 - 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: 341e2be97c2570d45b1efe58bac95565, 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 &1430037199 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1430037200 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - 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: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1714391591 GameObject: m_ObjectHideFlags: 0 @@ -666,7 +629,7 @@ m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1714391594 MonoBehaviour: @@ -682,3 +645,4 @@ m_EditorClassIdentifier: mainCamera: {fileID: 963194227} material: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} + config: {fileID: 128843415} diff --git a/Assets/Materials/Road.mat b/Assets/Materials/Road.mat new file mode 100644 index 0000000..e10604a --- /dev/null +++ b/Assets/Materials/Road.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Road.mat.meta b/Assets/Materials/Road.mat.meta new file mode 100644 index 0000000..4718a1a --- /dev/null +++ b/Assets/Materials/Road.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b0a930ba0e3dba46a226bb15ae71b80 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index d050c89..837f323 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -123,6 +123,51 @@ debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &128843414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 128843416} + - component: {fileID: 128843415} + m_Layer: 0 + m_Name: Config + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &128843415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2f1a9c31b852ee6488341a2da4b2fdee, type: 3} + m_Name: + m_EditorClassIdentifier: + roadMaterial: {fileID: 2100000, guid: 1b0a930ba0e3dba46a226bb15ae71b80, type: 2} + roadEditMaterial: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} +--- !u!4 &128843416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.88340354, y: -0.10408807, z: 0.8284404} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &683864801 GameObject: m_ObjectHideFlags: 0 @@ -216,7 +261,7 @@ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &705507993 GameObject: @@ -406,6 +451,7 @@ - component: {fileID: 978069799} - component: {fileID: 978069798} - component: {fileID: 978069797} + - component: {fileID: 978069801} m_Layer: 6 m_Name: Plane m_TagString: Untagged @@ -488,8 +534,21 @@ m_LocalScale: {x: 100, y: 1, z: 100} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &978069801 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978069796} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 0.002, z: 10} + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1256630289 GameObject: m_ObjectHideFlags: 0 @@ -541,102 +600,6 @@ cursor: {fileID: 683864801} roads: {fileID: 1714391591} cursorPosition: {x: 0, y: 0, z: 0} ---- !u!1 &1430037196 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1430037200} - - component: {fileID: 1430037199} - - component: {fileID: 1430037198} - - component: {fileID: 1430037197} - m_Layer: 6 - m_Name: ground - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!64 &1430037197 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1430037198 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Enabled: 1 - m_CastShadows: 0 - 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: 341e2be97c2570d45b1efe58bac95565, 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 &1430037199 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1430037200 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - 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: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1714391591 GameObject: m_ObjectHideFlags: 0 @@ -666,7 +629,7 @@ m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1714391594 MonoBehaviour: @@ -682,3 +645,4 @@ m_EditorClassIdentifier: mainCamera: {fileID: 963194227} material: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} + config: {fileID: 128843415} diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs new file mode 100644 index 0000000..4078a80 --- /dev/null +++ b/Assets/Scripts/Config.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Config : MonoBehaviour { + public Material roadMaterial; + public Material roadEditMaterial; + void Start() { + } + + void Update() { + } +} diff --git a/Assets/Materials/Road.mat b/Assets/Materials/Road.mat new file mode 100644 index 0000000..e10604a --- /dev/null +++ b/Assets/Materials/Road.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Road.mat.meta b/Assets/Materials/Road.mat.meta new file mode 100644 index 0000000..4718a1a --- /dev/null +++ b/Assets/Materials/Road.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b0a930ba0e3dba46a226bb15ae71b80 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index d050c89..837f323 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -123,6 +123,51 @@ debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &128843414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 128843416} + - component: {fileID: 128843415} + m_Layer: 0 + m_Name: Config + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &128843415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2f1a9c31b852ee6488341a2da4b2fdee, type: 3} + m_Name: + m_EditorClassIdentifier: + roadMaterial: {fileID: 2100000, guid: 1b0a930ba0e3dba46a226bb15ae71b80, type: 2} + roadEditMaterial: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} +--- !u!4 &128843416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.88340354, y: -0.10408807, z: 0.8284404} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &683864801 GameObject: m_ObjectHideFlags: 0 @@ -216,7 +261,7 @@ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &705507993 GameObject: @@ -406,6 +451,7 @@ - component: {fileID: 978069799} - component: {fileID: 978069798} - component: {fileID: 978069797} + - component: {fileID: 978069801} m_Layer: 6 m_Name: Plane m_TagString: Untagged @@ -488,8 +534,21 @@ m_LocalScale: {x: 100, y: 1, z: 100} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &978069801 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978069796} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 0.002, z: 10} + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1256630289 GameObject: m_ObjectHideFlags: 0 @@ -541,102 +600,6 @@ cursor: {fileID: 683864801} roads: {fileID: 1714391591} cursorPosition: {x: 0, y: 0, z: 0} ---- !u!1 &1430037196 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1430037200} - - component: {fileID: 1430037199} - - component: {fileID: 1430037198} - - component: {fileID: 1430037197} - m_Layer: 6 - m_Name: ground - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!64 &1430037197 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1430037198 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Enabled: 1 - m_CastShadows: 0 - 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: 341e2be97c2570d45b1efe58bac95565, 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 &1430037199 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1430037200 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - 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: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1714391591 GameObject: m_ObjectHideFlags: 0 @@ -666,7 +629,7 @@ m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1714391594 MonoBehaviour: @@ -682,3 +645,4 @@ m_EditorClassIdentifier: mainCamera: {fileID: 963194227} material: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} + config: {fileID: 128843415} diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs new file mode 100644 index 0000000..4078a80 --- /dev/null +++ b/Assets/Scripts/Config.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Config : MonoBehaviour { + public Material roadMaterial; + public Material roadEditMaterial; + void Start() { + } + + void Update() { + } +} diff --git a/Assets/Scripts/Config.cs.meta b/Assets/Scripts/Config.cs.meta new file mode 100644 index 0000000..d454d0b --- /dev/null +++ b/Assets/Scripts/Config.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f1a9c31b852ee6488341a2da4b2fdee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Road.mat b/Assets/Materials/Road.mat new file mode 100644 index 0000000..e10604a --- /dev/null +++ b/Assets/Materials/Road.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Road.mat.meta b/Assets/Materials/Road.mat.meta new file mode 100644 index 0000000..4718a1a --- /dev/null +++ b/Assets/Materials/Road.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b0a930ba0e3dba46a226bb15ae71b80 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index d050c89..837f323 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -123,6 +123,51 @@ debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &128843414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 128843416} + - component: {fileID: 128843415} + m_Layer: 0 + m_Name: Config + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &128843415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2f1a9c31b852ee6488341a2da4b2fdee, type: 3} + m_Name: + m_EditorClassIdentifier: + roadMaterial: {fileID: 2100000, guid: 1b0a930ba0e3dba46a226bb15ae71b80, type: 2} + roadEditMaterial: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} +--- !u!4 &128843416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.88340354, y: -0.10408807, z: 0.8284404} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &683864801 GameObject: m_ObjectHideFlags: 0 @@ -216,7 +261,7 @@ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &705507993 GameObject: @@ -406,6 +451,7 @@ - component: {fileID: 978069799} - component: {fileID: 978069798} - component: {fileID: 978069797} + - component: {fileID: 978069801} m_Layer: 6 m_Name: Plane m_TagString: Untagged @@ -488,8 +534,21 @@ m_LocalScale: {x: 100, y: 1, z: 100} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &978069801 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978069796} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 0.002, z: 10} + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1256630289 GameObject: m_ObjectHideFlags: 0 @@ -541,102 +600,6 @@ cursor: {fileID: 683864801} roads: {fileID: 1714391591} cursorPosition: {x: 0, y: 0, z: 0} ---- !u!1 &1430037196 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1430037200} - - component: {fileID: 1430037199} - - component: {fileID: 1430037198} - - component: {fileID: 1430037197} - m_Layer: 6 - m_Name: ground - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!64 &1430037197 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1430037198 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Enabled: 1 - m_CastShadows: 0 - 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: 341e2be97c2570d45b1efe58bac95565, 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 &1430037199 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1430037200 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - 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: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1714391591 GameObject: m_ObjectHideFlags: 0 @@ -666,7 +629,7 @@ m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1714391594 MonoBehaviour: @@ -682,3 +645,4 @@ m_EditorClassIdentifier: mainCamera: {fileID: 963194227} material: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} + config: {fileID: 128843415} diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs new file mode 100644 index 0000000..4078a80 --- /dev/null +++ b/Assets/Scripts/Config.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Config : MonoBehaviour { + public Material roadMaterial; + public Material roadEditMaterial; + void Start() { + } + + void Update() { + } +} diff --git a/Assets/Scripts/Config.cs.meta b/Assets/Scripts/Config.cs.meta new file mode 100644 index 0000000..d454d0b --- /dev/null +++ b/Assets/Scripts/Config.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f1a9c31b852ee6488341a2da4b2fdee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Node.cs b/Assets/Scripts/Node.cs index b95e3a5..651f40e 100644 --- a/Assets/Scripts/Node.cs +++ b/Assets/Scripts/Node.cs @@ -4,17 +4,30 @@ public class Node { public FlatCircleRenderer circle = new FlatCircleRenderer(0.2f, 0.05f, 32); + public FlatCircleRenderer fullCircle = new FlatCircleRenderer(0f, 1f, 32); + public Vector3 position; public List roads = new List(); - public GameObject gameObject = new GameObject(); + public GameObject gameObject; - public Node(Vector3 position, Transform parent, Material material) { + public Node(Vector3 position, Transform parent, Config config) { + gameObject = new GameObject(); gameObject.transform.position = position; - gameObject.AddComponent().material = material; - gameObject.AddComponent().mesh = circle.mesh; - gameObject.AddComponent().radius = 0.25f; gameObject.transform.parent = parent; + gameObject.AddComponent().radius = 0.25f; gameObject.layer = 7; + + GameObject nodeCircle = new GameObject(); + nodeCircle.AddComponent().material = config.roadEditMaterial; + nodeCircle.AddComponent().mesh = circle.mesh; + nodeCircle.transform.parent = gameObject.transform; + nodeCircle.transform.localPosition = Vector3.zero; + + GameObject nodeRoad = new GameObject(); + nodeRoad.AddComponent().material = config.roadMaterial; + nodeRoad.AddComponent().mesh = fullCircle.mesh; + nodeRoad.transform.parent = gameObject.transform; + nodeRoad.transform.localPosition = Vector3.zero; this.position = position; } diff --git a/Assets/Materials/Road.mat b/Assets/Materials/Road.mat new file mode 100644 index 0000000..e10604a --- /dev/null +++ b/Assets/Materials/Road.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Road.mat.meta b/Assets/Materials/Road.mat.meta new file mode 100644 index 0000000..4718a1a --- /dev/null +++ b/Assets/Materials/Road.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b0a930ba0e3dba46a226bb15ae71b80 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index d050c89..837f323 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -123,6 +123,51 @@ debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &128843414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 128843416} + - component: {fileID: 128843415} + m_Layer: 0 + m_Name: Config + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &128843415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2f1a9c31b852ee6488341a2da4b2fdee, type: 3} + m_Name: + m_EditorClassIdentifier: + roadMaterial: {fileID: 2100000, guid: 1b0a930ba0e3dba46a226bb15ae71b80, type: 2} + roadEditMaterial: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} +--- !u!4 &128843416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.88340354, y: -0.10408807, z: 0.8284404} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &683864801 GameObject: m_ObjectHideFlags: 0 @@ -216,7 +261,7 @@ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &705507993 GameObject: @@ -406,6 +451,7 @@ - component: {fileID: 978069799} - component: {fileID: 978069798} - component: {fileID: 978069797} + - component: {fileID: 978069801} m_Layer: 6 m_Name: Plane m_TagString: Untagged @@ -488,8 +534,21 @@ m_LocalScale: {x: 100, y: 1, z: 100} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &978069801 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978069796} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 0.002, z: 10} + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1256630289 GameObject: m_ObjectHideFlags: 0 @@ -541,102 +600,6 @@ cursor: {fileID: 683864801} roads: {fileID: 1714391591} cursorPosition: {x: 0, y: 0, z: 0} ---- !u!1 &1430037196 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1430037200} - - component: {fileID: 1430037199} - - component: {fileID: 1430037198} - - component: {fileID: 1430037197} - m_Layer: 6 - m_Name: ground - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!64 &1430037197 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1430037198 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Enabled: 1 - m_CastShadows: 0 - 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: 341e2be97c2570d45b1efe58bac95565, 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 &1430037199 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1430037200 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - 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: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1714391591 GameObject: m_ObjectHideFlags: 0 @@ -666,7 +629,7 @@ m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1714391594 MonoBehaviour: @@ -682,3 +645,4 @@ m_EditorClassIdentifier: mainCamera: {fileID: 963194227} material: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} + config: {fileID: 128843415} diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs new file mode 100644 index 0000000..4078a80 --- /dev/null +++ b/Assets/Scripts/Config.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Config : MonoBehaviour { + public Material roadMaterial; + public Material roadEditMaterial; + void Start() { + } + + void Update() { + } +} diff --git a/Assets/Scripts/Config.cs.meta b/Assets/Scripts/Config.cs.meta new file mode 100644 index 0000000..d454d0b --- /dev/null +++ b/Assets/Scripts/Config.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f1a9c31b852ee6488341a2da4b2fdee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Node.cs b/Assets/Scripts/Node.cs index b95e3a5..651f40e 100644 --- a/Assets/Scripts/Node.cs +++ b/Assets/Scripts/Node.cs @@ -4,17 +4,30 @@ public class Node { public FlatCircleRenderer circle = new FlatCircleRenderer(0.2f, 0.05f, 32); + public FlatCircleRenderer fullCircle = new FlatCircleRenderer(0f, 1f, 32); + public Vector3 position; public List roads = new List(); - public GameObject gameObject = new GameObject(); + public GameObject gameObject; - public Node(Vector3 position, Transform parent, Material material) { + public Node(Vector3 position, Transform parent, Config config) { + gameObject = new GameObject(); gameObject.transform.position = position; - gameObject.AddComponent().material = material; - gameObject.AddComponent().mesh = circle.mesh; - gameObject.AddComponent().radius = 0.25f; gameObject.transform.parent = parent; + gameObject.AddComponent().radius = 0.25f; gameObject.layer = 7; + + GameObject nodeCircle = new GameObject(); + nodeCircle.AddComponent().material = config.roadEditMaterial; + nodeCircle.AddComponent().mesh = circle.mesh; + nodeCircle.transform.parent = gameObject.transform; + nodeCircle.transform.localPosition = Vector3.zero; + + GameObject nodeRoad = new GameObject(); + nodeRoad.AddComponent().material = config.roadMaterial; + nodeRoad.AddComponent().mesh = fullCircle.mesh; + nodeRoad.transform.parent = gameObject.transform; + nodeRoad.transform.localPosition = Vector3.zero; this.position = position; } diff --git a/Assets/Scripts/Road.cs b/Assets/Scripts/Road.cs index 6bfb7a9..7250559 100644 --- a/Assets/Scripts/Road.cs +++ b/Assets/Scripts/Road.cs @@ -4,48 +4,57 @@ public class Road { public List nodes = new List(); - FlatBezierRenderer bezierRenderer; - Material material; + Bezier path; + FlatBezierRenderer pathLine; + FlatBezierRenderer roadBody; + Config config; - public Road(Node start, Node end, Material material) { + public Road(Node start, Node end, Config config) { nodes.Add(start); nodes.Add(end); - this.material = material; - bezierRenderer = new FlatBezierRenderer(new Bezier(), 50, 0.2f); + path = new Bezier(); + pathLine = new FlatBezierRenderer(path, 50, 0.05f); + roadBody = new FlatBezierRenderer(path, 50, 2f); + this.config = config; } public void initialize(Transform parent) { - GameObject child = new GameObject(); - child.transform.position = Vector3.zero; - child.AddComponent().material = material; - child.AddComponent().mesh = bezierRenderer.mesh; - child.transform.parent = parent; + GameObject lineChild = new GameObject(); + lineChild.transform.position = Vector3.zero; + lineChild.AddComponent().material = config.roadEditMaterial; + lineChild.AddComponent().mesh = pathLine.mesh; + lineChild.transform.parent = parent; + GameObject roadChild = new GameObject(); + roadChild.transform.position = Vector3.zero; + roadChild.AddComponent().material = config.roadMaterial; + roadChild.AddComponent().mesh = roadBody.mesh; + roadChild.transform.parent = parent; update(true); } public void update(bool updateOthers) { - bezierRenderer.bezier.A = nodes[0].position; + path.A = nodes[0].position; if (nodes[0].roads.Count == 2) { - if (updateOthers) { - nodes[0].lateUpdate(this); - } - bezierRenderer.bezier.B = nodes[0].position + + path.B = nodes[0].position + 0.25f * (nodes[1].position - nodes[0].getOther(nodes[1]).position); } else { - bezierRenderer.bezier.B = 0.5f * (nodes[0].position + nodes[1].position); + path.B = 0.5f * (nodes[0].position + nodes[1].position); } if (nodes[1].roads.Count == 2) { - if (updateOthers) { - nodes[1].lateUpdate(this); - } - bezierRenderer.bezier.C = nodes[1].position + + path.C = nodes[1].position + 0.25f * (nodes[0].position - nodes[1].getOther(nodes[0]).position); } else { - bezierRenderer.bezier.C = 0.5f * (nodes[0].position + nodes[1].position); + path.C = 0.5f * (nodes[0].position + nodes[1].position); } - bezierRenderer.bezier.D = nodes[1].position; - bezierRenderer.update(); + if (updateOthers) { + foreach (Node node in nodes) { + node.lateUpdate(this); + } + } + path.D = nodes[1].position; + pathLine.update(); + roadBody.update(); } override public bool Equals(object other) { diff --git a/Assets/Materials/Road.mat b/Assets/Materials/Road.mat new file mode 100644 index 0000000..e10604a --- /dev/null +++ b/Assets/Materials/Road.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Road.mat.meta b/Assets/Materials/Road.mat.meta new file mode 100644 index 0000000..4718a1a --- /dev/null +++ b/Assets/Materials/Road.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b0a930ba0e3dba46a226bb15ae71b80 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index d050c89..837f323 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -123,6 +123,51 @@ debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &128843414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 128843416} + - component: {fileID: 128843415} + m_Layer: 0 + m_Name: Config + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &128843415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2f1a9c31b852ee6488341a2da4b2fdee, type: 3} + m_Name: + m_EditorClassIdentifier: + roadMaterial: {fileID: 2100000, guid: 1b0a930ba0e3dba46a226bb15ae71b80, type: 2} + roadEditMaterial: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} +--- !u!4 &128843416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 128843414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.88340354, y: -0.10408807, z: 0.8284404} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &683864801 GameObject: m_ObjectHideFlags: 0 @@ -216,7 +261,7 @@ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &705507993 GameObject: @@ -406,6 +451,7 @@ - component: {fileID: 978069799} - component: {fileID: 978069798} - component: {fileID: 978069797} + - component: {fileID: 978069801} m_Layer: 6 m_Name: Plane m_TagString: Untagged @@ -488,8 +534,21 @@ m_LocalScale: {x: 100, y: 1, z: 100} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &978069801 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978069796} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 0.002, z: 10} + m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1256630289 GameObject: m_ObjectHideFlags: 0 @@ -541,102 +600,6 @@ cursor: {fileID: 683864801} roads: {fileID: 1714391591} cursorPosition: {x: 0, y: 0, z: 0} ---- !u!1 &1430037196 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1430037200} - - component: {fileID: 1430037199} - - component: {fileID: 1430037198} - - component: {fileID: 1430037197} - m_Layer: 6 - m_Name: ground - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!64 &1430037197 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1430037198 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Enabled: 1 - m_CastShadows: 0 - 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: 341e2be97c2570d45b1efe58bac95565, 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 &1430037199 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1430037200 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430037196} - 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: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1714391591 GameObject: m_ObjectHideFlags: 0 @@ -666,7 +629,7 @@ m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1714391594 MonoBehaviour: @@ -682,3 +645,4 @@ m_EditorClassIdentifier: mainCamera: {fileID: 963194227} material: {fileID: 2100000, guid: e2c5b6e79b6cdb545863f245ced42125, type: 2} + config: {fileID: 128843415} diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs new file mode 100644 index 0000000..4078a80 --- /dev/null +++ b/Assets/Scripts/Config.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Config : MonoBehaviour { + public Material roadMaterial; + public Material roadEditMaterial; + void Start() { + } + + void Update() { + } +} diff --git a/Assets/Scripts/Config.cs.meta b/Assets/Scripts/Config.cs.meta new file mode 100644 index 0000000..d454d0b --- /dev/null +++ b/Assets/Scripts/Config.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f1a9c31b852ee6488341a2da4b2fdee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Node.cs b/Assets/Scripts/Node.cs index b95e3a5..651f40e 100644 --- a/Assets/Scripts/Node.cs +++ b/Assets/Scripts/Node.cs @@ -4,17 +4,30 @@ public class Node { public FlatCircleRenderer circle = new FlatCircleRenderer(0.2f, 0.05f, 32); + public FlatCircleRenderer fullCircle = new FlatCircleRenderer(0f, 1f, 32); + public Vector3 position; public List roads = new List(); - public GameObject gameObject = new GameObject(); + public GameObject gameObject; - public Node(Vector3 position, Transform parent, Material material) { + public Node(Vector3 position, Transform parent, Config config) { + gameObject = new GameObject(); gameObject.transform.position = position; - gameObject.AddComponent().material = material; - gameObject.AddComponent().mesh = circle.mesh; - gameObject.AddComponent().radius = 0.25f; gameObject.transform.parent = parent; + gameObject.AddComponent().radius = 0.25f; gameObject.layer = 7; + + GameObject nodeCircle = new GameObject(); + nodeCircle.AddComponent().material = config.roadEditMaterial; + nodeCircle.AddComponent().mesh = circle.mesh; + nodeCircle.transform.parent = gameObject.transform; + nodeCircle.transform.localPosition = Vector3.zero; + + GameObject nodeRoad = new GameObject(); + nodeRoad.AddComponent().material = config.roadMaterial; + nodeRoad.AddComponent().mesh = fullCircle.mesh; + nodeRoad.transform.parent = gameObject.transform; + nodeRoad.transform.localPosition = Vector3.zero; this.position = position; } diff --git a/Assets/Scripts/Road.cs b/Assets/Scripts/Road.cs index 6bfb7a9..7250559 100644 --- a/Assets/Scripts/Road.cs +++ b/Assets/Scripts/Road.cs @@ -4,48 +4,57 @@ public class Road { public List nodes = new List(); - FlatBezierRenderer bezierRenderer; - Material material; + Bezier path; + FlatBezierRenderer pathLine; + FlatBezierRenderer roadBody; + Config config; - public Road(Node start, Node end, Material material) { + public Road(Node start, Node end, Config config) { nodes.Add(start); nodes.Add(end); - this.material = material; - bezierRenderer = new FlatBezierRenderer(new Bezier(), 50, 0.2f); + path = new Bezier(); + pathLine = new FlatBezierRenderer(path, 50, 0.05f); + roadBody = new FlatBezierRenderer(path, 50, 2f); + this.config = config; } public void initialize(Transform parent) { - GameObject child = new GameObject(); - child.transform.position = Vector3.zero; - child.AddComponent().material = material; - child.AddComponent().mesh = bezierRenderer.mesh; - child.transform.parent = parent; + GameObject lineChild = new GameObject(); + lineChild.transform.position = Vector3.zero; + lineChild.AddComponent().material = config.roadEditMaterial; + lineChild.AddComponent().mesh = pathLine.mesh; + lineChild.transform.parent = parent; + GameObject roadChild = new GameObject(); + roadChild.transform.position = Vector3.zero; + roadChild.AddComponent().material = config.roadMaterial; + roadChild.AddComponent().mesh = roadBody.mesh; + roadChild.transform.parent = parent; update(true); } public void update(bool updateOthers) { - bezierRenderer.bezier.A = nodes[0].position; + path.A = nodes[0].position; if (nodes[0].roads.Count == 2) { - if (updateOthers) { - nodes[0].lateUpdate(this); - } - bezierRenderer.bezier.B = nodes[0].position + + path.B = nodes[0].position + 0.25f * (nodes[1].position - nodes[0].getOther(nodes[1]).position); } else { - bezierRenderer.bezier.B = 0.5f * (nodes[0].position + nodes[1].position); + path.B = 0.5f * (nodes[0].position + nodes[1].position); } if (nodes[1].roads.Count == 2) { - if (updateOthers) { - nodes[1].lateUpdate(this); - } - bezierRenderer.bezier.C = nodes[1].position + + path.C = nodes[1].position + 0.25f * (nodes[0].position - nodes[1].getOther(nodes[0]).position); } else { - bezierRenderer.bezier.C = 0.5f * (nodes[0].position + nodes[1].position); + path.C = 0.5f * (nodes[0].position + nodes[1].position); } - bezierRenderer.bezier.D = nodes[1].position; - bezierRenderer.update(); + if (updateOthers) { + foreach (Node node in nodes) { + node.lateUpdate(this); + } + } + path.D = nodes[1].position; + pathLine.update(); + roadBody.update(); } override public bool Equals(object other) { diff --git a/Assets/Scripts/Roads.cs b/Assets/Scripts/Roads.cs index cfa46b8..9581ad2 100644 --- a/Assets/Scripts/Roads.cs +++ b/Assets/Scripts/Roads.cs @@ -9,6 +9,7 @@ public Camera mainCamera; private bool drawing = false; public Material material; + public Config config; void Start() { } @@ -25,7 +26,7 @@ } } Vector3 position = new Vector3(hit.point.x, 0.0f, hit.point.z); - startNode = new Node(position, transform, material); + startNode = new Node(position, transform, config); nodes.Add(startNode); drawing = true; } @@ -41,11 +42,11 @@ } if (endNode == null) { Vector3 position = new Vector3(hit.point.x, 0.0f, hit.point.z); - endNode = new Node(position, transform, material); + endNode = new Node(position, transform, config); nodes.Add(endNode); } - Road road = new Road(startNode, endNode, material); - if (!roads.Contains(road)) { + Road road = new Road(startNode, endNode, config); + if (!roads.Contains(road) && startNode != endNode) { startNode.roads.Add(road); endNode.roads.Add(road); roads.Add(road);