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); }