SpineRelativeCameraSpaceCoordinateSystem::SpineRelativeCameraSpaceCoordinateSystem( ) : 
        m_dwLastTrackingID( 0 ),
        m_fAverageSpineHeadLength( 0.0f ),
        m_vAverageNormalToGravity( XMVectorZero() )
    {    
        m_vAverageSpine = XMVectorSet( 0.0f, 0.0f, 0.0f, 1.0f ); 
        m_vRightHandRelative = XMVectorSet( 0.0f, 0.0f, 0.0f, 0.0f ); 
        m_vLeftHandRelative = XMVectorSet( 0.0f, 0.0f, 0.0f, 0.0f );

        // Call the updates function with default parameters
        SetUpdateRates(); 
    }
Beispiel #2
0
//-----------------------------------------------------------------------------
//!
//-----------------------------------------------------------------------------
tPerformanceWidget::tPerformanceWidget( tIInstrumentProductFactory* pProductFactory, QWidget* pParent )
: QWidget( pParent )
, m_Mode( tPerformanceWidget::eModeAuto )
{
    Assert( pProductFactory );
    if ( pProductFactory )
    {
        setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );

        m_pLayout = new QGridLayout( this );
        m_pLayout->setSpacing( 0 );
        m_pLayout->setContentsMargins( 0, 0, 0, 0 );

        m_pGaugeStack = new tSlidingStackedWidget( this );
        m_pGaugeStack->setSpeed( 300 );
        m_pGaugeStack->setAnimation( QEasingCurve::OutQuad );
        m_pGaugeStack->setWrap( true );

        m_pLayout->addWidget( m_pGaugeStack, 0, 1, 2, 1 );

        tGaugeParams gaugeParams = tGaugeParams();
        gaugeParams.m_SliderParams.m_LeftHandScale = false;

        // Bar graphs
        m_pVmgPerfGraph = new tPerfSliderGauge( DATA_TYPE_SPEED_WATER, this, gaugeParams );
        m_pGaugeStack->addWidget( m_pVmgPerfGraph );
        m_Gauges << m_pVmgPerfGraph;

        m_pReachingPerfGraph = new tPerfSliderGauge( DATA_TYPE_POLAR_PERFORMANCE, this, gaugeParams );
        m_pGaugeStack->addWidget( m_pReachingPerfGraph );
        m_Gauges << m_pReachingPerfGraph;

        // Digital gauges
        m_pTargetBspGauge = pProductFactory->GetDigitalGauge( DATA_TYPE_TARGET_BOAT_SPEED, this );
        m_pTargetBspGauge->SetBorders( false, false, true, true );
        m_pTargetBspGauge->SetTaperedBorder( true, false );
        m_pLayout->addWidget( m_pTargetBspGauge, 0, 0 );
        m_Gauges << m_pTargetBspGauge;

        m_pTargetTwaGauge = pProductFactory->GetDigitalGauge( DATA_TYPE_TARGET_TRUE_WIND_ANGLE, this );
        m_pTargetTwaGauge->SetBorders( false, false, true, false );
        m_pTargetTwaGauge->SetTaperedBorder( false, true );
        m_pLayout->addWidget( m_pTargetTwaGauge, 1, 0 );
        m_Gauges << m_pTargetTwaGauge;

        m_pPolarSpeedGauge = pProductFactory->GetDigitalGauge( DATA_TYPE_POLAR_SPEED, this );
        m_pPolarSpeedGauge->SetBorders( false, false, true, true );
        m_pPolarSpeedGauge->SetTaperedBorder( true, false );
        m_pLayout->addWidget( m_pPolarSpeedGauge, 0, 0 );
        m_Gauges << m_pPolarSpeedGauge;

        m_pBoatSpeedGauge = pProductFactory->GetDigitalGauge( DATA_TYPE_SPEED_WATER, this );
        m_pBoatSpeedGauge->SetBorders( false, false, true, false );
        m_pBoatSpeedGauge->SetTaperedBorder( false, true );
        m_pLayout->addWidget( m_pBoatSpeedGauge, 1, 0 );
        m_Gauges << m_pBoatSpeedGauge;

        int dataBoxW = Widgets::GetThirdScreenWidth();

        m_pVmgPerfGraph->setFixedSize( Widgets::GetScreenWidth() - dataBoxW, Widgets::GetScreenHeight() );
        m_pReachingPerfGraph->setFixedSize( Widgets::GetScreenWidth() - dataBoxW, Widgets::GetScreenHeight() );
        m_pTargetBspGauge->setFixedSize( dataBoxW, Widgets::GetHalfScreenHeight() );
        m_pTargetTwaGauge->setFixedSize( dataBoxW, Widgets::GetHalfScreenHeight() );
        m_pPolarSpeedGauge->setFixedSize( dataBoxW, Widgets::GetHalfScreenHeight() );
        m_pBoatSpeedGauge->setFixedSize( dataBoxW, Widgets::GetHalfScreenHeight() );

        SetUpdateRates();
        Connect( tInstrumentDataManager::Instance(), SIGNAL( UpdateRatesChanged() ), this, SLOT( SetUpdateRates() ) );

        UpdatePerfGauge();
        QTimer* pTimer = new QTimer( this );
        pTimer->setInterval( 1000 );
        Connect( pTimer, SIGNAL( timeout() ), this, SLOT( UpdatePerfGauge() ) );
        pTimer->start();
    }
}