コード例 #1
0
        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);
        }