本文整理汇总了C++中MEvent::getPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ MEvent::getPosition方法的具体用法?C++ MEvent::getPosition怎么用?C++ MEvent::getPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MEvent
的用法示例。
在下文中一共展示了MEvent::getPosition方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: doDrag
MStatus HairToolContext::doDrag( MEvent& event )
{
if(intersectionFound){
//Our Viewer
m_View = M3dView::active3dView();
//Get Screen click position
event.getPosition( m_storage[0], m_storage[1] );
screenPoints.push_back(vec2(m_storage[0], m_storage[1]));
//Camera stuff
MPoint origin = MPoint();
MVector direction = MVector();
m_View.viewToWorld(m_storage[0], m_storage[1], origin, direction);
float tValue = ((point - origin)*normal) / (direction * normal);
MPoint newPoint = tValue*direction + origin;
splinePoints.push_back(newPoint);
//Draw GL curve
m_View.beginXorDrawing(true, true, 1.0f, M3dView::kStippleDashed);
glBegin(GL_LINE_STRIP );
for ( unsigned i = 0; i < screenPoints.size() ; i++ ){
glVertex2i( screenPoints[i][0], screenPoints[i][1] );
}
glEnd();
m_View.endXorDrawing();
}
return MPxContext::doDrag(event);
}
示例2: doPressCommon
void marqueeContext::doPressCommon( MEvent & event )
{
// Figure out which modifier keys were pressed, and set up the
// listAdjustment parameter to reflect what to do with the selected points.
if (event.isModifierShift() || event.isModifierControl() ) {
if ( event.isModifierShift() ) {
if ( event.isModifierControl() ) {
// both shift and control pressed, merge new selections
listAdjustment = MGlobal::kAddToList;
} else {
// shift only, xor new selections with previous ones
listAdjustment = MGlobal::kXORWithList;
}
} else if ( event.isModifierControl() ) {
// control only, remove new selections from the previous list
listAdjustment = MGlobal::kRemoveFromList;
}
} else {
listAdjustment = MGlobal::kReplaceList;
}
// Extract the event information
//
event.getPosition( start_x, start_y );
}
示例3: doDrag
MStatus customAttrCtx::doDrag( MEvent & event )
//
// Description
// This method is called when a mouse button is dragged while this context is
// the current context.
//
{
MStatus stat;
// If an object has been selected, then process the drag. Otherwise, pass the
// event on up to the parent class.
if ((!isSelecting()) && (event.mouseButton() == MEvent::kMiddleMouse)) {
event.getPosition( endPos_x, endPos_y );
// Undo the command to erase the previously set delta value from the
// node, set a new delta value in the command and redo the command to
// set the values in the node.
cmd->undoIt();
cmd->setDelta(endPos_x - startPos_x);
stat = cmd->redoIt();
view.refresh( true );
}
else
stat = MPxSelectionContext::doDrag( event );
return stat;
}
示例4: doDrag
MStatus marqueeContext::doDrag( MEvent & event )
//
// Drag out the marquee (using OpenGL)
//
{
#if CUSTOM_XOR_DRAW
xorDraw XORdraw(&view);
XORdraw.beginXorDrawing();
#else
view.beginXorDrawing();
#endif
if (fsDrawn) {
// Redraw the marquee at its old position to erase it.
drawMarqueeGL();
}
fsDrawn = true;
// Get the marquee's new end position.
event.getPosition( last_x, last_y );
// Draw the marquee at its new position.
drawMarqueeGL();
#if CUSTOM_XOR_DRAW
XORdraw.endXorDrawing();
#else
view.endXorDrawing();
#endif
return MS::kSuccess;
}
示例5: doRelease
MStatus customAttrCtx::doRelease( MEvent & event )
//
// Description
// This method is called when a mouse button is released while this context is
// the current context.
//
{
// Let the parent class handle the event.
MStatus stat = MPxSelectionContext::doRelease( event );
// If an object is selected, process the event if the middle mouse button
// was lifted.
if ( !isSelecting() ) {
if (event.mouseButton() == MEvent::kMiddleMouse)
{
event.getPosition( endPos_x, endPos_y );
// Delete the move command if we have moved less then 2 pixels
// otherwise call finalize to set up the journal and add the
// command to the undo queue.
//
if ( abs(startPos_x - endPos_x) < 2 ) {
delete cmd;
view.refresh( true );
}
else {
stat = cmd->finalize();
view.refresh( true );
}
setCursor(MCursor::defaultCursor);
}
}
return stat;
}
示例6: selection
MStatus SelectRingContext2::doPress( MEvent &event )
{
listAdjust = MGlobal::kReplaceList;
// Determine which modifier keys were pressed
if( event.isModifierShift() || event.isModifierControl() )
{
if( event.isModifierShift() )
{
if( event.isModifierControl() )
listAdjust = MGlobal::kAddToList; // Shift+Ctrl: Merge selection
else
listAdjust = MGlobal::kXORWithList; // Shift: Toggle selection (XOR)
}
else
{
if( event.isModifierControl() )
listAdjust = MGlobal::kRemoveFromList; // Ctrl: Remove selection
}
}
// Get the position of the mouse click
event.getPosition( pressX, pressY );
return MS::kSuccess;
}
示例7: doPress
MStatus customAttrCtx::doPress( MEvent & event )
//
// Description
// This method is called when a mouse button is pressed while this context is
// the current context.
//
{
// Let the parent class handle the event first in case there is no object
// selected yet. The parent class will perform any necessary selection.
MStatus stat = MPxSelectionContext::doPress( event );
// If an object has been selected, then process the event. Otherwise,
// ignore it as there is nothing to do.
if ( !isSelecting() ) {
if (event.mouseButton() == MEvent::kMiddleMouse)
{
setCursor(MCursor::handCursor);
view = M3dView::active3dView();
// Create an instance of the customAttrCmd tool command and initialize
// its delta value to 0. As the mouse drags, the delta value will change.
// when the mouse is lifted, a final command will be constructed with the
// most recently set delta value and axis specifications.
cmd = (customAttrCmd *)newToolCommand();
cmd->setDelta(0.0);
event.getPosition( startPos_x, startPos_y );
// Determine the channel box attribute which will be operated on by the
// dragging motion and set the state of the command accordingly.
unsigned int i;
MStringArray result;
MGlobal::executeCommand(
"channelBox -q -selectedMainAttributes $gChannelBoxName", result);
for (i=0; i<result.length(); i++)
{
if (result[i] == customAttributeString)
{
cmd->setDragX();
break;
}
}
}
}
return stat;
}
示例8: doPress
MStatus marqueeContext::doPress( MEvent & event )
//
// Begin marquee drawing (using OpenGL)
// Get the start position of the marquee
//
{
// Figure out which modifier keys were pressed, and set up the
// listAdjustment parameter to reflect what to do with the selected points.
if (event.isModifierShift() || event.isModifierControl() ) {
if ( event.isModifierShift() ) {
if ( event.isModifierControl() ) {
// both shift and control pressed, merge new selections
listAdjustment = MGlobal::kAddToList;
} else {
// shift only, xor new selections with previous ones
listAdjustment = MGlobal::kXORWithList;
}
} else if ( event.isModifierControl() ) {
// control only, remove new selections from the previous list
listAdjustment = MGlobal::kRemoveFromList;
}
} else {
listAdjustment = MGlobal::kReplaceList;
}
// Extract the event information
//
event.getPosition( start_x, start_y );
// Enable OpenGL drawing on viewport
view = M3dView::active3dView();
view.beginGL();
#ifdef USE_SOFTWARE_OVERLAYS
p_last_x = start_x;
p_last_y = start_y;
fsDrawn = false;
#else
// If HW overlays supported then initialize the overlay plane for drawing.
view.beginOverlayDrawing();
#endif
return MS::kSuccess;
}
示例9: doPress
MStatus moveContext::doPress( MEvent & event )
{
MStatus stat = MPxSelectionContext::doPress( event );
MSpace::Space spc = MSpace::kWorld;
// If we are not in selecting mode (i.e. an object has been selected)
// then set up for the translation.
//
if ( !isSelecting() ) {
event.getPosition( startPos_x, startPos_y );
view = M3dView::active3dView();
MDagPath camera;
stat = view.getCamera( camera );
if ( stat != MS::kSuccess ) {
cerr << "Error: M3dView::getCamera" << endl;
return stat;
}
MFnCamera fnCamera( camera );
MVector upDir = fnCamera.upDirection( spc );
MVector rightDir = fnCamera.rightDirection( spc );
// Determine the camera used in the current view
//
if ( fnCamera.isOrtho() ) {
if ( upDir.isEquivalent(MVector::zNegAxis,kVectorEpsilon) ) {
currWin = TOP;
} else if ( rightDir.isEquivalent(MVector::xAxis,kVectorEpsilon) ) {
currWin = FRONT;
} else {
currWin = SIDE;
}
}
else {
currWin = PERSP;
}
// Create an instance of the move tool command.
//
cmd = (moveCmd*)newToolCommand();
cmd->setVector( 0.0, 0.0, 0.0 );
}
return stat;
}
示例10: doPtrMoved
MStatus grabUVContext::doPtrMoved( MEvent & event, MHWRender::MUIDrawManager& drawMgr, const MHWRender::MFrameContext& context)
{
MPxTexContext::doPtrMoved(event, drawMgr, context);
double portW, portH;
portSize(portW, portH);
short x, y;
event.getPosition( x, y );
y = short(portH) - y;
fCurrentScreenPoint = MPoint( x, y );
fLastScreenPoint = MPoint( x, y );
fBrushCenterScreenPoint = MPoint( x, y );
return MS::kSuccess;
}
示例11: doRelease
MStatus moveContext::doRelease( MEvent & event )
{
MStatus stat = MPxSelectionContext::doRelease( event );
if ( !isSelecting() ) {
event.getPosition( endPos_x, endPos_y );
// Delete the move command if we have moved less then 2 pixels
// otherwise call finalize to set up the journal and add the
// command to the undo queue.
//
if ( abs(startPos_x - endPos_x) < 2 && abs(startPos_y - endPos_y) < 2 ) {
delete cmd;
view.refresh( true );
}
else {
stat = cmd->finalize();
view.refresh( true );
}
}
return stat;
}
示例12: doPress
MStatus lassoTool::doPress( MEvent & event )
// Set up for overlay drawing, and remember our starting point
{
// Figure out which modifier keys were pressed, and set up the
// listAdjustment parameter to reflect what to do with the selected points.
if (event.isModifierShift() || event.isModifierControl() ) {
if ( event.isModifierShift() ) {
if ( event.isModifierControl() ) {
// both shift and control pressed, merge new selections
listAdjustment = MGlobal::kAddToList;
} else {
// shift only, xor new selections with previous ones
listAdjustment = MGlobal::kXORWithList;
}
} else if ( event.isModifierControl() ) {
// control only, remove new selections from the previous list
listAdjustment = MGlobal::kRemoveFromList;
}
} else {
listAdjustment = MGlobal::kReplaceList;
}
// Get the active 3D view.
//
view = M3dView::active3dView();
// Create an array to hold the lasso points. Assume no mem failures
maxSize = initialSize;
lasso = (coord*) malloc (sizeof(coord) * maxSize);
coord start;
event.getPosition( start.h, start.v );
num_points = 1;
lasso[0] = min = max = start;
firstDraw = true;
return MS::kSuccess;
}
示例13: doReleaseCommon
void marqueeContext::doReleaseCommon( MEvent & event )
{
MSelectionList incomingList, marqueeList;
// Get the end position of the marquee
event.getPosition( last_x, last_y );
// Save the state of the current selections. The "selectFromSceen"
// below will alter the active list, and we have to be able to put
// it back.
MGlobal::getActiveSelectionList(incomingList);
// If we have a zero dimension box, just do a point pick
//
if ( abs(start_x - last_x) < 2 && abs(start_y - last_y) < 2 ) {
// This will check to see if the active view is in wireframe or not.
MGlobal::SelectionMethod selectionMethod = MGlobal::selectionMethod();
MGlobal::selectFromScreen( start_x, start_y, MGlobal::kReplaceList, selectionMethod );
} else {
// The Maya select tool goes to wireframe select when doing a marquee, so
// we will copy that behaviour.
// Select all the objects or components within the marquee.
MGlobal::selectFromScreen( start_x, start_y, last_x, last_y,
MGlobal::kReplaceList,
MGlobal::kWireframeSelectMethod );
}
// Get the list of selected items
MGlobal::getActiveSelectionList(marqueeList);
// Restore the active selection list to what it was before
// the "selectFromScreen"
MGlobal::setActiveSelectionList(incomingList, MGlobal::kReplaceList);
// Update the selection list as indicated by the modifier keys.
MGlobal::selectCommand(marqueeList, listAdjustment);
}
示例14: doDrag
MStatus lassoTool::doDrag( MEvent & event )
// Add to the growing lasso
{
view.beginXorDrawing(true, true, 1.0f, M3dView::kStippleDashed);
if (!firstDraw) {
// Redraw the old lasso to clear it.
draw_lasso();
} else {
firstDraw = false;
}
coord currentPos;
event.getPosition( currentPos.h, currentPos.v );
append_lasso( currentPos.h, currentPos.v );
// Draw the new lasso.
draw_lasso();
view.endXorDrawing();
return MS::kSuccess;
}
示例15: MColor
MStatus marqueeContext::doDrag (
MEvent & event,
MHWRender::MUIDrawManager& drawMgr,
const MHWRender::MFrameContext& context)
{
// Get the marquee's new end position.
event.getPosition( last_x, last_y );
// Draw the marquee at its new position.
drawMgr.beginDrawable();
drawMgr.setColor( MColor(1.0f, 1.0f, 0.0f) );
drawMgr.line2d( MPoint( start_x, start_y), MPoint(last_x, start_y) );
drawMgr.line2d( MPoint( last_x, start_y), MPoint(last_x, last_y) );
drawMgr.line2d( MPoint( last_x, last_y), MPoint(start_x, last_y) );
drawMgr.line2d( MPoint( start_x, last_y), MPoint(start_x, start_y) );
double len = (last_y - start_y) * (last_y - start_y) +
(last_x - start_x) * (last_x - start_x) * 0.01;
drawMgr.line(MPoint(0,0,0), MPoint(len, len, len));
drawMgr.endDrawable();
return MS::kSuccess;
}