本文整理汇总了C++中CNavigator::Forward方法的典型用法代码示例。如果您正苦于以下问题:C++ CNavigator::Forward方法的具体用法?C++ CNavigator::Forward怎么用?C++ CNavigator::Forward使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CNavigator
的用法示例。
在下文中一共展示了CNavigator::Forward方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnUpdate
BOOL CRVTrackerZoom::OnUpdate(const CUIEvent &cEvent)
{
// Only move during idle
if (m_bIdleOnly && (cEvent.GetType() != UIEVENT_NONE))
return TRUE;
int32 zDelta = GetWheelDelta();
if( zDelta == 0 )
return FALSE;
BOOL bZoomToCursor = GetApp()->GetOptions().GetControlsOptions()->IsZoomToCursor();
//clear out the wheel delta
SetWheelDelta( 0 );
CNavigator *pNav = &m_pView->Nav();
// Set the initial speed value
float fSpeed = (m_bFast) ? 3.0f : 0.5f;
//see if we are in a parallel viewport
if( m_pView->IsParallelViewType() )
{
//see if we want to zoom to the cursor
if(bZoomToCursor)
{
// Convert cursor position to world coordinates:
CVector vCursor;
CRect rect;
m_pView->GetWindowRect( &rect );
CPoint cursorPt = m_cCurPt;
m_pView->GetVertexFromPoint( cursorPt, vCursor, FALSE );
// Zoom:
m_pView->ViewDef()->m_Magnify += ((CReal)zDelta * m_pView->ViewDef()->m_Magnify) / 300.0f;
if( m_pView->ViewDef()->m_Magnify < 0.0001f )
m_pView->ViewDef()->m_Magnify = 0.0001f;
CVector vCursor2;
m_pView->GetVertexFromPoint( cursorPt, vCursor2, FALSE );
// This effectively makes the cursor position the focal point for the zoom.
pNav->Pos() += vCursor - vCursor2;
}
else
{
//we just want to zoom in
m_pView->ViewDef()->m_Magnify += ((CReal)zDelta * m_pView->ViewDef()->m_Magnify) / 300.0f;
if( m_pView->ViewDef()->m_Magnify < 0.0001f )
m_pView->ViewDef()->m_Magnify = 0.0001f;
}
}
//Walk-through, meaning that we take a ray through the screen
else
{
//we are in a perspective viewport.
if(!bZoomToCursor)
{
pNav->Pos() += pNav->Forward() * (float)zDelta * fSpeed;
}
else
{
CEditRay ray = m_pView->ViewDef()->MakeRayFromScreenPoint( m_cCurPt );
CVector forward = ray.m_Dir;
forward.Norm();
pNav->Pos() += forward * ((CReal)zDelta * fSpeed);
}
}
m_pView->Invalidate();
return TRUE;
}