CLeapHmdLatest::CLeapHmdLatest( vr::IServerDriverHost * pDriverHost, int base, int n ) : m_pDriverHost( pDriverHost ) , m_nBase( base ) , m_nId( n ) , m_bCalibrated( true ) , m_pAlignmentPartner( NULL ) , m_unSteamVRTrackedDeviceId( vr::k_unTrackedDeviceIndexInvalid ) { DriverLog("CLeapHmdLatest::CLeapHmdLatest(base=%d, n=%d)\n", base, n); memset(m_hmdPos, 0, sizeof(m_hmdPos)); char buf[256]; GenerateSerialNumber( buf, sizeof( buf ), base, n ); m_strSerialNumber = buf; memset( &m_ControllerState, 0, sizeof( m_ControllerState ) ); memset( &m_Pose, 0, sizeof( m_Pose ) ); m_Pose.result = vr::TrackingResult_Uninitialized; m_firmware_revision = 0x0001; m_hardware_revision = 0x0001; // Load config from steamvr.vrsettings vr::IVRSettings *settings_; settings_ = m_pDriverHost->GetSettings(vr::IVRSettings_Version); // Load rendermodel char tmp_[256]; settings_->GetString("leap", (m_nId == LEFT_CONTROLLER) ? "renderModel_lefthand" : (m_nId == RIGHT_CONTROLLER) ? "renderModel_righthand" : "renderModel", tmp_, sizeof(tmp_), "vr_controller_vive_1_5"); m_strRenderModel = tmp_; // set the m_gripAngleOffset = settings_->GetFloat("leap", (m_nId == LEFT_CONTROLLER) ? "gripAngleOffset_lefthand" : (m_nId == RIGHT_CONTROLLER) ? "gripAngleOffset_righthand" : "gripAngleOffset", 0.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() ); } } } }
CHydraHmdLatest::CHydraHmdLatest( vr::IServerDriverHost * pDriverHost, int base, int n ) : m_pDriverHost( pDriverHost ) , m_nBase( base ) , m_nId( n ) , m_ucPoseSequenceNumber( 0 ) , m_eHemisphereTrackingState( k_eHemisphereTrackingDisabled ) , m_bCalibrated( false ) , m_pAlignmentPartner( NULL ) , m_eSystemButtonState( k_eIdle ) , m_unSteamVRTrackedDeviceId( vr::k_unTrackedDeviceIndexInvalid ) { char buf[256]; GenerateSerialNumber( buf, sizeof( buf ), base, n ); m_strSerialNumber = buf; memset( &m_ControllerState, 0, sizeof( m_ControllerState ) ); memset( &m_Pose, 0, sizeof( m_Pose ) ); m_Pose.result = vr::TrackingResult_Calibrating_InProgress; sixenseControllerData cd; sixenseGetNewestData( m_nId, &cd ); m_firmware_revision = cd.firmware_revision; m_hardware_revision = cd.hardware_revision; }