VcamExtraState GetExtraState(ICinemachineCamera vcam)
        {
            if (mExtraState == null)
            {
                mExtraState = new Dictionary <ICinemachineCamera, VcamExtraState>();
            }
            VcamExtraState extra = null;

            if (!mExtraState.TryGetValue(vcam, out extra))
            {
                extra = mExtraState[vcam] = new VcamExtraState();
            }
            if (extra.filter == null || extra.filter.Sigma != m_PositionSmoothing)
            {
                extra.filter = new GaussianWindow1D_Vector3(m_PositionSmoothing);
            }
            if (!m_UseCurbFeelers)
            {
                extra.curbFeelers = null;
            }
            else if (extra.curbFeelers == null || extra.curbFeelers.Length != 9 ||
                     extra.curbResistance != m_CurbResistance ||
                     extra.feelerDistance != m_CurbFeelerDistance)
            {
                extra.RebuildCurbFeelers(m_CurbResistance, m_CurbFeelerDistance);
            }
            return(extra);
        }