private int LocateExistingRigs(string[] rigNames, bool forceOrbital) { CachedXAxisHeading = 0; mOrbitals = new CinemachineOrbitalTransposer[rigNames.Length]; m_Rigs = new CinemachineVirtualCamera[rigNames.Length]; int rigsFound = 0; foreach (Transform child in transform) { CinemachineVirtualCamera vcam = child.GetComponent <CinemachineVirtualCamera>(); if (vcam != null) { GameObject go = child.gameObject; for (int i = 0; i < rigNames.Length; ++i) { if (mOrbitals[i] == null && go.name == rigNames[i]) { // Must have an orbital transposer or it's no good if (m_IsBodyNothing) { mOrbitals[i] = null; if (vcam.GetCinemachineComponent <CinemachineOrbitalTransposer>() != null) { vcam.DestroyCinemachineComponent <CinemachineOrbitalTransposer>(); } ++rigsFound; } else { mOrbitals[i] = vcam.GetCinemachineComponent <CinemachineOrbitalTransposer>(); if (mOrbitals[i] == null && forceOrbital) { mOrbitals[i] = vcam.AddCinemachineComponent <CinemachineOrbitalTransposer>(); } if (mOrbitals[i] != null) { mOrbitals[i].m_HeadingIsSlave = true; mOrbitals[i].m_XAxis.m_InputAxisName = string.Empty; mOrbitals[i].HeadingUpdater = UpdateXAxisHeading; mOrbitals[i].m_RecenterToTargetHeading.m_enabled = false; ++rigsFound; } } m_Rigs[i] = vcam; m_Rigs[i].m_StandbyUpdate = m_StandbyUpdate; } } } } return(rigsFound); }