camera controller added
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user