camera controller added

This commit is contained in:
2024-04-19 15:03:27 +01:00
parent 67792552dc
commit 099fceda06
7 changed files with 589 additions and 311 deletions

View File

@@ -24,6 +24,7 @@ public class CameraManager : MonoBehaviour
public LayerMask m_Agent;
public LayerMask m_Bodies;
public LayerMask m_Environment;
public LayerMask m_Actuations;
[Header("Camera Settings")]
[Range(2, 20)]
@@ -34,6 +35,8 @@ public class CameraManager : MonoBehaviour
public int m_CameraSwapMin;
[Range(5, 180)]
public int m_CameraSwapMax;
public bool m_CameraController;
private int m_CameraIndex = 0;
private void Awake()
{
@@ -52,7 +55,40 @@ public class CameraManager : MonoBehaviour
private void Start()
{
StartCoroutine(CameraSwitch());
if(!m_CameraController)
StartCoroutine(CameraSwitch());
}
private void Update(){
if (m_CameraController)
CameraControllerInput();
}
private void CameraControllerInput(){
var count = 0;
if(Input.GetKeyDown(KeyCode.LeftArrow)){
if (m_CameraIndex != 0)
m_CameraIndex--;
}
if(Input.GetKeyDown(KeyCode.RightArrow)){
if (m_CameraIndex != 1)
m_CameraIndex++;
}
for(int i = 0 + (m_CameraIndex * 10); i < m_CameraObjects.Count; i++){
if(Input.GetKeyDown(KeyCode.Alpha0 + ( i - ( m_CameraIndex * 10 ) ))){
foreach(GameObject obj in m_CameraObjects){
if(count == i){
Debug.Log($"Swapping to:{obj.name}");
SetCamera(obj);
break;
}
count++;
}
}
}
}
IEnumerator CameraSwitch()
@@ -67,7 +103,6 @@ public class CameraManager : MonoBehaviour
m_Camera = m_Brain.GetComponent<Camera>();
string currentTag = m_ActiveCamera.tag;
switch (currentTag)
{
case "vc_Agent":
@@ -79,9 +114,8 @@ public class CameraManager : MonoBehaviour
case "vc_Environment":
m_Camera.cullingMask = m_Environment;
break;
default:
case "vc_Default":
m_Camera.cullingMask = m_Everything;
case "vc_Actuations":
m_Camera.cullingMask = m_Actuations;
break;
}
@@ -154,7 +188,8 @@ public class CameraManager : MonoBehaviour
float blendtime = (float)Random.Range(m_CameraBlendMin, m_CameraBlendMax);
if (AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Body", "vc_Agent") || AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Environment", "vc_Agent") || AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Environment", "vc_Body")
|| AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Environment", "vc_Environment") || AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Body", "vc_Body"))
|| AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Environment", "vc_Environment") || AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Body", "vc_Body") || AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Actuations", "vc_Body")
|| AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Actuations", "vc_Environment") || AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Actuations", "vc_Agent") || AreDifferentPairs(pastCamera.tag, m_ActiveCamera.tag, "vc_Actuations", "vc_Actuations"))
blendtime = 0;
cmBrain.m_DefaultBlend.m_Time = blendtime;
@@ -184,11 +219,7 @@ public class CameraManager : MonoBehaviour
if(parentObject != null)
{
foreach(Transform child in parentObject.transform)
{
if(child.gameObject.activeSelf)
m_CameraObjects.Add(child.gameObject);
}
AddActiveChildrenRecursively(parentObject.transform);
}
else
{
@@ -204,10 +235,24 @@ public class CameraManager : MonoBehaviour
Debug.LogError("CM Brain <GameObject> could not be found.");
}
Debug.Log(m_CameraObjects.Count);
Debug.Log($"Camera Count: {m_CameraObjects.Count}");
}
void AddActiveChildrenRecursively(Transform parentTransform)
{
foreach (Transform child in parentTransform)
{
if (child.gameObject.activeSelf && child.GetComponent<CinemachineVirtualCamera>() != null)
{
m_CameraObjects.Add(child.gameObject);
}
// Recursively call the function for each child
AddActiveChildrenRecursively(child);
}
}