Furkan Karakocaoglu 2 лет назад
Родитель
Сommit
211e2fbb26

Разница между файлами не показана из-за своего большого размера
+ 882 - 37
testumgebung/CrowdModelling/Assets/Scenes/Lerp.unity


+ 0 - 6
testumgebung/CrowdModelling/Assets/Scripts/ChangeMaterial/ChangeModelTransMaterial.cs

@@ -76,13 +76,11 @@ public class ChangeModelTransMaterial : MonoBehaviour
                 {
                     Debug.Log(lst.gameObject.name + " set to Green");
                     lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightGreen;
-                    //lst.transform.GetChild(0).GetChild(0).gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightGreen;
                 }
                 else
                 {
                     Debug.Log(lst.gameObject.name + " set to Trans Green");
                     lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransGreen;
-                    //lst.transform.GetChild(0).GetChild(0).gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransGreen;
                 }
             }
             // if Human hits lesser then thresholdYellow but is hitting minimum 1 other human, then Material change to Yellow
@@ -92,13 +90,11 @@ public class ChangeModelTransMaterial : MonoBehaviour
                 {
                     Debug.Log(lst.gameObject.name + " set to Yellow");
                     lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightYellow;
-                    //lst.transform.GetChild(0).GetChild(0).gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightYellow;
                 }
                 else
                 {
                     Debug.Log(lst.gameObject.name + " set to Trans Yellow");
                     lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransYellow;
-                    //lst.transform.GetChild(0).GetChild(0).gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransYellow;
                 }
             }
             // everything else change to Red
@@ -108,13 +104,11 @@ public class ChangeModelTransMaterial : MonoBehaviour
                 {
                     Debug.Log(lst.gameObject.name + " set to Red");
                     lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightRed;
-                    //lst.transform.GetChild(0).GetChild(0).gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightRed;
                 }
                 else
                 {
                     Debug.Log(lst.gameObject.name + " set to Trans Red");
                     lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransRed;
-                    //lst.transform.GetChild(0).GetChild(0).gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransRed;
                 }
             }
         }

+ 126 - 0
testumgebung/CrowdModelling/Assets/Scripts/ChangeMaterial/TestModelMaterial.cs

@@ -0,0 +1,126 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+// Use this Script in parent folder of all Humans
+public class TestModelMaterial : MonoBehaviour
+{
+    [Multiline]
+    public string info;
+
+    [Header("Highlighting Materials:")]
+    public Material highlightRed;
+    public Material highlightGreen;
+    public Material highlightYellow;
+
+    [Header("Highlighting Transparent Materials:")]
+    public Material highlightTransRed;
+    public Material highlightTransGreen;
+    public Material highlightTransYellow;
+
+    [Header("Thresholds:")]
+    [Tooltip("The maximum number of people (including the observed) that will be colored green.\n Threshold Green = 1 means that no further person is allowed to approach.")]
+    public int thresholdGreen = 1;
+    [Tooltip("The maximum number of people (including the observed) that will be colored yellow.\n Threshold Yellow = 2 means that only one other person may approach.")]
+    public int thresholdYellow = 2;
+    
+    [Space]
+    public float radius = 1f;
+
+
+    private Vector3 center;
+    private Collider[] hitHumans;
+    private List<Component> allHumansTransform = new List<Component>(); // only first depth children of parent (Humans)
+
+    // Start is called before the first frame update
+    private void Start()
+    {
+        Component[] allTransform = GetComponentsInChildren<Transform>(); // all possible children of parent object
+        foreach (Transform child in allTransform)
+        {
+            if (child.parent == allTransform[0])
+            {
+                allHumansTransform.Add(child);
+            }
+        }
+    }
+
+    private void OnDrawGizmos()
+    {
+        foreach (Component lst in allHumansTransform)
+        {
+            Gizmos.color = Color.blue;
+            Gizmos.DrawWireSphere(lst.transform.position, radius);
+        }
+    }
+
+    private void FixedUpdate()
+    {
+        foreach (Component lst in allHumansTransform)
+        {
+            center = lst.GetComponent<Transform>().position;
+            // only collisions with Layer "Humans" are listed in "hitHumans"
+            hitHumans = Physics.OverlapSphere(center, radius, LayerMask.GetMask("Humans"));
+
+            bool differentTag = false;
+            foreach (Collider hitHuman in hitHumans)
+            {
+                if (lst.CompareTag(hitHuman.tag))
+                    differentTag = false;
+                else
+                {
+                    differentTag = true;
+                    break;
+                }
+            }
+            int hitHumansLength = 0;
+            foreach (Collider hitHuman in hitHumans)
+            {
+                if (lst.CompareTag(hitHuman.tag))
+                    hitHumansLength++;
+            }
+
+            // if Human hits lesser then thresholdYellow but is hitting minimum 1 other human, then Material change to Green
+            if (hitHumansLength <= thresholdGreen)
+            {
+                if (!differentTag)
+                {
+                    Debug.Log(lst.gameObject.name + " set to Green");
+                    lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightGreen;
+                }
+                else
+                {
+                    Debug.Log(lst.gameObject.name + " set to Trans Green");
+                    lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransGreen;
+                }
+            }
+            // if Human hits lesser then thresholdYellow but is hitting minimum 1 other human, then Material change to Yellow
+            else if (hitHumansLength <= thresholdYellow)
+            {
+                if (!differentTag)
+                {
+                    Debug.Log(lst.gameObject.name + " set to Yellow");
+                    lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightYellow;
+                }
+                else
+                {
+                    Debug.Log(lst.gameObject.name + " set to Trans Yellow");
+                    lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransYellow;
+                }
+            }
+            // everything else change to Red
+            else
+            {
+                if (!differentTag)
+                {
+                    Debug.Log(lst.gameObject.name + " set to Red");
+                    lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightRed;
+                }
+                else
+                {
+                    Debug.Log(lst.gameObject.name + " set to Trans Red");
+                    lst.transform.Find("BasicMotionsDummyModel").Find("DummyMesh").gameObject.GetComponent<SkinnedMeshRenderer>().material = highlightTransRed;
+                }
+            }
+        }
+    }
+}

+ 19 - 0
testumgebung/CrowdModelling/Assets/Scripts/ChangeMaterial/TestModelMaterial.cs.meta

@@ -0,0 +1,19 @@
+fileFormatVersion: 2
+guid: 776ed97f1f60398449b216a8b22ed51b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences:
+  - highlightRed: {fileID: 2100000, guid: 1e1ca54e0c261f44c87e04340377c9e8, type: 2}
+  - highlightGreen: {fileID: 2100000, guid: 34bf8c5c89b3c6d43877bd0fc0941e2e, type: 2}
+  - highlightYellow: {fileID: 2100000, guid: f941f63dd61634f4d874c3bb477a07e1, type: 2}
+  - highlightTransRed: {fileID: 2100000, guid: fab7ca0baff67104ba344c3f41b11c62, type: 2}
+  - highlightTransGreen: {fileID: 2100000, guid: 04288c6c0a4ec574087be6e921cf8046,
+      type: 2}
+  - highlightTransYellow: {fileID: 2100000, guid: 3fc32496506cd874fa5283694c3b8681,
+      type: 2}
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

Некоторые файлы не были показаны из-за большого количества измененных файлов