Esempio n. 1
0
MStatus OpHolder<B>::createResultAttribute()
{
	IECore::OpPtr op = IECore::runTimeCast<IECore::Op>( ParameterisedHolder<B>::m_parameterised );

	if( !op )
	{
		MString nodeName = ParameterisedHolder<B>::name();
		msg( Msg::Error, "OpHolder::createResultAttribute", boost::format( "No Op found on node \"%s\"." ) % nodeName.asChar() );
		return MStatus::kFailure;
	}
	
	MStatus s = ParameterisedHolder<B>::createOrUpdateAttribute( const_cast<IECore::Parameter *>( op->resultParameter() ), "result" );
	if( !s )
	{
		MString nodeName = ParameterisedHolder<B>::name();
		msg( Msg::Error, "OpHolder::createResultAttribute", boost::format( "Unable to update result attribute to represent class \"%s\" on node \"%s\"." ) % op->typeName() % nodeName.asChar() );
		return s;
	}
			
	MFnDependencyNode fnDN( B::thisMObject() );
	MObject attribute = fnDN.attribute( "result" );

	MFnAttribute fnAttr( attribute );
	fnAttr.setWritable( false );
	fnAttr.setStorable( false );
	
	return MStatus::kSuccess;
}