ConstObjectPtr LiveScene::readAttribute( const Name &name, double time ) const { if ( !m_isRoot && m_dagPath.length() == 0 ) { throw Exception( "IECoreMaya::LiveScene::readAttribute: Dag path no longer exists!" ); } tbb::mutex::scoped_lock l( s_mutex ); if ( !m_isRoot ) { if( name == SceneInterface::visibilityName ) { bool visible = true; MStatus st; MFnDagNode dagFn( m_dagPath ); MPlug visibilityPlug = dagFn.findPlug( MPxTransform::visibility, &st ); if( st ) { visible = visibilityPlug.asBool(); } if( visible ) { MDagPath childDag; // find an object that's either a SceneShape, or has a cortex converter and check its visibility: unsigned int childCount = 0; m_dagPath.numberOfShapesDirectlyBelow(childCount); for ( unsigned int c = 0; c < childCount; c++ ) { MDagPath d = m_dagPath; if( d.extendToShapeDirectlyBelow( c ) ) { MFnDagNode fnChildDag(d); if( fnChildDag.typeId() == SceneShape::id ) { childDag = d; break; } if ( fnChildDag.isIntermediateObject() ) { continue; } FromMayaShapeConverterPtr shapeConverter = FromMayaShapeConverter::create( d ); if( shapeConverter ) { childDag = d; break; } FromMayaDagNodeConverterPtr dagConverter = FromMayaDagNodeConverter::create( d ); if( dagConverter ) { childDag = d; break; } } } if( childDag.isValid() ) { MFnDagNode dagFn( childDag ); MPlug visibilityPlug = dagFn.findPlug( MPxSurfaceShape::visibility, &st ); if( st ) { visible = visibilityPlug.asBool(); } } } return new BoolData( visible ); } } else if( name == SceneInterface::visibilityName ) { return new BoolData( true ); } std::vector< CustomAttributeReader > &attributeReaders = customAttributeReaders(); for ( std::vector< CustomAttributeReader >::const_reverse_iterator it = attributeReaders.rbegin(); it != attributeReaders.rend(); ++it ) { ConstObjectPtr attr = it->m_read( m_dagPath, name ); if( !attr ) { continue; } return attr; } if( strstr( name.c_str(), "user:"******"ieAttr_" + name.string().substr(5) ).c_str(), false, &st ); if( st ) { FromMayaConverterPtr plugConverter = FromMayaPlugConverter::create( attrPlug ); if( !plugConverter ) { return IECore::NullObject::defaultNullObject(); } return plugConverter->convert(); } } return IECore::NullObject::defaultNullObject(); }
bool ElementPtr::getElementAsBool(const Name& name) const { return this->getElementAsBool(name.string()); }
QString name_from_config() { Name name = config.xml().attribute_value("name", Name("no name")); return QString(name.string()); }
boost::shared_ptr<ElementPtr> ElementPtr::getElement(const Name& name) const { return this->getElement(name.string()); }
bool ElementPtr::hasElement(const Name& name, bool excludeNullElements) const { return this->hasElement(name.string(), excludeNullElements); }
void ElementPtr::setElement(const char* name, const Name& value) { this->setElement(name, value.string()); }
void ElementPtr::setElement(const Name& name, int value) { this->setElement(name.string(), value); }
char ElementPtr::getElementAsChar(const Name& name) const { return this->getElementAsChar(name.string()); }
Datetime ElementPtr::getElementAsDatetime(const Name& name) const { return this->getElementAsDatetime(name.string()); }
double ElementPtr::getElementAsFloat64(const Name& name) const { return this->getElementAsFloat64(name.string()); }
float ElementPtr::getElementAsFloat32(const Name& name) const { return this->getElementAsFloat32(name.string()); }
long ElementPtr::getElementAsInt64(const Name& name) const { return this->getElementAsInt64(name.string()); }