diff --git a/Assets/ChronoVehicle/Resources/ChronoSCMTerrain.prefab b/Assets/ChronoVehicle/Resources/ChronoSCMTerrain.prefab new file mode 100644 index 00000000..c263f508 --- /dev/null +++ b/Assets/ChronoVehicle/Resources/ChronoSCMTerrain.prefab @@ -0,0 +1,155 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &831887898043353595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4923809697739331328} + - component: {fileID: 8581063918357861091} + - component: {fileID: 4288923727769950543} + - component: {fileID: 3638464821983472091} + m_Layer: 0 + m_Name: Terrain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &4923809697739331328 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 831887898043353595} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -25, y: 0, z: -25} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4756648405821313208} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!218 &8581063918357861091 +Terrain: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 831887898043353595} + m_Enabled: 1 + serializedVersion: 6 + m_TerrainData: {fileID: 15600000, guid: ddabebde60d320547bf103cdbace4159, type: 2} + m_TreeDistance: 5000 + m_TreeBillboardDistance: 50 + m_TreeCrossFadeLength: 5 + m_TreeMaximumFullLODCount: 50 + m_DetailObjectDistance: 80 + m_DetailObjectDensity: 1 + m_HeightmapPixelError: 5 + m_SplatMapDistance: 331 + m_HeightmapMinimumLODSimplification: 0 + m_HeightmapMaximumLOD: 0 + m_ShadowCastingMode: 2 + m_DrawHeightmap: 1 + m_DrawInstanced: 0 + m_DrawTreesAndFoliage: 1 + m_StaticShadowCaster: 0 + m_IgnoreQualitySettings: 0 + m_ReflectionProbeUsage: 1 + m_MaterialTemplate: {fileID: 2100000, guid: f0ec8ee621184e743ad0662a15a0620f, type: 2} + m_BakeLightProbesForTrees: 1 + m_PreserveTreePrototypeLayers: 0 + m_DeringLightProbesForTrees: 1 + m_ReceiveGI: 1 + m_ScaleInLightmap: 0.08533333 + m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} + m_GroupingID: 0 + m_RenderingLayerMask: 4294967294 + m_AllowAutoConnect: 1 + m_EnableHeightmapRayTracing: 1 + m_EnableTreesAndDetailsRayTracing: 0 + m_TreeMotionVectorModeOverride: 3 +--- !u!154 &4288923727769950543 +TerrainCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 831887898043353595} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_TerrainData: {fileID: 15600000, guid: ddabebde60d320547bf103cdbace4159, type: 2} + m_EnableTreeColliders: 0 +--- !u!114 &3638464821983472091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 831887898043353595} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1297a7a7eff7bdce9a27d86c0b7dc794, type: 3} + m_Name: + m_EditorClassIdentifier: + terrainSplit: 0 + patchType: 1 +--- !u!1 &7687447254837902595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4756648405821313208} + - component: {fileID: 7400445348504031781} + m_Layer: 0 + m_Name: ChronoSCMTerrain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4756648405821313208 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7687447254837902595} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4923809697739331328} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7400445348504031781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7687447254837902595} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c9bdb7e59be63d52bb015d1dd6eba07, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/ChronoVehicle/Resources/ChronoSCMTerrain.prefab.meta b/Assets/ChronoVehicle/Resources/ChronoSCMTerrain.prefab.meta new file mode 100644 index 00000000..59d88e4f --- /dev/null +++ b/Assets/ChronoVehicle/Resources/ChronoSCMTerrain.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ebc90ca8cc2007ac4b2a0805b6b2dc72 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Vehicle/JSONVehicleSCM.unity b/Assets/Scenes/Vehicle/JSONVehicleSCM.unity new file mode 100644 index 00000000..b37d8bfe --- /dev/null +++ b/Assets/Scenes/Vehicle/JSONVehicleSCM.unity @@ -0,0 +1,2676 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000000, guid: 3d45d9945329ad54384f6c0dd6c38739, + type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: 8cf8c8056e51a844f845123e4d1ba77b, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &28965898 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7194074963564705869, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_Name + value: ChronoSystem + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: step + value: 0.002 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: gravity.y + value: -9.8 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: solverType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: contact_method + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: integratorType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: solverTolerance + value: 0.001 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: integratorRelTol + value: 0.001 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: solverEnablePrecond + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: solverMaxIterations + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705906, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: solverEnableWarmStart + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7194074963564705907, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 7194074963564705869, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + insertIndex: -1 + addedObject: {fileID: 870851654} + m_SourcePrefab: {fileID: 100100000, guid: 434044898e2439248a0db16bad6f0518, type: 3} +--- !u!21 &48103357 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Universal Render Pipeline/Lit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _Color: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!21 &204397500 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Universal Render Pipeline/Lit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _Color: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!21 &270113366 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Universal Render Pipeline/Lit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _Color: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!1001 &323331775 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2546140170143836643, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_Name + value: BodyBox + objectReference: {fileID: 0} + - target: {fileID: 2546140170143836643, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.89 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.y + value: 2.884 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0.12 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.8109448 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0.33178666 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.15707017 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.455648 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 23.265 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 37.331 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 66.617 + objectReference: {fileID: 0} + - target: {fileID: 7508321240857850383, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: isFixed + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: bc654b3a71d1e254fbcc9de913be87d6, type: 3} +--- !u!1 &493905905 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 493905907} + - component: {fileID: 493905906} + - component: {fileID: 493905908} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &493905906 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493905905} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 0.4 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &493905907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493905905} + serializedVersion: 2 + m_LocalRotation: {x: 0.22414392, y: 0.48296294, z: -0.12940955, w: 0.8365163} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 30, y: 60, z: 0} +--- !u!114 &493905908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493905905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!1001 &503786908 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1382353597} + m_Modifications: + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalPosition.z + value: 0.91 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9005860984637603337, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_Name + value: Wheel_Left + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 32ec1af8134f95741bf7073d031d0345, type: 3} +--- !u!4 &503786909 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + m_PrefabInstance: {fileID: 503786908} + m_PrefabAsset: {fileID: 0} +--- !u!1 &503786910 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 9005860984637603337, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + m_PrefabInstance: {fileID: 503786908} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &548555222 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 680926433} + m_Modifications: + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalPosition.z + value: 0.91 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9005860984637603337, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + propertyPath: m_Name + value: Wheel_Left + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 32ec1af8134f95741bf7073d031d0345, type: 3} +--- !u!4 &548555223 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8149443897093263684, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + m_PrefabInstance: {fileID: 548555222} + m_PrefabAsset: {fileID: 0} +--- !u!1 &548555224 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 9005860984637603337, guid: 32ec1af8134f95741bf7073d031d0345, + type: 3} + m_PrefabInstance: {fileID: 548555222} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &556068664 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2546140170143836643, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_Name + value: BodyBox (1) + objectReference: {fileID: 0} + - target: {fileID: 2546140170143836643, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.89 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.y + value: 2.57 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.z + value: 3.07 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.8109448 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0.33178666 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.15707017 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.455648 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 23.265 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 37.331 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 66.617 + objectReference: {fileID: 0} + - target: {fileID: 7508321240857850383, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: isFixed + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: bc654b3a71d1e254fbcc9de913be87d6, type: 3} +--- !u!1 &628659081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 628659083} + - component: {fileID: 628659082} + - component: {fileID: 628659084} + m_Layer: 0 + m_Name: Directional Light (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &628659082 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628659081} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 0.4 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &628659083 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628659081} + serializedVersion: 2 + m_LocalRotation: {x: 0.18301274, y: -0.6830127, z: 0.18301274, w: 0.6830127} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 30, y: -90, z: 0} +--- !u!114 &628659084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628659081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!1 &680926432 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 680926433} + m_Layer: 0 + m_Name: Axle_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &680926433 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 680926432} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.688965, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1389803016} + - {fileID: 548555223} + - {fileID: 1083708788} + m_Father: {fileID: 939440521} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &870851651 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7194074963564705869, guid: 434044898e2439248a0db16bad6f0518, + type: 3} + m_PrefabInstance: {fileID: 28965898} + m_PrefabAsset: {fileID: 0} +--- !u!114 &870851654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 870851651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5e51ef961a70a014ba630d6144c3fdc7, type: 3} + m_Name: + m_EditorClassIdentifier: + transformShader: {fileID: 7200000, guid: 4a284a85f76b7174c9fa13c49c8cfe4e, type: 3} + drawShader: {fileID: 0} + lineColor: {r: 0, g: 1, b: 1, a: 1} + maxDistance: 25 + useLazyRefresh: 1 +--- !u!4 &939440521 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + m_PrefabInstance: {fileID: 5688247978033564598} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1083708786 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 680926433} + m_Modifications: + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.91 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7064417807032647134, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_Name + value: Wheel_Right + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, type: 3} +--- !u!1 &1083708787 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7064417807032647134, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + m_PrefabInstance: {fileID: 1083708786} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1083708788 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + m_PrefabInstance: {fileID: 1083708786} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1135765391 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2546140170143836643, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_Name + value: BodyBox (2) + objectReference: {fileID: 0} + - target: {fileID: 2546140170143836643, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.89 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.y + value: 5.92 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.z + value: -5.49 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.8109448 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0.33178666 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.15707017 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.455648 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 23.265 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 37.331 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 66.617 + objectReference: {fileID: 0} + - target: {fileID: 7508321240857850383, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: isFixed + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: bc654b3a71d1e254fbcc9de913be87d6, type: 3} +--- !u!1001 &1254255470 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 831887898043353595, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_StaticEditorFlags + value: 127 + objectReference: {fileID: 0} + - target: {fileID: 3638464821983472091, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: terrainSplit + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4756648405821313208, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7400445348504031781, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: BekkerN + value: 1.1 + objectReference: {fileID: 0} + - target: {fileID: 7400445348504031781, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: BekkerKc + value: 1370 + objectReference: {fileID: 0} + - target: {fileID: 7400445348504031781, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: DampingR + value: 3000 + objectReference: {fileID: 0} + - target: {fileID: 7400445348504031781, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: ElasticK + value: 200000 + objectReference: {fileID: 0} + - target: {fileID: 7400445348504031781, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: BekkerKphi + value: 81400 + objectReference: {fileID: 0} + - target: {fileID: 7400445348504031781, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: JanosiShear + value: 0.01 + objectReference: {fileID: 0} + - target: {fileID: 7400445348504031781, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: MohrCohesion + value: 0.9 + objectReference: {fileID: 0} + - target: {fileID: 7400445348504031781, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: MohrFriction + value: 45 + objectReference: {fileID: 0} + - target: {fileID: 7687447254837902595, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_Name + value: ChronoSCMTerrain + objectReference: {fileID: 0} + - target: {fileID: 8581063918357861091, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, + type: 3} + propertyPath: m_MaterialTemplate + value: + objectReference: {fileID: -4071484339944563669, guid: c94b54451f414e44fb414d29c98be2bc, + type: 3} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ebc90ca8cc2007ac4b2a0805b6b2dc72, type: 3} +--- !u!1 &1382353596 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1382353597} + m_Layer: 0 + m_Name: Axle_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1382353597 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1382353596} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.688965, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1741994801} + - {fileID: 503786909} + - {fileID: 1629277314} + m_Father: {fileID: 939440521} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1389803015 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1389803016} + - component: {fileID: 1389803019} + - component: {fileID: 1389803018} + - component: {fileID: 1389803017} + m_Layer: 0 + m_Name: AxleTube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1389803016 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1389803015} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.91, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 680926433} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1389803017 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1389803015} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 270113366} + 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: 1 + 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!136 &1389803018 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1389803015} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1389803019 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1389803015} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1390199716 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1390199717} + m_Layer: 0 + m_Name: Chassis + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1390199717 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390199716} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: -0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3764320789813553618} + m_Father: {fileID: 939440521} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1429654996 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4675249412613692364, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + m_PrefabInstance: {fileID: 1708424810} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1429655001 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1429654996} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!21 &1621820294 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Universal Render Pipeline/Lit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _Color: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!1001 &1629277312 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1382353597} + m_Modifications: + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.91 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7064417807032647134, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + propertyPath: m_Name + value: Wheel_Right + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, type: 3} +--- !u!1 &1629277313 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7064417807032647134, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + m_PrefabInstance: {fileID: 1629277312} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1629277314 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5011379158602150359, guid: 9ade7905a44fa8e4fa35a9b8ef00dde8, + type: 3} + m_PrefabInstance: {fileID: 1629277312} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1708424810 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4675249412613692360, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: target + value: + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692360, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: textColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692360, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: textColor.b + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692360, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: textColor.g + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692360, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: textColor.r + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692360, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: cameraHeight + value: 4.7 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692360, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: cameraDistance + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalPosition.x + value: 13.967054 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalPosition.y + value: 7.3806515 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalPosition.z + value: -16.941195 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.9326917 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalRotation.x + value: 0.121884495 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.3366111 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.043856446 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692363, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4675249412613692364, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + propertyPath: m_Name + value: ChaseCamera + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 4675249412613692364, guid: ee3e6db3bf57734439662c1ecc464407, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1429655001} + m_SourcePrefab: {fileID: 100100000, guid: ee3e6db3bf57734439662c1ecc464407, type: 3} +--- !u!1 &1741994800 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1741994801} + - component: {fileID: 1741994804} + - component: {fileID: 1741994803} + - component: {fileID: 1741994802} + m_Layer: 0 + m_Name: AxleTube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1741994801 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741994800} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.91, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1382353597} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1741994802 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741994800} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 1621820294} + 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: 1 + 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!136 &1741994803 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741994800} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1741994804 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741994800} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1746541514 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2546140170143836643, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_Name + value: BodyBox (3) + objectReference: {fileID: 0} + - target: {fileID: 2546140170143836643, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.x + value: -2.42 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.y + value: 4.5 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalPosition.z + value: -5.66 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.8109448 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0.33178666 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.15707017 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.455648 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 23.265 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 37.331 + objectReference: {fileID: 0} + - target: {fileID: 6842873632533509312, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 66.617 + objectReference: {fileID: 0} + - target: {fileID: 7508321240857850383, guid: bc654b3a71d1e254fbcc9de913be87d6, + type: 3} + propertyPath: isFixed + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: bc654b3a71d1e254fbcc9de913be87d6, type: 3} +--- !u!1001 &1757106929 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088252, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7718292783274088254, guid: 3174675141e2b12459a5be9cac987b8b, + type: 3} + propertyPath: m_Name + value: SceneSelectManager + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3174675141e2b12459a5be9cac987b8b, type: 3} +--- !u!1 &173058768788167617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3764320789813553618} + m_Layer: 0 + m_Name: hmmwv_chassis + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &3400552366614741705 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5938733499792653916} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -8235880677411486938, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: 2258392231423480457, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: -4993794528133976565, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: 4318424872104097182, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: 3574481235112033559, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: 1105124254922761224, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: -1382889745515219807, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: -4655039199120546984, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: 600354866653282500, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + - {fileID: -1115560628295733232, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} + 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!4 &3764320789813553618 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173058768788167617} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6652751367586069226} + m_Father: {fileID: 1390199717} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1001 &5688247978033564598 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 420619809965873332, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: speedMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 616631730426654124, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_Name + value: Chrono_Vehicle + objectReference: {fileID: 0} + - target: {fileID: 2100622175890812915, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 204397500} + - target: {fileID: 2510751817326555908, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 48103357} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: tireJSON + value: hmmwv/tire/HMMWV_RigidTire.json + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: transJSON + value: hmmwv/powertrain/HMMWV_AutomaticTransmissionShafts.json + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: engineJSON + value: hmmwv/powertrain/HMMWV_EngineShafts.json + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: initForwardVel + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: tireCollisionType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: tireAssignmentMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: axleData.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: topLevelVehicleJSON + value: hmmwv/vehicle/HMMWV_Vehicle.json + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: tireOverrideStateHash + value: hmmwv/vehicle/HMMWV_Vehicle.json|SingleFile|2|4|0 + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: perAxleTireSpec.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'perAxleTireSpec.Array.data[0]' + value: MAN_Kat1/tire/MAN_5t_TMeasyTire.json + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'perAxleTireSpec.Array.data[1]' + value: MAN_Kat1/tire/MAN_5t_TMeasyTire.json + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'perAxleTireSpec.Array.data[2]' + value: MAN_Kat1/tire/MAN_5t_TMeasyTire.json + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'perAxleTireSpec.Array.data[3]' + value: MAN_Kat1/tire/MAN_5t_TMeasyTire.json + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: axleData.Array.data[2].visualGameobjects.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: axleData.Array.data[3].visualGameobjects.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'axleData.Array.data[0].visualGameobjects.Array.data[0]' + value: + objectReference: {fileID: 548555224} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'axleData.Array.data[0].visualGameobjects.Array.data[1]' + value: + objectReference: {fileID: 1083708787} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'axleData.Array.data[1].visualGameobjects.Array.data[0]' + value: + objectReference: {fileID: 503786910} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'axleData.Array.data[1].visualGameobjects.Array.data[1]' + value: + objectReference: {fileID: 1629277313} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'axleData.Array.data[2].visualGameobjects.Array.data[0]' + value: + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'axleData.Array.data[2].visualGameobjects.Array.data[1]' + value: + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'axleData.Array.data[3].visualGameobjects.Array.data[0]' + value: + objectReference: {fileID: 0} + - target: {fileID: 5227840714540645406, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: 'axleData.Array.data[3].visualGameobjects.Array.data[1]' + value: + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalPosition.x + value: -20.81 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalPosition.y + value: 2.42 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalPosition.z + value: -7.37 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: + - {fileID: 3892457527085606829, guid: a55e76d27d588f04d8132b71057a5e89, type: 3} + - {fileID: 6243128222024175421, guid: a55e76d27d588f04d8132b71057a5e89, type: 3} + - {fileID: 4284802749906221426, guid: a55e76d27d588f04d8132b71057a5e89, type: 3} + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1390199717} + - targetCorrespondingSourceObject: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + insertIndex: -1 + addedObject: {fileID: 680926433} + - targetCorrespondingSourceObject: {fileID: 8813667050032779387, guid: a55e76d27d588f04d8132b71057a5e89, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1382353597} + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a55e76d27d588f04d8132b71057a5e89, type: 3} +--- !u!1 &5938733499792653916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6652751367586069226} + - component: {fileID: 6202462280944381497} + - component: {fileID: 3400552366614741705} + m_Layer: 0 + m_Name: default + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!33 &6202462280944381497 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5938733499792653916} + m_Mesh: {fileID: -2432090755550338912, guid: fcb7e4bfee5582d4c85ba8b5b73a650e, type: 3} +--- !u!4 &6652751367586069226 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5938733499792653916} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 1, w: 0} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3764320789813553618} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 493905907} + - {fileID: 628659083} + - {fileID: 1708424810} + - {fileID: 28965898} + - {fileID: 1757106929} + - {fileID: 323331775} + - {fileID: 556068664} + - {fileID: 1135765391} + - {fileID: 1746541514} + - {fileID: 5688247978033564598} + - {fileID: 1254255470} diff --git a/Assets/Scenes/Vehicle/JSONVehicleSCM.unity.meta b/Assets/Scenes/Vehicle/JSONVehicleSCM.unity.meta new file mode 100644 index 00000000..7803262c --- /dev/null +++ b/Assets/Scenes/Vehicle/JSONVehicleSCM.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea1aa7ae97f31b3848017173d38550bc +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/UWheeledVehicleInspector.cs b/Assets/Scripts/Editor/UWheeledVehicleInspector.cs index 9a12b069..878bfd2a 100644 --- a/Assets/Scripts/Editor/UWheeledVehicleInspector.cs +++ b/Assets/Scripts/Editor/UWheeledVehicleInspector.cs @@ -185,7 +185,7 @@ private void DrawNewInspectorGUI() // Safety check - if context isn't initialized, show error and return if (inspectorContext == null) { - EditorGUILayout.HelpBox("Inspector context not initialized. This may happen during script compilation. Try selecting the object again.", MessageType.Error); + EditorGUILayout.HelpBox("Inspector context not initialized. This may happen during script compilation. Try selecting the object again.", UnityEditor.MessageType.Error); if (GUILayout.Button("Reinitialize")) { OnEnable(); @@ -240,7 +240,7 @@ private void DrawNewInspectorGUI() } catch (System.Exception ex) { - EditorGUILayout.HelpBox($"Error rendering tab: {ex.Message}", MessageType.Error); + EditorGUILayout.HelpBox($"Error rendering tab: {ex.Message}", UnityEditor.MessageType.Error); Debug.LogException(ex); } finally diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/SyntaxHighlightedJsonEditor.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/SyntaxHighlightedJsonEditor.cs index 9a55f355..d00b1ad6 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/SyntaxHighlightedJsonEditor.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/SyntaxHighlightedJsonEditor.cs @@ -157,7 +157,7 @@ private void DrawErrorDisplay() { if (!string.IsNullOrEmpty(editorCore.ParseError)) { - EditorGUILayout.HelpBox($"JSON Parse Error: {editorCore.ParseError}", MessageType.Error); + EditorGUILayout.HelpBox($"JSON Parse Error: {editorCore.ParseError}", UnityEditor.MessageType.Error); } } diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/EngineTab.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/EngineTab.cs index 3c172da5..c6cf2050 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/EngineTab.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/EngineTab.cs @@ -95,11 +95,11 @@ public override void DrawTab() } else if (string.IsNullOrEmpty(Context.Vehicle.engineJSON)) { - EditorGUILayout.HelpBox("No engine JSON file assigned. Select a file above.", MessageType.Info); + EditorGUILayout.HelpBox("No engine JSON file assigned. Select a file above.", UnityEditor.MessageType.Info); } else { - EditorGUILayout.HelpBox("Engine JSON could not be loaded. Check console for errors.", MessageType.Warning); + EditorGUILayout.HelpBox("Engine JSON could not be loaded. Check console for errors.", UnityEditor.MessageType.Warning); } } diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/OverviewTab.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/OverviewTab.cs index e9329da9..cc3dea98 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/OverviewTab.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/OverviewTab.cs @@ -116,7 +116,7 @@ private void DrawAxleConfiguration() } else { - EditorGUILayout.HelpBox("Load a vehicle JSON to configure axles.", MessageType.Info); + EditorGUILayout.HelpBox("Load a vehicle JSON to configure axles.", UnityEditor.MessageType.Info); } } @@ -229,7 +229,7 @@ private void DrawPerAxleTireOverviewSection() int axleCount = Context.Vehicle.axleData?.Count ?? 0; if (axleCount == 0) { - EditorGUILayout.HelpBox("No axles detected. Load a vehicle JSON to configure per-axle tires.", MessageType.Info); + EditorGUILayout.HelpBox("No axles detected. Load a vehicle JSON to configure per-axle tires.", UnityEditor.MessageType.Info); return; } diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/PrefabsTab.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/PrefabsTab.cs index bd160c68..1185aed3 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/PrefabsTab.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/PrefabsTab.cs @@ -83,7 +83,7 @@ private void DrawPrefabScannerInfo() } else { - EditorGUILayout.HelpBox("No vehicle prefabs found. Prefabs can be manually assigned below.", MessageType.Warning); + EditorGUILayout.HelpBox("No vehicle prefabs found. Prefabs can be manually assigned below.", UnityEditor.MessageType.Warning); } } @@ -183,7 +183,7 @@ private void DrawWheelAssignments(int numAxles, VehiclePrefabScanner.VehicleSetu if (numAxles == 0) { - EditorGUILayout.HelpBox("Load a vehicle JSON first to configure wheels.", MessageType.Info); + EditorGUILayout.HelpBox("Load a vehicle JSON first to configure wheels.", UnityEditor.MessageType.Info); return; } diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/RawJsonTab.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/RawJsonTab.cs index 554f7c6e..8ec8a9e0 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/RawJsonTab.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/RawJsonTab.cs @@ -331,13 +331,13 @@ public override void DrawTab() } else { - EditorGUILayout.HelpBox($"No {currentTarget} JSON loaded. Select a file in the Overview tab.", MessageType.Info); + EditorGUILayout.HelpBox($"No {currentTarget} JSON loaded. Select a file in the Overview tab.", UnityEditor.MessageType.Info); } } private void LoadVehicleAsync() { - EditorGUILayout.HelpBox("Loading vehicle JSON...", MessageType.Info); + EditorGUILayout.HelpBox("Loading vehicle JSON...", UnityEditor.MessageType.Info); EditorApplication.delayCall += () => { if (Context.Vehicle != null) { @@ -360,7 +360,7 @@ private void LoadVehicleAsync() private void LoadEngineAsync() { - EditorGUILayout.HelpBox("Loading engine JSON...", MessageType.Info); + EditorGUILayout.HelpBox("Loading engine JSON...", UnityEditor.MessageType.Info); EditorApplication.delayCall += () => { if (Context.Vehicle != null) { @@ -383,7 +383,7 @@ private void LoadEngineAsync() private void LoadTransmissionAsync() { - EditorGUILayout.HelpBox("Loading transmission JSON...", MessageType.Info); + EditorGUILayout.HelpBox("Loading transmission JSON...", UnityEditor.MessageType.Info); EditorApplication.delayCall += () => { if (Context.Vehicle != null) { @@ -406,7 +406,7 @@ private void LoadTransmissionAsync() private void LoadTireAsync() { - EditorGUILayout.HelpBox("Loading tire JSON...", MessageType.Info); + EditorGUILayout.HelpBox("Loading tire JSON...", UnityEditor.MessageType.Info); EditorApplication.delayCall += () => { if (Context.Vehicle != null) { diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/TiresTab.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/TiresTab.cs index b18edf15..a51a4964 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/TiresTab.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/TiresTab.cs @@ -118,7 +118,7 @@ private void DrawTireConfiguration() } else if (string.IsNullOrEmpty(currentTirePath)) { - EditorGUILayout.HelpBox("Select a tire JSON file from the dropdown above.", MessageType.Info); + EditorGUILayout.HelpBox("Select a tire JSON file from the dropdown above.", UnityEditor.MessageType.Info); } } @@ -145,7 +145,7 @@ private void DrawPerAxleTireSelectors() if (axleCount == 0) { - EditorGUILayout.HelpBox("No axles detected. Please load a vehicle JSON first.", MessageType.Info); + EditorGUILayout.HelpBox("No axles detected. Please load a vehicle JSON first.", UnityEditor.MessageType.Info); return; } @@ -189,7 +189,7 @@ private void DrawWheelConfiguration() if (numAxles == 0) { - EditorGUILayout.HelpBox("No axles detected. Please load a vehicle JSON first.", MessageType.Info); + EditorGUILayout.HelpBox("No axles detected. Please load a vehicle JSON first.", UnityEditor.MessageType.Info); return; } diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/TransmissionTab.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/TransmissionTab.cs index c8ba0027..05a4df86 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/TransmissionTab.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/TransmissionTab.cs @@ -112,11 +112,11 @@ public override void DrawTab() } else if (string.IsNullOrEmpty(Context.Vehicle.transJSON)) { - EditorGUILayout.HelpBox("Select a transmission JSON file from the dropdown above.", MessageType.Info); + EditorGUILayout.HelpBox("Select a transmission JSON file from the dropdown above.", UnityEditor.MessageType.Info); } else { - EditorGUILayout.HelpBox("Failed to load transmission JSON. Check the file path.", MessageType.Warning); + EditorGUILayout.HelpBox("Failed to load transmission JSON. Check the file path.", UnityEditor.MessageType.Warning); } } diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/VehicleTab.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/VehicleTab.cs index a7d5c2a1..7a6efdfd 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/VehicleTab.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/Tabs/VehicleTab.cs @@ -51,7 +51,7 @@ private void DrawDrivelineAndSteeringSelectors() { if (Context.JsonState.VehicleData == null) { - EditorGUILayout.HelpBox("No vehicle JSON loaded.", MessageType.Info); + EditorGUILayout.HelpBox("No vehicle JSON loaded.", UnityEditor.MessageType.Info); return; } @@ -72,7 +72,7 @@ private void DrawAxleConfiguration() if (Context.JsonState.VehicleData == null) { - EditorGUILayout.HelpBox("No vehicle JSON loaded.", MessageType.Info); + EditorGUILayout.HelpBox("No vehicle JSON loaded.", UnityEditor.MessageType.Info); return; } @@ -81,7 +81,7 @@ private void DrawAxleConfiguration() if (axles == null || axles.Count == 0) { - EditorGUILayout.HelpBox("No axles defined in vehicle JSON.", MessageType.Info); + EditorGUILayout.HelpBox("No axles defined in vehicle JSON.", UnityEditor.MessageType.Info); return; } diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/VehicleJSONParser.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/VehicleJSONParser.cs index 1431bc45..8defeb60 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/VehicleJSONParser.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/VehicleJSONParser.cs @@ -213,7 +213,7 @@ public void DrawDetectedMaps(JObject root, string jsonKey = "", List pr // CRITICAL: Guard against null root during JSON transitions if (root == null) { - EditorGUILayout.HelpBox("JSON data not loaded.", MessageType.Info); + EditorGUILayout.HelpBox("JSON data not loaded.", UnityEditor.MessageType.Info); return; } @@ -222,7 +222,7 @@ public void DrawDetectedMaps(JObject root, string jsonKey = "", List pr if (maps == null || maps.Count == 0) { - EditorGUILayout.HelpBox("No maps/curves detected in this JSON.", MessageType.Info); + EditorGUILayout.HelpBox("No maps/curves detected in this JSON.", UnityEditor.MessageType.Info); return; } @@ -255,7 +255,7 @@ public void DrawJsonObjectEditor(JObject root, List mapInfos, IEnumerab { if (root == null) { - EditorGUILayout.HelpBox("JSON data not loaded.", MessageType.Info); + EditorGUILayout.HelpBox("JSON data not loaded.", UnityEditor.MessageType.Info); return; } @@ -356,7 +356,7 @@ private void DrawEditableArray(JArray array, string path, string label, HashSet< JToken sample = array.FirstOrDefault(t => t != null && t.Type != JTokenType.Null); if (sample == null) { - EditorGUILayout.HelpBox("Array is empty. Choose a value type to add.", MessageType.Info); + EditorGUILayout.HelpBox("Array is empty. Choose a value type to add.", UnityEditor.MessageType.Info); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Add Number", GUILayout.Width(110f))) { @@ -624,7 +624,7 @@ public void DrawFullJsonObject(JObject root) { if (root == null) { - EditorGUILayout.HelpBox("No JSON root provided.", MessageType.Warning); + EditorGUILayout.HelpBox("No JSON root provided.", UnityEditor.MessageType.Warning); return; } @@ -674,7 +674,7 @@ private void DrawMapArray(JArray mapArray, string prefix, string label) // Guard against null mapArray during JSON transitions if (mapArray == null) { - EditorGUILayout.HelpBox("Map data is null.", MessageType.Warning); + EditorGUILayout.HelpBox("Map data is null.", UnityEditor.MessageType.Warning); return; } @@ -719,7 +719,7 @@ private void DrawJArray(JArray arr, string prefix, string parentKey) catch (System.Exception) { // JArray might have been invalidated during JSON transition - EditorGUILayout.HelpBox("Array data invalidated.", MessageType.Warning); + EditorGUILayout.HelpBox("Array data invalidated.", UnityEditor.MessageType.Warning); } } diff --git a/Assets/Scripts/Editor/VehicleInspectorClasses/VehicleMapEditor.cs b/Assets/Scripts/Editor/VehicleInspectorClasses/VehicleMapEditor.cs index 2ca9a4cb..ffbe8e12 100644 --- a/Assets/Scripts/Editor/VehicleInspectorClasses/VehicleMapEditor.cs +++ b/Assets/Scripts/Editor/VehicleInspectorClasses/VehicleMapEditor.cs @@ -45,7 +45,7 @@ public void DrawPairs(JArray mapArray, string label = "Map") if (mapArray == null || mapArray.Count == 0) { - EditorGUILayout.HelpBox("No data in map.", MessageType.Info); + EditorGUILayout.HelpBox("No data in map.", UnityEditor.MessageType.Info); return; } @@ -86,7 +86,7 @@ public void DrawPairs(JArray mapArray, string label = "Map") } catch (System.Exception) { - EditorGUILayout.HelpBox("Map data invalidated.", MessageType.Warning); + EditorGUILayout.HelpBox("Map data invalidated.", UnityEditor.MessageType.Warning); } } @@ -97,7 +97,7 @@ public void DrawCompactMapWithPairs(JArray mapArray, string label = "Map") { if (mapArray == null) { - EditorGUILayout.HelpBox("Map array is null.", MessageType.Warning); + EditorGUILayout.HelpBox("Map array is null.", UnityEditor.MessageType.Warning); return; } @@ -123,7 +123,7 @@ public void DrawGraph(JArray mapArray, string label = "Graph", int width = 0, in { if (mapArray == null) { - EditorGUILayout.HelpBox("Map array is null.", MessageType.Warning); + EditorGUILayout.HelpBox("Map array is null.", UnityEditor.MessageType.Warning); return; } diff --git a/Assets/Scripts/Physics/Editor/UChBodyConvexHullEditor.cs b/Assets/Scripts/Physics/Editor/UChBodyConvexHullEditor.cs index 88c4656d..39019e4e 100644 --- a/Assets/Scripts/Physics/Editor/UChBodyConvexHullEditor.cs +++ b/Assets/Scripts/Physics/Editor/UChBodyConvexHullEditor.cs @@ -68,7 +68,7 @@ public override void OnInspectorGUI() } else { - EditorGUILayout.HelpBox("No MeshFilter with a mesh found on the GameObject.", MessageType.Warning); + EditorGUILayout.HelpBox("No MeshFilter with a mesh found on the GameObject.", UnityEditor.MessageType.Warning); } } diff --git a/Assets/Scripts/Vehicle/Editor/DriverEditor.cs b/Assets/Scripts/Vehicle/Editor/DriverEditor.cs index 86b05333..1b422f8c 100644 --- a/Assets/Scripts/Vehicle/Editor/DriverEditor.cs +++ b/Assets/Scripts/Vehicle/Editor/DriverEditor.cs @@ -22,7 +22,7 @@ override public void OnInspectorGUI() { //// TODO: expose more parameters? - ////EditorGUILayout.HelpBox("Test help", MessageType.Info); + ////EditorGUILayout.HelpBox("Test help", UnityEditor.MessageType.Info); ////GUIStyle myStyle = GUI.skin.GetStyle("HelpBox"); ////myStyle.richText = true; diff --git a/Assets/Scripts/Vehicle/Editor/UGenericVehicleEditor.cs b/Assets/Scripts/Vehicle/Editor/UGenericVehicleEditor.cs index d7130c2b..c8e4b28a 100644 --- a/Assets/Scripts/Vehicle/Editor/UGenericVehicleEditor.cs +++ b/Assets/Scripts/Vehicle/Editor/UGenericVehicleEditor.cs @@ -40,7 +40,7 @@ public override void OnInspectorGUI() // Handling no configurations found if (!configurations.Any()) { - EditorGUILayout.HelpBox("No configurations found in the specified path.", MessageType.Warning); + EditorGUILayout.HelpBox("No configurations found in the specified path.", UnityEditor.MessageType.Warning); return; } diff --git a/Assets/Scripts/Vehicle/Terrain.meta b/Assets/Scripts/Vehicle/Terrain.meta new file mode 100644 index 00000000..ee29da99 --- /dev/null +++ b/Assets/Scripts/Vehicle/Terrain.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60c3d6eaf4be596de8dd4742f901136c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Vehicle/RigidTerrainCollisionShapes.cs b/Assets/Scripts/Vehicle/Terrain/RigidTerrainCollisionShapes.cs similarity index 98% rename from Assets/Scripts/Vehicle/RigidTerrainCollisionShapes.cs rename to Assets/Scripts/Vehicle/Terrain/RigidTerrainCollisionShapes.cs index fdc41d48..5b5d6895 100644 --- a/Assets/Scripts/Vehicle/RigidTerrainCollisionShapes.cs +++ b/Assets/Scripts/Vehicle/Terrain/RigidTerrainCollisionShapes.cs @@ -33,7 +33,7 @@ void Start() lineMaterial = new Material(shader); // Fetching the RigidTerrain component - chronoRigidTerrain = UChRigidTerrainManager.chronoRigidTerrain; + chronoRigidTerrain = chrono_vehicle.CastToRigidTerrain(UChRigidTerrainManager.chronoTerrain); if (chronoRigidTerrain == null) { Debug.LogError("ChronoRigidTerrain reference is not set."); diff --git a/Assets/Scripts/Vehicle/RigidTerrainCollisionShapes.cs.meta b/Assets/Scripts/Vehicle/Terrain/RigidTerrainCollisionShapes.cs.meta similarity index 100% rename from Assets/Scripts/Vehicle/RigidTerrainCollisionShapes.cs.meta rename to Assets/Scripts/Vehicle/Terrain/RigidTerrainCollisionShapes.cs.meta diff --git a/Assets/Scripts/Vehicle/UChRigidTerrainManager.cs b/Assets/Scripts/Vehicle/Terrain/UChRigidTerrainManager.cs similarity index 89% rename from Assets/Scripts/Vehicle/UChRigidTerrainManager.cs rename to Assets/Scripts/Vehicle/Terrain/UChRigidTerrainManager.cs index 8b13bf58..0e1ce189 100644 --- a/Assets/Scripts/Vehicle/UChRigidTerrainManager.cs +++ b/Assets/Scripts/Vehicle/Terrain/UChRigidTerrainManager.cs @@ -20,10 +20,8 @@ // Add Terrain prior to the UChVehicle (which is at -900) [DefaultExecutionOrder(-950)] -public class UChRigidTerrainManager : MonoBehaviour +public class UChRigidTerrainManager : UChTerrainManager { - public static RigidTerrain chronoRigidTerrain; - void Start() { // Verify the Chrono system exists @@ -34,7 +32,7 @@ void Start() } // Set the Terrain to the main system (which the vehicle/s are also a part of) - chronoRigidTerrain = new RigidTerrain(UChSystem.chrono_system); + RigidTerrain chronoRigidTerrain = new RigidTerrain(UChSystem.chrono_system); // Find all TerrainPatch components and add them as patches var patches = UnityEngine.Object.FindObjectsByType(FindObjectsSortMode.None); @@ -76,6 +74,7 @@ void Start() } // Initialize the terrain chronoRigidTerrain.Initialize(); + UChTerrainManager.chronoTerrain = chronoRigidTerrain; ///int count = 0; @@ -88,17 +87,17 @@ void Start() void FixedUpdate() { - if (chronoRigidTerrain == null) return; + if (chronoTerrain == null) return; - chronoRigidTerrain.Synchronize(UChSystem.chrono_system.GetChTime()); - chronoRigidTerrain.Advance(UChSystem.chrono_system.GetStep()); + chronoTerrain.Synchronize(UChSystem.chrono_system.GetChTime()); + chronoTerrain.Advance(UChSystem.chrono_system.GetStep()); } void OnDisable() { // Reset the static reference when disabled (e.g., exiting play mode or scene change) // so we dont get 'stuck' with a stale ref - chronoRigidTerrain = null; + chronoTerrain = null; } } diff --git a/Assets/Scripts/Vehicle/UChRigidTerrainManager.cs.meta b/Assets/Scripts/Vehicle/Terrain/UChRigidTerrainManager.cs.meta similarity index 100% rename from Assets/Scripts/Vehicle/UChRigidTerrainManager.cs.meta rename to Assets/Scripts/Vehicle/Terrain/UChRigidTerrainManager.cs.meta diff --git a/Assets/Scripts/Vehicle/UChRigidTerrainPatch.cs b/Assets/Scripts/Vehicle/Terrain/UChRigidTerrainPatch.cs similarity index 100% rename from Assets/Scripts/Vehicle/UChRigidTerrainPatch.cs rename to Assets/Scripts/Vehicle/Terrain/UChRigidTerrainPatch.cs diff --git a/Assets/Scripts/Vehicle/UChRigidTerrainPatch.cs.meta b/Assets/Scripts/Vehicle/Terrain/UChRigidTerrainPatch.cs.meta similarity index 100% rename from Assets/Scripts/Vehicle/UChRigidTerrainPatch.cs.meta rename to Assets/Scripts/Vehicle/Terrain/UChRigidTerrainPatch.cs.meta diff --git a/Assets/Scripts/Vehicle/Terrain/UChSCMTerrain.cs b/Assets/Scripts/Vehicle/Terrain/UChSCMTerrain.cs new file mode 100644 index 00000000..28bf6717 --- /dev/null +++ b/Assets/Scripts/Vehicle/Terrain/UChSCMTerrain.cs @@ -0,0 +1,383 @@ +// ============================================================================= +// PROJECT CHRONO - http://projectchrono.org +// +// Copyright (c) 2024 projectchrono.org +// All rights reserved. +// +// Use of this source code is governed by a BSD-style license that can be found +// in the LICENSE file at the top level of the distribution. +// +// ============================================================================= +// Authors: Bocheng Zou, Json Zhou +// ============================================================================= + +using UnityEngine; +using System; +using System.Collections.Generic; + +[DefaultExecutionOrder(0)] +public class UChSCMTerrain : MonoBehaviour +{ + public Patch patch; + private ChContactMaterial mat; + public enum PatchType + { + boxPatch, + unityTerrainPatch + } + + public SCMTerrain chronoTerrain { get; protected set; } + private Terrain sourceTerrain; + + private List terrainGrid = new List(); + private float chunkSize; + private int chunkRes; + private double delta; + + [SerializeField] private int terrainSplit; + + [SerializeField] + public PatchType patchType; // Field to set the type of patch in the Unity Editor + + + // Initialize SCM Terrain in Chrono + public void AddHeightMapPatchTerrain() + { + var terrainData = sourceTerrain.terrainData; + + // Determine the 'Chrono' origin of the terrain path. that is the central 0,0 (as opposed to Unity terrain's bottom right point. + Vector3 localCenter = terrainData.size * 0.5f; + localCenter.y = 0; + Vector3 centralTerrainPoint = this.transform.TransformPoint(localCenter); + + // Position and rotate the terrain to suit a Y-Up world + var rot = Utils.ToChronoFlip(transform.rotation); // flip Z axis + var pos = Utils.ToChronoFlip(centralTerrainPoint); + + ChQuaterniond qAxis = new ChQuaterniond(chrono.QuatFromAngleX( -chrono.CH_PI_2)); // Rotate SCM Terrain from Z-up to Y-up + ChQuaterniond qRotationToChrono = new ChQuaterniond(); + qRotationToChrono.Cross(rot, qAxis); // order is paramount + + chronoTerrain = new SCMTerrain(UChSystem.chrono_system); + chronoTerrain.SetReferenceFrame(new ChCoordsysd(pos, qRotationToChrono)); + chronoTerrain.SetBoundary(new ChAABB(new ChVector3d(-terrainData.size.x / 2.0, -terrainData.size.z / 2.0, 0), + new ChVector3d( terrainData.size.x / 2.0, terrainData.size.z / 2.0, 0))); // Z doesn't matter here + // chronoTerrain.SetReferenceFrame(new ChCoordsysd(new ChVector3d(0,0,0),qAxis)); + + var chTriangleTerrain = ConvertTerrainToChTriangleMesh(sourceTerrain); + + chronoTerrain.Initialize(chTriangleTerrain, delta); + } + + private ChTriangleMeshConnected ConvertTerrainToChTriangleMesh(Terrain terrain) + { + ChTriangleMeshConnected mesh = new ChTriangleMeshConnected(); + + TerrainData terrainData = terrain.terrainData; + int resolution = terrainData.heightmapResolution; + float[,] heights = terrainData.GetHeights(0, 0, resolution, resolution); + + double xScale = terrainData.size.x / (resolution - 1); + double zScale = terrainData.size.z / (resolution - 1); + double yScale = terrainData.size.y; + + // Generate triangles + for (int x = 0; x < resolution - 1; x++) + { + for (int z = 0; z < resolution - 1; z++) + { + + // Vertices for the current quad + var v0 = new ChVector3d( + (x * xScale) - (terrainData.size.x / 2.0), + (z * zScale) - (terrainData.size.z / 2.0), + heights[z, x] * yScale + ); + + var v1 = new ChVector3d( + ((x + 1) * xScale) - (terrainData.size.x / 2.0), + (z * zScale) - (terrainData.size.z / 2.0), + heights[z, x + 1] * yScale + ); + + var v2 = new ChVector3d( + (x * xScale) - (terrainData.size.x / 2.0), + ((z + 1) * zScale) - (terrainData.size.z / 2.0), + heights[z + 1, x] * yScale + ); + + var v3 = new ChVector3d( + ((x + 1) * xScale) - (terrainData.size.x / 2.0), + ((z + 1) * zScale) - (terrainData.size.z / 2.0), + heights[z + 1, x + 1] * yScale + ); + + // Create triangles and add to mesh + var triangle1 = new ChTriangle(v0, v1, v2); + var triangle2 = new ChTriangle(v2, v1, v3); + + mesh.AddTriangle(triangle1); + mesh.AddTriangle(triangle2); + } + } + + return mesh; + } + + + void Awake() + { + sourceTerrain = GetComponent(); + if (sourceTerrain == null) + { + Debug.LogError("Terrain component not found."); + return; + } + delta = sourceTerrain.terrainData.heightmapScale[0]; + + AddHeightMapPatchTerrain(); + + if (terrainSplit <= 0) + { + Debug.LogError("terrainSplit must be >= 1"); + enabled = false; + return; + } + + var hmRes = GetComponent().terrainData.heightmapResolution; + if (terrainSplit > hmRes - 1) + { + Debug.LogError($"terrainSplit too large. Need <= {hmRes - 1}, got {terrainSplit}"); + enabled = false; + return; + } + + SplitTerrain(sourceTerrain, terrainSplit, terrainSplit); + + if (chunkRes <= 1) + { + Debug.LogError($"Invalid chunkRes={chunkRes}. Would cause division by zero in FixedUpdate."); + enabled = false; + return; + } + + // sourceTerrain.SetActive(false); + } + + void FixedUpdate() + { + chronoTerrain.Synchronize(UChSystem.chrono_system.GetChTime()); + chronoTerrain.Advance(UChSystem.chrono_system.GetStep()); + + ChVector2i test; + ChSCMTerrainNodeLevelList modifiedNodes = chronoTerrain.GetModifiedNodes(false); + + TerrainData tData = sourceTerrain.terrainData; + int hmRes = tData.heightmapResolution; + double sizeX = tData.size.x; // total width + double sizeZ = tData.size.z; // total length + double sizeY = tData.size.y; // total height range + + // Dictionary to store per-chunk heightmaps + // Key = (chunkIndexX, chunkIndexZ), Value = chunkHeights array + Dictionary updatedChunkMaps = new Dictionary(); + + // Also store references to chunk if you like, or you can re-derive them later + Dictionary chunkReference = new Dictionary(); + + foreach (var node in modifiedNodes) + { + ChVector2i vec = node.first; + + // Coordinate in Chrono (local to SCM Terrain) + double x = vec.x * delta; + double z = vec.y * delta; + double y = node.second; + + // Coordinate in Unity + int xIndex = (int)(x / sizeX * (hmRes - 1) + (hmRes / 2)); + int zIndex = (int)(z / sizeZ * (hmRes - 1) + (hmRes / 2)); + + xIndex = Math.Clamp(xIndex, 0, hmRes - 1); + zIndex = Math.Clamp(zIndex, 0, hmRes - 1); + + // int xIndex = (int)(x + (hmRes / 2)); + // int zIndex = (int)(z + (hmRes / 2)); + + float normalizedHeight = (float)(y / sizeY); + + // Get tile index + + int chunkIndexX = xIndex / (chunkRes - 1); + int chunkIndexZ = zIndex / (chunkRes - 1); + + Vector2Int chunkKey = new Vector2Int(chunkIndexX, chunkIndexZ); + + // Get height array of that tile index from terrainGrid + if (!updatedChunkMaps.ContainsKey(chunkKey)) + { + Terrain chunk = terrainGrid[chunkIndexX * terrainSplit + chunkIndexZ]; + float[,] chunkHeights = chunk.terrainData.GetHeights(0, 0, chunkRes, chunkRes); + + updatedChunkMaps[chunkKey] = chunkHeights; + chunkReference[chunkKey] = chunk; + } + + // Get the index of the height in the tile + + int localX = xIndex % (chunkRes - 1); + int localZ = zIndex % (chunkRes - 1); + + updatedChunkMaps[chunkKey][localZ, localX] = normalizedHeight; + } + + foreach (var kvp in updatedChunkMaps) + { + Vector2Int key = kvp.Key; + float[,] newHeights = kvp.Value; + + // Retrieve the chunk Terrain + Terrain chunk = chunkReference[key]; + + // Set the updated heightmap + chunk.terrainData.SetHeights(0, 0, newHeights); + } + + } + void SplitTerrain(Terrain terrain, int splitCountX, int splitCountZ) + { + TerrainData originalData = terrain.terrainData; + int originalHeightmapResolution = originalData.heightmapResolution; + Vector3 originalSize = originalData.size; + + // Each new chunk's terrain resolution (minus 1, because e.g. a 513x513 heightmap + // splits into two chunks of 257x257 each, which is 513/2 + 1). + int newHeightmapResolution = (originalHeightmapResolution - 1) / splitCountX + 1; + float chunkWidth = originalSize.x / splitCountX; + float chunkLength = originalSize.z / splitCountZ; + + chunkSize = chunkWidth; + chunkRes = newHeightmapResolution; + + // --- 1) Obtain alphaMap info from original terrain --- + int alphaMapResolution = originalData.alphamapResolution; + int numAlphaLayers = originalData.alphamapLayers; + + // For details: + int detailResolution = originalData.detailResolution; + + // For each "tile" in splitX x splitZ + for (int x = 0; x < splitCountX; x++) + { + for (int z = 0; z < splitCountZ; z++) + { + // 1) Create the new TerrainData + TerrainData chunkData = new TerrainData(); + chunkData.detailPrototypes = originalData.detailPrototypes; + + // Heightmap resolution for the chunk + chunkData.heightmapResolution = newHeightmapResolution; + // Keep the same vertical height + chunkData.size = new Vector3(chunkWidth, originalSize.y, chunkLength); + + // 2) Copy heights from the source + float[,] chunkHeights = GetChunkHeights(originalData, x, z, splitCountX, splitCountZ); + chunkData.SetHeights(0, 0, chunkHeights); + + // 3) Copy alphamaps + // We need to slice the alphamap from the original. + // The slicing logic is analogous, but be aware that + // the alphamap resolution might differ from the heightmap resolution. + float[,,] chunkAlphaMaps = GetChunkAlphaMaps(originalData, x, z, splitCountX, splitCountZ); + chunkData.alphamapResolution = chunkAlphaMaps.GetLength(0); + // ^ or set it explicitly if you prefer a guaranteed size + chunkData.SetAlphamaps(0, 0, chunkAlphaMaps); + + // 4) Copy detail/grass layers + // If the original terrain has multiple detail layers, + // iterate them and slice each layer into chunkData. + int detailLayers = originalData.detailPrototypes.Length; + chunkData.SetDetailResolution(detailResolution / splitCountX, 8); + // ^ note: set the resolution and pixelError (8 is a typical base). + // Adjust as needed for your project. + + chunkData.terrainLayers = originalData.terrainLayers; + + for (int layer = 0; layer < detailLayers; layer++) + { + int[,] chunkDetailMap = GetChunkDetailMap(originalData, x, z, splitCountX, splitCountZ, layer); + chunkData.SetDetailLayer(0, 0, layer, chunkDetailMap); + } + + // 5) Create new Terrain GameObject + GameObject chunkGO = Terrain.CreateTerrainGameObject(chunkData); + chunkGO.name = $"Terrain_Chunk_{x}_{z}"; + chunkGO.GetComponent().materialTemplate = terrain.materialTemplate; + + // 6) Position the chunk in the correct place + // The original Terrain might be offset in the scene (terrain.transform.position). + Vector3 terrainPosition = terrain.GetPosition(); + float posX = terrainPosition.x + x * chunkWidth; + float posZ = terrainPosition.z + z * chunkLength; + chunkGO.transform.position = new Vector3(posX, terrainPosition.y, posZ); + + // 7) Store the newly created terrain for reference + terrainGrid.Add(chunkGO.GetComponent()); + } + } + + // Disable the original big terrain so it doesn’t overlap + GetComponent().enabled = false; + } + + private float[,,] GetChunkAlphaMaps(TerrainData originalData, int chunkX, int chunkZ, int splitCountX, int splitCountZ) + { + int alphaMapWidth = originalData.alphamapWidth; + int alphaMapHeight = originalData.alphamapHeight; + int numAlphaLayers = originalData.alphamapLayers; + + // The resolution for each chunk's alphamap. + // This may or may not match the chunk's heightmap logic exactly. + // Adjust if you want a different scheme. + int chunkAlphaWidth = alphaMapWidth / splitCountX; + int chunkAlphaHeight = alphaMapHeight / splitCountZ; + + // Calculate the starting index in the original alphamap + int startX = chunkAlphaWidth * chunkX; + int startZ = chunkAlphaHeight * chunkZ; + + // Get the alpha slice + float[,,] alphaSlice = originalData.GetAlphamaps(startX, startZ, chunkAlphaWidth, chunkAlphaHeight); + return alphaSlice; + } + + private int[,] GetChunkDetailMap(TerrainData originalData, int chunkX, int chunkZ, int splitCountX, int splitCountZ, int layer) + { + int detailResolution = originalData.detailResolution; + int chunkDetailResolutionX = detailResolution / splitCountX; + int chunkDetailResolutionZ = detailResolution / splitCountZ; + + int startX = chunkDetailResolutionX * chunkX; + int startZ = chunkDetailResolutionZ * chunkZ; + + // Slice out the detail (grass) data for this layer + int[,] detailSlice = originalData.GetDetailLayer(startX, startZ, chunkDetailResolutionX, chunkDetailResolutionZ, layer); + return detailSlice; + } + + private float[,] GetChunkHeights(TerrainData originalData, int chunkX, int chunkZ, int splitCountX, int splitCountZ) + { + int originalResolution = originalData.heightmapResolution; + // The resolution of each chunk’s heightmap + int newResolutionX = (originalResolution - 1) / splitCountX + 1; + int newResolutionZ = (originalResolution - 1) / splitCountZ + 1; + + // Where to start reading the original heightmap + int startX = (newResolutionX - 1) * chunkX; + int startZ = (newResolutionZ - 1) * chunkZ; + + // Extract the heights from the original data + float[,] chunkHeights = originalData.GetHeights(startX, startZ, newResolutionX, newResolutionZ); + return chunkHeights; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Vehicle/Terrain/UChSCMTerrain.cs.meta b/Assets/Scripts/Vehicle/Terrain/UChSCMTerrain.cs.meta new file mode 100644 index 00000000..25f5c36a --- /dev/null +++ b/Assets/Scripts/Vehicle/Terrain/UChSCMTerrain.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1297a7a7eff7bdce9a27d86c0b7dc794 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Vehicle/Terrain/UChSCMTerrainManager.cs b/Assets/Scripts/Vehicle/Terrain/UChSCMTerrainManager.cs new file mode 100644 index 00000000..e23a2662 --- /dev/null +++ b/Assets/Scripts/Vehicle/Terrain/UChSCMTerrainManager.cs @@ -0,0 +1,53 @@ +// ============================================================================= +// PROJECT CHRONO - http://projectchrono.org +// +// Copyright (c) 2024 projectchrono.org +// All rights reserved. +// +// Use of this source code is governed by a BSD-style license that can be found +// in the LICENSE file at the top level of the distribution. +// +// ============================================================================= +// Authors: Json Zhou +// ============================================================================= + +using UnityEngine; + +// Add Terrain prior to the UChVehicle (which is at -900) +[DefaultExecutionOrder(-950)] +public class UChSCMTerrainManager : UChTerrainManager +{ + public double BekkerKphi = 0.82e6; // Bekker Kphi + public double BekkerKc = 0.14e4; // Bekker Kc + public double BekkerN = 1.0; // Bekker n + public double MohrCohesion = 0.017e4; // Mohr cohesion + public double MohrFriction = 35.0; // Mohr friction angle in degrees + public double JanosiShear = 1.78e-2; // Janosi shear + public double ElasticK = 2e8; // Elastic stiffness + public double DampingR = 3e4; // Damping + public bool Bulldozing = true; // Bulldozing effect on/off + public double ErosionAngle = 55; // angle of erosion of the displaced material [degrees] + public double FlowFactor = 1; // growth of lateral volume relative to pressed volume + public int ErosionIterations = 5; // number of erosion refinements per timestep + public int ErosionPropagations = 6; // number of concentric vertex selections subject to erosion + + void Start() + { + SCMTerrain scm_terrain = GetComponentInChildren().chronoTerrain; + scm_terrain.SetSoilParameters(BekkerKphi, // Bekker Kphi + BekkerKc, // Bekker Kc + BekkerN, // Bekker n exponent + MohrCohesion, // Mohr cohesive limit (Pa) + MohrFriction, // Mohr friction limit (degrees) + JanosiShear, // Janosi shear coefficient (m) + ElasticK, // Elastic stiffness (Pa/m), before plastic yield + DampingR // Damping (Pa s/m), proportional to negative vertical speed + ); + scm_terrain.EnableBulldozing(Bulldozing); + scm_terrain.SetBulldozingParameters(ErosionAngle, FlowFactor, ErosionIterations, ErosionPropagations); + chronoTerrain = scm_terrain; + + } + +} + diff --git a/Assets/Scripts/Vehicle/Terrain/UChSCMTerrainManager.cs.meta b/Assets/Scripts/Vehicle/Terrain/UChSCMTerrainManager.cs.meta new file mode 100644 index 00000000..2346d06e --- /dev/null +++ b/Assets/Scripts/Vehicle/Terrain/UChSCMTerrainManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c9bdb7e59be63d52bb015d1dd6eba07 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Vehicle/Terrain/UChTerrainManager.cs b/Assets/Scripts/Vehicle/Terrain/UChTerrainManager.cs new file mode 100644 index 00000000..01e8c163 --- /dev/null +++ b/Assets/Scripts/Vehicle/Terrain/UChTerrainManager.cs @@ -0,0 +1,7 @@ +using UnityEngine; + + + +public abstract class UChTerrainManager : MonoBehaviour { + public static ChTerrain chronoTerrain; +} diff --git a/Assets/Scripts/Vehicle/Terrain/UChTerrainManager.cs.meta b/Assets/Scripts/Vehicle/Terrain/UChTerrainManager.cs.meta new file mode 100644 index 00000000..8868f70f --- /dev/null +++ b/Assets/Scripts/Vehicle/Terrain/UChTerrainManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2ea0359ab0b1e7d07995b38267ea0507 \ No newline at end of file diff --git a/Assets/Scripts/Vehicle/UChVehicle.cs b/Assets/Scripts/Vehicle/UChVehicle.cs index d501205a..0d0d8ffc 100644 --- a/Assets/Scripts/Vehicle/UChVehicle.cs +++ b/Assets/Scripts/Vehicle/UChVehicle.cs @@ -57,7 +57,7 @@ void Start() OnStart(); // Call the vehicle's onstart. // Find terrain in system and set to chTerrain - chTerrain = UChRigidTerrainManager.chronoRigidTerrain; + chTerrain = UChTerrainManager.chronoTerrain; if (chTerrain == null) { diff --git a/Assets/Scripts/Vehicle/UWheeledVehicle.cs b/Assets/Scripts/Vehicle/UWheeledVehicle.cs index 63dc5882..e8b0c1f3 100644 --- a/Assets/Scripts/Vehicle/UWheeledVehicle.cs +++ b/Assets/Scripts/Vehicle/UWheeledVehicle.cs @@ -200,6 +200,12 @@ private bool BuildFromTopLevelJSON(string fileName) // initialise var csys = new ChCoordsysd(Utils.ToChronoFlip(initPos), Utils.ToChronoFlip(transform.rotation)); + Debug.Log("Initial position set to: " + + System.Math.Round(csys.pos.x * 1000) / 1000 + " " + + System.Math.Round(csys.pos.y * 1000) / 1000 + " " + + System.Math.Round(csys.pos.z * 1000) / 1000 + ); + UChJSONVehicle.Initialize(csys, initForwardVel); // set chassis fixed / brake locking