本文整理汇总了C++中osg::Trackball::setAutoPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ Trackball::setAutoPosition方法的具体用法?C++ Trackball::setAutoPosition怎么用?C++ Trackball::setAutoPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::Trackball
的用法示例。
在下文中一共展示了Trackball::setAutoPosition方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mouse
void mouse(int button, int state, int x, int y)
{
if ( state == 0 )
{
switch ( button )
{
case GLUT_LEFT_BUTTON: break;
case GLUT_MIDDLE_BUTTON:tball.setAutoPosition(true);
break;
case GLUT_RIGHT_BUTTON: tball.setAutoPositionNeg(true);
break;
}
mouseb |= 1 << button;
}
else if ( state == 1 )
{
switch ( button )
{
case GLUT_LEFT_BUTTON: break;
case GLUT_MIDDLE_BUTTON:tball.setAutoPosition(false);
break;
case GLUT_RIGHT_BUTTON: tball.setAutoPositionNeg(false);
break;
}
mouseb &= ~(1 << button);
}
lastx = x;
lasty = y;
}
示例2: mousePressEvent
void MyOSGQGLWidget::mousePressEvent(QMouseEvent *me)
{
switch(me->button())
{
case Qt::MidButton:
tball.setAutoPosition(true);
break;
case Qt::RightButton:
tball.setAutoPositionNeg(true);
break;
default:
break;
}
mouseb |= me->button();
lastx = me->x();
lasty = me->y();
}
示例3: handleMouseEvent
static OSStatus handleMouseEvent(EventHandlerCallRef nextHandler, EventRef event, void *userData)
{
OSStatus err;
OSG::Real32 w,h,a,b,c,d;
// Get the pressed mouse button
EventMouseButton mouseButton;
err = GetEventParameter(event, kEventParamMouseButton, typeMouseButton, 0, sizeof(mouseButton), 0, &mouseButton);
if (err != noErr)
return err;
// Get the modifier keys
::UInt32 modifierKeys;
err = GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, 0, sizeof(modifierKeys), 0, &modifierKeys);
if (err != noErr)
return err;
// Traditionally, Apple mice just have one button. It is common practice to simulate
// the middle and the right button by pressing the option or the control key.
if (mouseButton == kEventMouseButtonPrimary)
{
if (modifierKeys & optionKey)
mouseButton = kEventMouseButtonTertiary;
if (modifierKeys & controlKey)
mouseButton = kEventMouseButtonSecondary;
}
// Get the location of the mouse pointer
::Point location;
err = GetEventParameter(event, kEventParamMouseLocation, typeQDPoint, 0, sizeof(location), 0, &location);
if (err != noErr)
return err;
// Handle the different kinds of events
::UInt32 eventKind = GetEventKind(event);
switch (eventKind)
{
// mouse button pressed
case kEventMouseDown:
lastx = location.h;
lasty = location.v;
switch (mouseButton)
{
case kEventMouseButtonPrimary: // left button
break;
case kEventMouseButtonSecondary: // right button
tball.setAutoPositionNeg(true);
break;
case kEventMouseButtonTertiary: // middle button
tball.setAutoPosition(true);
break;
}
break;
// mouse button released
case kEventMouseUp:
switch (mouseButton)
{
case kEventMouseButtonPrimary: // left button
break;
case kEventMouseButtonSecondary: // right button
tball.setAutoPositionNeg(false);
break;
case kEventMouseButtonTertiary: // middle button
tball.setAutoPosition(false);
break;
}
break;
// mouse moved while a button is pressed
case kEventMouseDragged:
w = win->getWidth();
h = win->getHeight();
a = -2. * ( lastx / w - .5 );
b = -2. * ( .5 - lasty / h );
c = -2. * ( location.h / w - .5 );
d = -2. * ( .5 - location.v / h );
switch (mouseButton)
{
case kEventMouseButtonPrimary: // left button
tball.updateRotation( a, b, c, d );
break;
case kEventMouseButtonSecondary: // right button
tball.updatePositionNeg( a, b, c, d );
break;
case kEventMouseButtonTertiary: // middle button
tball.updatePosition( a, b, c, d );
break;
}
lastx = location.h;
lasty = location.v;
// Redraw the whole window
redraw();
break;
}
// We have to return eventNotHandledErr, otherwise the system is
// not able to operate the menu and the window border
//.........这里部分代码省略.........