diff --git a/UOP1_Project/Assets/Prefabs/Characters/PigChef.prefab b/UOP1_Project/Assets/Prefabs/Characters/PigChef.prefab
index 6558d739d6..4358d77564 100644
--- a/UOP1_Project/Assets/Prefabs/Characters/PigChef.prefab
+++ b/UOP1_Project/Assets/Prefabs/Characters/PigChef.prefab
@@ -377,6 +377,21 @@ MonoBehaviour:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0}
m_Visible: 1
+--- !u!114 &6650101099884577384
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 309633228405838073}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 19a86e2a21c71164d9614311b5e778a4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _groundTypeList: {fileID: 11400000, guid: beee5d325e80d2b458985741de411757, type: 2}
+ _debugMode: 1
+ _groundTypeTitle:
--- !u!114 &8300318066946783926
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -5298,9 +5313,9 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
---- !u!4 &1414160192716409753 stripped
+--- !u!4 &8291487101514034000 stripped
Transform:
- m_CorrespondingSourceObject: {fileID: 1958356815571363377, guid: c478a391cfbc4b74ebda3f9a57283705,
+ m_CorrespondingSourceObject: {fileID: -316334440819292424, guid: c478a391cfbc4b74ebda3f9a57283705,
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
@@ -5400,9 +5415,9 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
---- !u!4 &1083073290189785667 stripped
+--- !u!4 &5700738674217691736 stripped
Transform:
- m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: c478a391cfbc4b74ebda3f9a57283705,
+ m_CorrespondingSourceObject: {fileID: 5156753003295213552, guid: c478a391cfbc4b74ebda3f9a57283705,
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
@@ -5412,9 +5427,9 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
---- !u!4 &2518796056843120514 stripped
+--- !u!4 &1414160192716409753 stripped
Transform:
- m_CorrespondingSourceObject: {fileID: 3060741017273451050, guid: c478a391cfbc4b74ebda3f9a57283705,
+ m_CorrespondingSourceObject: {fileID: 1958356815571363377, guid: c478a391cfbc4b74ebda3f9a57283705,
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
@@ -5424,7 +5439,13 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
---- !u!4 &5337852870612368657 stripped
+--- !u!4 &4150588075678938521 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3536655889091270705, guid: c478a391cfbc4b74ebda3f9a57283705,
+ type: 3}
+ m_PrefabInstance: {fileID: 616254372594363816}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2553538599320838613 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -4422890038042128199, guid: c478a391cfbc4b74ebda3f9a57283705,
type: 3}
@@ -5586,15 +5607,15 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
---- !u!4 &3597017886523096375 stripped
+--- !u!4 &5944104996185666453 stripped
Transform:
- m_CorrespondingSourceObject: {fileID: 4136077574930157727, guid: c478a391cfbc4b74ebda3f9a57283705,
+ m_CorrespondingSourceObject: {fileID: -2670401387866497475, guid: c478a391cfbc4b74ebda3f9a57283705,
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
---- !u!4 &1780510391696116336 stripped
+--- !u!4 &6251068571708505270 stripped
Transform:
- m_CorrespondingSourceObject: {fileID: -8054471524138817576, guid: c478a391cfbc4b74ebda3f9a57283705,
+ m_CorrespondingSourceObject: {fileID: -2428247613635587810, guid: c478a391cfbc4b74ebda3f9a57283705,
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
@@ -5634,13 +5655,7 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 616254372594363816}
m_PrefabAsset: {fileID: 0}
---- !u!4 &4323982477642669181 stripped
-Transform:
- m_CorrespondingSourceObject: {fileID: -5436760431573913131, guid: c478a391cfbc4b74ebda3f9a57283705,
- type: 3}
- m_PrefabInstance: {fileID: 616254372594363816}
- m_PrefabAsset: {fileID: 0}
---- !u!4 &2961255287932742051 stripped
+--- !u!4 &7450739070704029045 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2419873259462771723, guid: c478a391cfbc4b74ebda3f9a57283705,
type: 3}
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes.meta b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes.meta
new file mode 100644
index 0000000000..40f414e424
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cae247dff09af9f489f0c9c942cae88e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundTypeList.asset b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundTypeList.asset
new file mode 100644
index 0000000000..dc93299003
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundTypeList.asset
@@ -0,0 +1,20 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5b5ef327e9d2ae14d84ae2fb2663e81f, type: 3}
+ m_Name: GroundTypeList
+ m_EditorClassIdentifier:
+ groundTypes:
+ - {fileID: 11400000, guid: 1fb9340ef508e9d4182cbf9a81b63220, type: 2}
+ - {fileID: 11400000, guid: f2aaed1f1a7a3444b850291a1d1194f5, type: 2}
+ - {fileID: 11400000, guid: 496d01896c7fcba4e930dcbb33a19369, type: 2}
+ - {fileID: 11400000, guid: 076ad4d5d656b414a97c1298f2c8402a, type: 2}
+ - {fileID: 11400000, guid: 1a083b13e087bf5459b1dd0f38422867, type: 2}
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundTypeList.asset.meta b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundTypeList.asset.meta
new file mode 100644
index 0000000000..cd5b33ffe5
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundTypeList.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: beee5d325e80d2b458985741de411757
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Cobblestone.asset b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Cobblestone.asset
new file mode 100644
index 0000000000..ca74ef2383
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Cobblestone.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 389e16317bab1f4448cd1042a39ad65b, type: 3}
+ m_Name: GroundType_Cobblestone
+ m_EditorClassIdentifier:
+ Title: Cobblestone
+ hasGroundTag: 1
+ vertexColorRGB: {x: 0, y: 1, z: 0}
+ gameObjectTag:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Cobblestone.asset.meta b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Cobblestone.asset.meta
new file mode 100644
index 0000000000..d24f452569
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Cobblestone.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1fb9340ef508e9d4182cbf9a81b63220
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Dirt.asset b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Dirt.asset
new file mode 100644
index 0000000000..f151f50188
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Dirt.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 389e16317bab1f4448cd1042a39ad65b, type: 3}
+ m_Name: GroundType_Dirt
+ m_EditorClassIdentifier:
+ Title: Dirt
+ hasGroundTag: 1
+ vertexColorRGB: {x: 1, y: 0, z: 0}
+ gameObjectTag:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Dirt.asset.meta b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Dirt.asset.meta
new file mode 100644
index 0000000000..f727ed5c93
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Dirt.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f2aaed1f1a7a3444b850291a1d1194f5
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Grass.asset b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Grass.asset
new file mode 100644
index 0000000000..5cf0cd9f37
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Grass.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 389e16317bab1f4448cd1042a39ad65b, type: 3}
+ m_Name: GroundType_Grass
+ m_EditorClassIdentifier:
+ Title: Grass
+ hasGroundTag: 1
+ vertexColorRGB: {x: 0, y: 0, z: 0}
+ gameObjectTag:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Grass.asset.meta b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Grass.asset.meta
new file mode 100644
index 0000000000..3115c04bef
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Grass.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 496d01896c7fcba4e930dcbb33a19369
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Rock.asset b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Rock.asset
new file mode 100644
index 0000000000..4f7dd1b314
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Rock.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 389e16317bab1f4448cd1042a39ad65b, type: 3}
+ m_Name: GroundType_Rock
+ m_EditorClassIdentifier:
+ Title: Rock
+ hasGroundTag: 0
+ vertexColorRGB: {x: 0, y: 0, z: 0}
+ gameObjectTag: Rock
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Rock.asset.meta b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Rock.asset.meta
new file mode 100644
index 0000000000..aae4686980
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Rock.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 076ad4d5d656b414a97c1298f2c8402a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Sand.asset b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Sand.asset
new file mode 100644
index 0000000000..49ab964c32
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Sand.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 389e16317bab1f4448cd1042a39ad65b, type: 3}
+ m_Name: GroundType_Sand
+ m_EditorClassIdentifier:
+ Title: Sand
+ hasGroundTag: 1
+ vertexColorRGB: {x: 0, y: 0, z: 1}
+ gameObjectTag:
diff --git a/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Sand.asset.meta b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Sand.asset.meta
new file mode 100644
index 0000000000..b2e0a964e6
--- /dev/null
+++ b/UOP1_Project/Assets/ScriptableObjects/Audio/GroundTypes/GroundType_Sand.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1a083b13e087bf5459b1dd0f38422867
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType.meta b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType.meta
new file mode 100644
index 0000000000..2cec0cdee2
--- /dev/null
+++ b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 27677935b1b59ad48a6b92b527150c21
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeDetector.cs b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeDetector.cs
new file mode 100644
index 0000000000..9e0cc27737
--- /dev/null
+++ b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeDetector.cs
@@ -0,0 +1,179 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class GroundTypeDetector : MonoBehaviour
+{
+ [SerializeField] private GroundTypeListSO _groundTypeList = default;
+
+
+ [Space]
+ [Header("Debugger")]
+ [SerializeField] private bool _debugMode = false;
+ [SerializeField] private string _groundTypeTitle = default;
+
+ Color vertexColorNearest;
+ GroundTypeSO _groundType_Debugger = default;
+ Mesh _mesh;
+ MeshCollider _meshCollider;
+ Vector3 p0;
+ Vector3 p1;
+ Vector3 p2;
+ Transform hitTransform;
+ GroundTypeSO result;
+
+
+
+ void Start()
+ {
+
+ }
+
+
+ void FixedUpdate()
+ {
+
+#if UNITY_EDITOR
+ DebugGroundType();
+#endif
+
+ }
+
+ private void DebugGroundType()
+ {
+ _groundType_Debugger = GetGroundType();
+ if (_groundType_Debugger != null)
+ {
+ _groundTypeTitle = _groundType_Debugger.Title;
+ }
+ else
+ {
+ _groundTypeTitle = "Not Defined";
+ }
+ }
+
+ public GroundTypeSO GetGroundType()
+ {
+ if (_groundTypeList == null)
+ {
+ Debug.LogError("Please Define Ground Types in GroundTypeList ScriptableObject and refrence it to this script component");
+ return null;
+ }
+
+ result = null;
+ _meshCollider = null;
+ _mesh = null;
+ RaycastHit hit;
+
+ void FindNearestVertexColor()
+ {
+ p0 = _mesh.vertices[_mesh.triangles[hit.triangleIndex * 3 + 0]];
+ p1 = _mesh.vertices[_mesh.triangles[hit.triangleIndex * 3 + 1]];
+ p2 = _mesh.vertices[_mesh.triangles[hit.triangleIndex * 3 + 2]];
+
+ hitTransform = hit.collider.transform;
+
+ p0 = hitTransform.TransformPoint(p0);
+ p1 = hitTransform.TransformPoint(p1);
+ p2 = hitTransform.TransformPoint(p2);
+
+ float distance_0 = Vector3.Distance(p0, transform.position);
+ float distance_1 = Vector3.Distance(p1, transform.position);
+ float distance_2 = Vector3.Distance(p2, transform.position);
+
+ if (distance_0 <= distance_1 &&
+ distance_0 <= distance_2)
+ {
+ vertexColorNearest = _mesh.colors[_mesh.triangles[hit.triangleIndex * 3 + 0]];
+ }
+ else if (distance_1 <= distance_0 &&
+ distance_1 <= distance_2)
+ {
+ vertexColorNearest = _mesh.colors[_mesh.triangles[hit.triangleIndex * 3 + 1]];
+ }
+ else
+ {
+ vertexColorNearest = _mesh.colors[_mesh.triangles[hit.triangleIndex * 3 + 2]];
+ }
+
+ if (_debugMode)
+ {
+ Debug.Log("Nearest Vertex Color: " + vertexColorNearest.ToString());
+ }
+ }
+
+ void FindGroundTypeBasedOn_VertexColor()
+ {
+ float r_Diffrence;
+ float g_Diffrence;
+ float b_Diffrence;
+ float totalDiffrence;
+
+ float minDiffrence = float.MaxValue;
+ for (int i = 0; i < _groundTypeList.groundTypes.Length; i++)
+ {
+ if (_groundTypeList.groundTypes[i].hasGroundTag)
+ {
+ r_Diffrence = Mathf.Abs(vertexColorNearest.r - _groundTypeList.groundTypes[i].vertexColorRGB.x);
+ g_Diffrence = Mathf.Abs(vertexColorNearest.g - _groundTypeList.groundTypes[i].vertexColorRGB.y);
+ b_Diffrence = Mathf.Abs(vertexColorNearest.b - _groundTypeList.groundTypes[i].vertexColorRGB.z);
+ totalDiffrence = r_Diffrence + g_Diffrence + b_Diffrence;
+
+ if (totalDiffrence <= minDiffrence)
+ {
+ minDiffrence = totalDiffrence;
+ result = _groundTypeList.groundTypes[i];
+ }
+ }
+ }
+ }
+
+ void FindGroundTypeBasedOn_GameObjectTag()
+ {
+ for (int i = 0; i < _groundTypeList.groundTypes.Length; i++)
+ {
+ if (_groundTypeList.groundTypes[i].hasGroundTag == false &&
+ hit.transform.CompareTag(_groundTypeList.groundTypes[i].gameObjectTag))
+ {
+ result = _groundTypeList.groundTypes[i];
+ break;
+ }
+ }
+ }
+
+
+ if(Physics.Raycast(transform.position, Vector3.down, out hit, 50f))
+ {
+ if (hit.transform.CompareTag("Ground"))
+ {
+ _meshCollider = hit.collider as MeshCollider;
+
+ if (_meshCollider != null && _meshCollider.sharedMesh != null)
+ {
+ _mesh = _meshCollider.sharedMesh;
+
+ if (_mesh.colors.Length > 0)
+ {
+ FindNearestVertexColor();
+ FindGroundTypeBasedOn_VertexColor();
+ }
+ }
+ }
+ else
+ {
+ FindGroundTypeBasedOn_GameObjectTag();
+ }
+
+ }
+
+ if (result == null)
+ {
+ Debug.LogError("This type of ground is not defined in GroundTypeList ScriptableObject");
+ }
+
+ return result;
+ }
+
+
+
+}
diff --git a/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeDetector.cs.meta b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeDetector.cs.meta
new file mode 100644
index 0000000000..2d1c048c7b
--- /dev/null
+++ b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeDetector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 19a86e2a21c71164d9614311b5e778a4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeListSO.cs b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeListSO.cs
new file mode 100644
index 0000000000..2f9a715ab4
--- /dev/null
+++ b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeListSO.cs
@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+
+///
+/// List of All ground types available in game.
+///
+[CreateAssetMenu(fileName = "GroundTypeList", menuName = "Ground Type/Ground Type List")]
+public class GroundTypeListSO : ScriptableObject
+{
+ public GroundTypeSO[] groundTypes = default;
+}
diff --git a/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeListSO.cs.meta b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeListSO.cs.meta
new file mode 100644
index 0000000000..30f3807c53
--- /dev/null
+++ b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeListSO.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5b5ef327e9d2ae14d84ae2fb2663e81f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeSO.cs b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeSO.cs
new file mode 100644
index 0000000000..702edfd68e
--- /dev/null
+++ b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeSO.cs
@@ -0,0 +1,29 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+
+///
+/// Ground Type Properties. This will use for detect ground type for footsteps sound.
+///
+[CreateAssetMenu(fileName = "newGroundType", menuName = "Ground Type/Ground Type")]
+
+[SerializeField]
+public class GroundTypeSO : ScriptableObject
+{
+ public string Title;
+
+ [Space]
+ public bool hasGroundTag;
+
+ [Space]
+ [Header("If it has Ground tag")]
+ [Tooltip("This helps to detect the type of ground.")]
+ public Vector3 vertexColorRGB;
+
+ [Space]
+ [Header("If it doesn't have Ground tag")]
+ [Tooltip("This helps to detect the type of ground.")]
+ public string gameObjectTag;
+
+}
diff --git a/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeSO.cs.meta b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeSO.cs.meta
new file mode 100644
index 0000000000..adc9d0e4c4
--- /dev/null
+++ b/UOP1_Project/Assets/Scripts/Audio/AudioData/GroundType/GroundTypeSO.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 389e16317bab1f4448cd1042a39ad65b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: