本文整理汇总了C++中osgga::GUIEventAdapter::getMouseYOrientation方法的典型用法代码示例。如果您正苦于以下问题:C++ GUIEventAdapter::getMouseYOrientation方法的具体用法?C++ GUIEventAdapter::getMouseYOrientation怎么用?C++ GUIEventAdapter::getMouseYOrientation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osgga::GUIEventAdapter
的用法示例。
在下文中一共展示了GUIEventAdapter::getMouseYOrientation方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: reprojectPointerData
void CompositeViewer::reprojectPointerData(osgGA::GUIEventAdapter& source_event, osgGA::GUIEventAdapter& dest_event)
{
osgViewer::GraphicsWindow* gw = dynamic_cast<osgViewer::GraphicsWindow*>(dest_event.getGraphicsContext());
if (!gw) return;
float x = dest_event.getX();
float y = dest_event.getY();
bool invert_y = dest_event.getMouseYOrientation()==osgGA::GUIEventAdapter::Y_INCREASING_DOWNWARDS;
if (invert_y && gw->getTraits()) y = gw->getTraits()->height - y;
dest_event.addPointerData(new osgGA::PointerData(gw, x, 0, gw->getTraits()->width,
y, 0, gw->getTraits()->height));
osg::Camera* camera = (source_event.getNumPointerData()>=2) ? dynamic_cast<osg::Camera*>(source_event.getPointerData(1)->object.get()) : 0;
osg::Viewport* viewport = camera ? camera->getViewport() : 0;
if (!viewport) return;
dest_event.addPointerData(new osgGA::PointerData(camera, (x-viewport->x())/viewport->width()*2.0f-1.0f, -1.0, 1.0,
(y-viewport->y())/viewport->height()*2.0f-1.0f, -1.0, 1.0));
osgViewer::View* view = dynamic_cast<osgViewer::View*>(camera->getView());
osg::Camera* view_masterCamera = view ? view->getCamera() : 0;
// if camera isn't the master it must be a slave and could need reprojecting.
if (view && camera!=view_masterCamera)
{
generateSlavePointerData(camera, dest_event);
}
}
示例2: handle
virtual bool handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa )
{
int x = ea.getX(), y = ea.getY(), width = ea.getWindowWidth(), height = ea.getWindowHeight();
if ( ea.getMouseYOrientation()==osgGA::GUIEventAdapter::Y_INCREASING_UPWARDS )
y = ea.getWindowHeight() - y;
if ( !CEGUI::System::getSingletonPtr() )
return false;
CEGUI::GUIContext& context = CEGUI::System::getSingleton().getDefaultGUIContext();
switch ( ea.getEventType() )
{
case osgGA::GUIEventAdapter::KEYDOWN:
context.injectKeyDown(key_conv(ea.getKey()));
context.injectChar(char_conv(ea.getKey()));
// return key_conv(ea.getKey()) != CEGUI::Key::Unknown;
break;
case osgGA::GUIEventAdapter::KEYUP:
context.injectKeyUp(key_conv(ea.getKey()));
// return key_conv(ea.getKey()) != CEGUI::Key::Unknown;
break;
case osgGA::GUIEventAdapter::PUSH:
context.injectMousePosition( x, y );
context.injectMouseButtonDown(convertMouseButton(ea.getButton()));
break;
case osgGA::GUIEventAdapter::RELEASE:
context.injectMousePosition(x, y);
context.injectMouseButtonUp(convertMouseButton(ea.getButton()));
break;
case osgGA::GUIEventAdapter::SCROLL:
if ( ea.getScrollingMotion()==osgGA::GUIEventAdapter::SCROLL_DOWN )
context.injectMouseWheelChange(-1);
else if ( ea.getScrollingMotion()==osgGA::GUIEventAdapter::SCROLL_UP )
context.injectMouseWheelChange(+1);
break;
case osgGA::GUIEventAdapter::DRAG:
case osgGA::GUIEventAdapter::MOVE:
context.injectMousePosition(x, y);
break;
case osgGA::GUIEventAdapter::RESIZE:
if ( _camera.valid() )
{
_camera->setProjectionMatrix( osg::Matrixd::ortho2D(0.0, width, 0.0, height) );
_camera->setViewport( 0.0, 0.0, width, height );
}
break;
default:
return false;
}
CEGUI::Window* rootWindow = context.getRootWindow();
if ( rootWindow )
{
CEGUI::Window* anyWindow = rootWindow->getChildAtPosition( CEGUI::Vector2f(x, y) );
if ( anyWindow ) return true;
}
return false;
}
示例3: generatePointerData
void CompositeViewer::generatePointerData(osgGA::GUIEventAdapter& event)
{
osgViewer::GraphicsWindow* gw = dynamic_cast<osgViewer::GraphicsWindow*>(event.getGraphicsContext());
if (!gw) return;
float x = event.getX();
float y = event.getY();
bool invert_y = event.getMouseYOrientation()==osgGA::GUIEventAdapter::Y_INCREASING_DOWNWARDS;
if (invert_y && gw->getTraits()) y = gw->getTraits()->height - y;
event.addPointerData(new osgGA::PointerData(gw, x, 0, gw->getTraits()->width,
y, 0, gw->getTraits()->height));
event.setMouseYOrientationAndUpdateCoords(osgGA::GUIEventAdapter::Y_INCREASING_UPWARDS);
typedef std::vector<osg::Camera*> CameraVector;
CameraVector activeCameras;
osg::GraphicsContext::Cameras& cameras = gw->getCameras();
for(osg::GraphicsContext::Cameras::iterator citr = cameras.begin();
citr != cameras.end();
++citr)
{
osg::Camera* camera = *citr;
if (camera->getAllowEventFocus() &&
camera->getRenderTargetImplementation()==osg::Camera::FRAME_BUFFER)
{
osg::Viewport* viewport = camera ? camera->getViewport() : 0;
if (viewport &&
x >= viewport->x() && y >= viewport->y() &&
x <= (viewport->x()+viewport->width()) && y <= (viewport->y()+viewport->height()) )
{
activeCameras.push_back(camera);
}
}
}
std::sort(activeCameras.begin(), activeCameras.end(), osg::CameraRenderOrderSortOp());
osg::Camera* camera = activeCameras.empty() ? 0 : activeCameras.back();
if (camera)
{
osg::Viewport* viewport = camera ? camera->getViewport() : 0;
event.addPointerData(new osgGA::PointerData(camera, (x-viewport->x())/viewport->width()*2.0f-1.0f, -1.0, 1.0,
(y-viewport->y())/viewport->height()*2.0f-1.0f, -1.0, 1.0));
osgViewer::View* view = dynamic_cast<osgViewer::View*>(camera->getView());
osg::Camera* view_masterCamera = view ? view->getCamera() : 0;
// if camera isn't the master it must be a slave and could need reprojecting.
if (view && camera!=view_masterCamera)
{
generateSlavePointerData(camera, event);
}
}
}
示例4: handleEvent
bool MYGUIManager::handleEvent(const osgGA::GUIEventAdapter& ea, bool async) const {
if (async || !_platform || !_initialized) {
const_cast<MYGUIManager*>(this)->pushEvent(&ea);
return false;
}
int x = ea.getX(), y = ea.getY(), key = ea.getKey();
static int z = 0;
if (ea.getMouseYOrientation() == osgGA::GUIEventAdapter::Y_INCREASING_UPWARDS)
y = ea.getWindowHeight() - y;
x = int(floor(float(x) / _uiScale + 0.5f));
y = int(floor(float(y) / _uiScale + 0.5f));
switch (ea.getEventType())
{
case osgGA::GUIEventAdapter::PUSH:
return MyGUI::InputManager::getInstance().injectMousePress(x, y, convertMouseButton(ea.getButton()));
break;
case osgGA::GUIEventAdapter::RELEASE:
return MyGUI::InputManager::getInstance().injectMouseRelease(x, y, convertMouseButton(ea.getButton()));
break;
case osgGA::GUIEventAdapter::SCROLL:
switch (ea.getScrollingMotion()) {
case osgGA::GUIEventAdapter::SCROLL_UP:
z++; break;
case osgGA::GUIEventAdapter::SCROLL_DOWN:
z--; break;
}
// fall through
case osgGA::GUIEventAdapter::DRAG:
case osgGA::GUIEventAdapter::MOVE:
return MyGUI::InputManager::getInstance().injectMouseMove(x, y, z);
break;
case osgGA::GUIEventAdapter::KEYDOWN:
if (key<127)
return MyGUI::InputManager::getInstance().injectKeyPress(convertKeyCode(key), (char)key);
else
return MyGUI::InputManager::getInstance().injectKeyPress(convertKeyCode(key));
break;
case osgGA::GUIEventAdapter::KEYUP:
return MyGUI::InputManager::getInstance().injectKeyRelease(convertKeyCode(key));
break;
case osgGA::GUIEventAdapter::RESIZE:
_platform->getRenderManagerPtr()->setViewSize(
int(floor(float(ea.getWindowWidth()) / _uiScale + 0.5f)),
int(floor(float(ea.getWindowHeight()) / _uiScale + 0.5f)));
break;
default:
break;
}
return false;
}
示例5: sendMultiTouchData
bool OscSendingDevice::sendMultiTouchData(const osgGA::GUIEventAdapter &ea)
{
if(!ea.isMultiTouchEvent())
return false;
beginMultiTouchSequence();
osgGA::GUIEventAdapter::TouchData* touch_data = ea.getTouchData();
_oscStream << osc::BeginMessage("/tuio/2Dcur") << "alive";
for(osgGA::GUIEventAdapter::TouchData::iterator i = touch_data->begin(); i != touch_data->end(); ++i)
_oscStream << static_cast<osc::int32>(i->id);
_oscStream << osc::EndMessage;
unsigned int j(0);
unsigned int num_ended(0);
for(osgGA::GUIEventAdapter::TouchData::iterator i = touch_data->begin(); i != touch_data->end(); ++i, ++j)
{
float x = (ea.getTouchPointNormalizedX(j) + 1.0) / 2.0;
float y =(ea.getTouchPointNormalizedY(j) + 1.0) / 2.0;
// flip y if origin is not top/left
if(ea.getMouseYOrientation() == osgGA::GUIEventAdapter::Y_INCREASING_UPWARDS)
y *= -1;
float vel_x(0), vel_y(0), accel(0);
if (_lastEvent.valid())
{
// TODO: add velocity + acceleration
}
_oscStream << osc::BeginMessage("/tuio/2Dcur") << "set" << static_cast<osc::int32>(i->id) << x << y << vel_x << vel_y << accel << osc::EndMessage;
if(i->phase == osgGA::GUIEventAdapter::TOUCH_ENDED)
num_ended++;
}
_lastEvent = new osgGA::GUIEventAdapter(ea);
_finishMultiTouchSequence = (num_ended == touch_data->getNumTouchPoints());
return true;
}
示例6: generateSlavePointerData
void CompositeViewer::generateSlavePointerData(osg::Camera* camera, osgGA::GUIEventAdapter& event)
{
osgViewer::GraphicsWindow* gw = dynamic_cast<osgViewer::GraphicsWindow*>(event.getGraphicsContext());
if (!gw) return;
// What type of Camera is it?
// 1) Master Camera : do nothin extra
// 2) Slave Camera, Relative RF, Same scene graph as master : transform coords into Master Camera and add to PointerData list
// 3) Slave Camera, Relative RF, Different scene graph from master : do nothing extra?
// 4) Slave Camera, Absolute RF, Same scene graph as master : do nothing extra?
// 5) Slave Camera, Absolute RF, Different scene graph : do nothing extra?
// 6) Slave Camera, Absolute RF, Different scene graph but a distortion correction subgraph depending upon RTT Camera (slave or master)
// : project ray into RTT Camera's clip space, and RTT Camera's is Relative RF and sharing same scene graph as master then transform coords.
// if camera isn't the master it must be a slave and could need reprojecting.
osgViewer::View* view = dynamic_cast<osgViewer::View*>(camera->getView());
if (!view) return;
osg::Camera* view_masterCamera = view->getCamera();
if (camera!=view_masterCamera)
{
float x = event.getX();
float y = event.getY();
bool invert_y = event.getMouseYOrientation()==osgGA::GUIEventAdapter::Y_INCREASING_DOWNWARDS;
if (invert_y && gw->getTraits()) y = gw->getTraits()->height - y;
double master_min_x = -1.0;
double master_max_x = 1.0;
double master_min_y = -1.0;
double master_max_y = 1.0;
osg::Matrix masterCameraVPW = view_masterCamera->getViewMatrix() * view_masterCamera->getProjectionMatrix();
if (view_masterCamera->getViewport())
{
osg::Viewport* viewport = view_masterCamera->getViewport();
master_min_x = viewport->x();
master_min_y = viewport->y();
master_max_x = viewport->x()+viewport->width();
master_max_y = viewport->y()+viewport->height();
masterCameraVPW *= viewport->computeWindowMatrix();
}
// slave Camera tahnks to sharing the same View
osg::View::Slave* slave = view ? view->findSlaveForCamera(camera) : 0;
if (slave)
{
if (camera->getReferenceFrame()==osg::Camera::RELATIVE_RF && slave->_useMastersSceneData)
{
osg::Viewport* viewport = camera->getViewport();
osg::Matrix localCameraVPW = camera->getViewMatrix() * camera->getProjectionMatrix();
if (viewport) localCameraVPW *= viewport->computeWindowMatrix();
osg::Matrix matrix( osg::Matrix::inverse(localCameraVPW) * masterCameraVPW );
osg::Vec3d new_coord = osg::Vec3d(x,y,0.0) * matrix;
//OSG_NOTICE<<" pointer event new_coord.x()="<<new_coord.x()<<" new_coord.y()="<<new_coord.y()<<std::endl;
event.addPointerData(new osgGA::PointerData(view_masterCamera, new_coord.x(), master_min_x, master_max_x,
new_coord.y(), master_min_y, master_max_y));
}
else if (!slave->_useMastersSceneData)
{
// Are their any RTT Camera's that this Camera depends upon for textures?
osg::ref_ptr<osgUtil::LineSegmentIntersector> ray = new osgUtil::LineSegmentIntersector(osgUtil::Intersector::WINDOW, x,y);
osgUtil::IntersectionVisitor iv(ray.get());
camera->accept(iv);
if (ray->containsIntersections())
{
osg::Vec3 tc;
osg::Texture* texture = ray->getFirstIntersection().getTextureLookUp(tc);
if (texture)
{
// look up Texture in RTT Camera's.
for(unsigned int i=0; i<view->getNumSlaves(); ++i)
{
osg::Camera* slave_camera = view->getSlave(i)._camera.get();
if (slave_camera)
{
osg::Camera::BufferAttachmentMap::const_iterator ba_itr = slave_camera->getBufferAttachmentMap().find(osg::Camera::COLOR_BUFFER);
if (ba_itr != slave_camera->getBufferAttachmentMap().end())
{
if (ba_itr->second._texture == texture)
{
osg::TextureRectangle* tr = dynamic_cast<osg::TextureRectangle*>(ba_itr->second._texture.get());
osg::TextureCubeMap* tcm = dynamic_cast<osg::TextureCubeMap*>(ba_itr->second._texture.get());
if (tr)
{
event.addPointerData(new osgGA::PointerData(slave_camera, tc.x(), 0.0f, static_cast<float>(tr->getTextureWidth()),
tc.y(), 0.0f, static_cast<float>(tr->getTextureHeight())));
}
else if (tcm)
{
OSG_NOTICE<<" Slave has matched texture cubemap"<<ba_itr->second._texture.get()<<", "<<ba_itr->second._face<<std::endl;
}
else
{
event.addPointerData(new osgGA::PointerData(slave_camera, tc.x(), 0.0f, 1.0f,
tc.y(), 0.0f, 1.0f));
//.........这里部分代码省略.........
示例7: beginSendInputRange
void OscSendingDevice::beginSendInputRange(const osgGA::GUIEventAdapter &ea, MsgIdType msg_id)
{
beginBundle(msg_id);
_oscStream << osc::BeginMessage("/osgga/mouse/set_input_range") << ea.getXmin() << ea.getYmin() << ea.getXmax() << ea.getYmax() << osc::EndMessage;
_oscStream << osc::BeginMessage("/osgga/mouse/y_orientation_increasing_upwards") << (bool)(ea.getMouseYOrientation() == osgGA::GUIEventAdapter::Y_INCREASING_UPWARDS) << osc::EndMessage;
}
示例8: sendInit
void OscProxyEventHandler::sendInit(const osgGA::GUIEventAdapter &ea)
{
_oscStream << osc::BeginBundle();
_oscStream << osc::BeginMessage("/osgga/resize") << ea.getWindowX() << ea.getWindowY() << ea.getWindowWidth() << ea.getWindowHeight() << osc::EndMessage;
_oscStream << osc::BeginMessage("/osgga/mouse/set_input_range") << ea.getXmin() << ea.getYmin() << ea.getXmax() << ea.getYmax() << osc::EndMessage;
_oscStream << osc::BeginMessage("/osgga/mouse/y_orientation_increasing_upwards") << (bool)(ea.getMouseYOrientation() == osgGA::GUIEventAdapter::Y_INCREASING_UPWARDS) << osc::EndMessage;
_oscStream << osc::EndBundle;
}