예제 #1
0
void CServerDriver_Hydra::ScanForNewControllers( bool bNotifyServer )
{
	for ( int base = 0; base < sixenseGetMaxBases(); ++base )
	{
		if ( sixenseIsBaseConnected( base ) )
		{
			sixenseSetActiveBase( base );
			for ( int i = 0; i < sixenseGetMaxControllers(); ++i )
			{
				if ( sixenseIsControllerEnabled( i ) )
				{
					char buf[256];
					GenerateSerialNumber( buf, sizeof( buf ), base, i );
					scope_lock lock( m_Mutex );
					if ( !FindTrackedDeviceDriver( buf, vr::ITrackedDeviceServerDriver_Version ) )
					{
						DriverLog( "added new device %s\n", buf );
						m_vecControllers.push_back( new CHydraHmdLatest( m_pDriverHost, base, i ) );
						if ( bNotifyServer && m_pDriverHost )
						{
							m_pDriverHost->TrackedDeviceAdded( m_vecControllers.back()->GetSerialNumber() );
						}
					}
				}
			}
		}
	}
}
void CServerDriver_Leap::ScanForNewControllers( bool bNotifyServer )
{
    while (m_vecControllers.size() < 2)
    {
        char buf[256];
        int base = 0;
        int i = m_vecControllers.size();
        GenerateSerialNumber( buf, sizeof( buf ), base, i );
        if ( !FindTrackedDeviceDriver( buf ) )
        {
            DriverLog( "added new device %s\n", buf );
            m_vecControllers.push_back( new CLeapHmdLatest( m_pDriverHost, base, i ) );
            if ( bNotifyServer && m_pDriverHost )
            {
                m_pDriverHost->TrackedDeviceAdded( m_vecControllers.back()->GetSerialNumber() );
            }
        }
    }
}