本文整理汇总了C++中MDrawRequest::setToken方法的典型用法代码示例。如果您正苦于以下问题:C++ MDrawRequest::setToken方法的具体用法?C++ MDrawRequest::setToken怎么用?C++ MDrawRequest::setToken使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MDrawRequest
的用法示例。
在下文中一共展示了MDrawRequest::setToken方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getDrawRequests
void BaseShapeUI::getDrawRequests( const MDrawInfo & info, bool objectAndActiveOnly, MDrawRequestQueue & requests ) {
MStatus status;
MDrawData data;
BaseShape *shape = (BaseShape *) surfaceShape();
MDrawRequest request = info.getPrototype(*this);
M3dView view = info.view();
getDrawData(shape, data);
request.setDrawData(data);
MDagPath path = request.multiPath();
MMaterial material = MPxSurfaceShapeUI::material(path);
if (!(status = material.evaluateMaterial(view, path)))
status.perror("MMaterial::evaluateMaterial");
if (!(status = material.evaluateDiffuse()))
status.perror("MMaterial::evaluateDiffuse");
request.setMaterial(material);
request.setToken(info.displayStyle());
requests.add(request);
}
示例2: getDrawRequests
/* override */
void apiSimpleShapeUI::getDrawRequests( const MDrawInfo & info,
bool objectAndActiveOnly,
MDrawRequestQueue & queue )
//
// Description:
//
// Add draw requests to the draw queue
//
// Arguments:
//
// info - current drawing state
// objectsAndActiveOnly - no components if true
// queue - queue of draw requests to add to
//
{
// Get the data necessary to draw the shape
//
MDrawData data;
apiSimpleShape* shape = (apiSimpleShape*) surfaceShape();
MVectorArray* geomPtr = shape->getControlPoints();
// This call creates a prototype draw request that we can fill
// in and then add to the draw queue.
//
MDrawRequest request = info.getPrototype( *this );
// Stuff our data into the draw request, it'll be used when the drawing
// actually happens
getDrawData( geomPtr, data );
request.setDrawData( data );
// Decode the draw info and determine what needs to be drawn
//
M3dView::DisplayStyle appearance = info.displayStyle();
M3dView::DisplayStatus displayStatus = info.displayStatus();
switch ( appearance )
{
case M3dView::kWireFrame :
{
request.setToken( kDrawWireframe );
M3dView::ColorTable activeColorTable = M3dView::kActiveColors;
M3dView::ColorTable dormantColorTable = M3dView::kDormantColors;
switch ( displayStatus )
{
case M3dView::kLead :
request.setColor( LEAD_COLOR, activeColorTable );
break;
case M3dView::kActive :
request.setColor( ACTIVE_COLOR, activeColorTable );
break;
case M3dView::kActiveAffected :
request.setColor( ACTIVE_AFFECTED_COLOR, activeColorTable );
break;
case M3dView::kDormant :
request.setColor( DORMANT_COLOR, dormantColorTable );
break;
case M3dView::kHilite :
request.setColor( HILITE_COLOR, activeColorTable );
break;
default:
break;
}
queue.add( request );
break;
}
case M3dView::kGouraudShaded :
{
// Create the smooth shaded draw request
//
request.setToken( kDrawSmoothShaded );
// Need to get the material info
//
MDagPath path = info.multiPath(); // path to your dag object
M3dView view = info.view();; // view to draw to
MMaterial material = MPxSurfaceShapeUI::material( path );
// Evaluate the material and if necessary, the texture.
//
if ( ! material.evaluateMaterial( view, path ) ) {
cerr << "Couldnt evaluate\n";
}
bool drawTexture = true;
if ( drawTexture && material.materialIsTextured() ) {
material.evaluateTexture( data );
}
request.setMaterial( material );
//.........这里部分代码省略.........
示例3: getDrawRequests
/// \todo We should be firing off a separate drawRequest for the components, then we can be done with the "hiliteGroups" mechanism.
void ProceduralHolderUI::getDrawRequests( const MDrawInfo &info, bool objectAndActiveOnly, MDrawRequestQueue &requests )
{
// it's easy if noone want to look at us
if( !info.objectDisplayStatus( M3dView::kDisplayMeshes ) )
{
return;
}
// the node we're meant to be drawing
ProceduralHolder *proceduralHolder = (ProceduralHolder *)surfaceShape();
// draw data encapsulating that node
MDrawData drawData;
getDrawData( proceduralHolder, drawData );
// a request for the bound if necessary
MPlug pDrawBound( proceduralHolder->thisMObject(), ProceduralHolder::aDrawBound );
bool drawBound = true;
pDrawBound.getValue( drawBound );
if( drawBound )
{
MDrawRequest request = info.getPrototype( *this );
request.setDrawData( drawData );
request.setToken( BoundDrawMode );
request.setDisplayStyle( M3dView::kWireFrame );
setWireFrameColors( request, info.displayStatus() );
requests.add( request );
}
// requests for the scene if necessary
MPlug pGLPreview( proceduralHolder->thisMObject(), ProceduralHolder::aGLPreview );
bool glPreview = false;
pGLPreview.getValue( glPreview );
if( glPreview )
{
if( info.displayStyle()==M3dView::kGouraudShaded || info.displayStyle()==M3dView::kFlatShaded )
{
// make a request for solid drawing with a material
MDrawRequest solidRequest = info.getPrototype( *this );
solidRequest.setDrawData( drawData );
MDagPath path = info.multiPath();
M3dView view = info.view();
MMaterial material = MPxSurfaceShapeUI::material( path );
if( !material.evaluateMaterial( view, path ) )
{
MString pathName = path.fullPathName();
IECore::msg( IECore::Msg::Warning, "ProceduralHolderUI::getDrawRequests", boost::format( "Failed to evaluate material for \"%s\"." ) % pathName.asChar() );
}
if( material.materialIsTextured() )
{
material.evaluateTexture( drawData );
}
solidRequest.setMaterial( material );
// set the transparency request. we don't have a decent way of finding out
// if shaders applied by the procedural are transparent, so we've got a transparency
// attribute on the procedural holder for users to use. maya materials may also say
// they're transparent. if either asks for transparency then we'll ask for it here
bool transparent = false;
material.getHasTransparency( transparent );
if( !transparent )
{
MPlug pT( proceduralHolder->thisMObject(), ProceduralHolder::aTransparent );
bool transparent = false;
pT.getValue( transparent );
}
solidRequest.setIsTransparent( transparent );
solidRequest.setToken( SceneDrawMode );
requests.add( solidRequest );
// and add another request for wireframe drawing if we're selected
if( info.displayStatus()==M3dView::kActive || info.displayStatus()==M3dView::kLead || info.displayStatus()==M3dView::kHilite )
{
MDrawRequest wireRequest = info.getPrototype( *this );
wireRequest.setDrawData( drawData );
wireRequest.setDisplayStyle( M3dView::kWireFrame );
wireRequest.setToken( SceneDrawMode );
setWireFrameColors( wireRequest, info.displayStatus() );
wireRequest.setComponent( MObject::kNullObj );
if ( !objectAndActiveOnly )
{
if ( proceduralHolder->hasActiveComponents() )
{
MObjectArray components = proceduralHolder->activeComponents();
MObject component = components[0]; // Should filter list
wireRequest.setComponent( component );
}
}
requests.add( wireRequest );
}
}
else
{
MDrawRequest request = info.getPrototype( *this );
request.setDrawData( drawData );
setWireFrameColors( request, info.displayStatus() );
//.........这里部分代码省略.........
示例4: getDrawRequests
void SceneShapeUI::getDrawRequests( const MDrawInfo &info, bool objectAndActiveOnly, MDrawRequestQueue &requests )
{
// it's easy if no one want to look at us
if( !info.objectDisplayStatus( M3dView::kDisplayMeshes ) )
{
return;
}
// the node we're meant to be drawing
SceneShape *sceneShape = (SceneShape *)surfaceShape();
if( !sceneShape->getSceneInterface() )
{
return;
}
// draw data encapsulating that node
MDrawData drawData;
getDrawData( sceneShape, drawData );
// a request for the bound if necessary
MPlug pDrawBound( sceneShape->thisMObject(), SceneShape::aDrawRootBound );
bool drawBound;
pDrawBound.getValue( drawBound );
if( drawBound )
{
bool doDrawBound = true;
// If objectOnly is true, check for an object. If none found, no need to add the bound request.
MPlug pObjectOnly( sceneShape->thisMObject(), SceneShape::aObjectOnly );
bool objectOnly;
pObjectOnly.getValue( objectOnly );
if( objectOnly && !sceneShape->getSceneInterface()->hasObject() )
{
doDrawBound = false;
}
if( doDrawBound )
{
MDrawRequest request = info.getPrototype( *this );
request.setDrawData( drawData );
request.setToken( BoundDrawMode );
request.setDisplayStyle( M3dView::kWireFrame );
setWireFrameColors( request, info.displayStatus() );
requests.add( request );
}
}
MPlug pDrawAllBounds( sceneShape->thisMObject(), SceneShape::aDrawChildBounds );
bool drawAllBounds = false;
pDrawAllBounds.getValue( drawAllBounds );
// requests for the scene if necessary
MPlug pGLPreview( sceneShape->thisMObject(), SceneShape::aDrawGeometry );
bool glPreview;
pGLPreview.getValue( glPreview );
if( glPreview || drawAllBounds )
{
if( info.displayStyle()==M3dView::kGouraudShaded || info.displayStyle()==M3dView::kFlatShaded )
{
// make a request for solid drawing with a material
MDrawRequest solidRequest = info.getPrototype( *this );
solidRequest.setDrawData( drawData );
MDagPath path = info.multiPath();
M3dView view = info.view();
MMaterial material = MPxSurfaceShapeUI::material( path );
if( !material.evaluateMaterial( view, path ) )
{
MString pathName = path.fullPathName();
IECore::msg( IECore::Msg::Warning, "SceneShapeUI::getDrawRequests", boost::format( "Failed to evaluate material for \"%s\"." ) % pathName.asChar() );
}
if( material.materialIsTextured() )
{
material.evaluateTexture( drawData );
}
solidRequest.setMaterial( material );
// set the transparency request. we don't have a decent way of finding out
// if shaders applied by the procedural are transparent, so we've got a transparency
// attribute on the procedural holder for users to use. maya materials may also say
// they're transparent. if either asks for transparency then we'll ask for it here
bool transparent = false;
material.getHasTransparency( transparent );
solidRequest.setIsTransparent( transparent );
solidRequest.setToken( SceneDrawMode );
requests.add( solidRequest );
if( info.displayStatus()==M3dView::kActive || info.displayStatus()==M3dView::kLead || info.displayStatus()==M3dView::kHilite )
{
MDrawRequest wireRequest = info.getPrototype( *this );
wireRequest.setDrawData( drawData );
wireRequest.setDisplayStyle( M3dView::kWireFrame );
wireRequest.setToken( SceneDrawMode );
setWireFrameColors( wireRequest, info.displayStatus() );
wireRequest.setComponent( MObject::kNullObj );
if ( !objectAndActiveOnly )
{
//.........这里部分代码省略.........