diff --git a/lib/mayaUsd/nodes/layerManager.cpp b/lib/mayaUsd/nodes/layerManager.cpp index 51228ee010..b79fb6fa6d 100644 --- a/lib/mayaUsd/nodes/layerManager.cpp +++ b/lib/mayaUsd/nodes/layerManager.cpp @@ -136,12 +136,23 @@ getFileFormatForLayer(const std::string& identifierVal, const std::string& seria MayaUsd::LayerManager* findNode() { - MFnDependencyNode fn; + // Check for cached layer manager before searching + MFnDependencyNode fn; + static MObjectHandle layerManagerHandle { MObject::kNullObj }; + if (layerManagerHandle.isValid() && layerManagerHandle.isAlive()) { + MObject mobj { layerManagerHandle.object() }; + if (!mobj.isNull()) { + fn.setObject(mobj); + return static_cast(fn.userNode()); + } + } + MItDependencyNodes iter(MFn::kPluginDependNode); for (; !iter.isDone(); iter.next()) { MObject mobj = iter.item(); fn.setObject(mobj); if (fn.typeId() == MayaUsd::LayerManager::typeId && !fn.isFromReferencedFile()) { + layerManagerHandle = mobj; return static_cast(fn.userNode()); } } diff --git a/plugin/al/lib/AL_USDMaya/AL/usdmaya/nodes/LayerManager.cpp b/plugin/al/lib/AL_USDMaya/AL/usdmaya/nodes/LayerManager.cpp index 93eb008d0f..2d4e4d62e8 100644 --- a/plugin/al/lib/AL_USDMaya/AL/usdmaya/nodes/LayerManager.cpp +++ b/plugin/al/lib/AL_USDMaya/AL/usdmaya/nodes/LayerManager.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -43,6 +44,9 @@ const int _layerManagerProfilerCategory = MProfiler::addCategory( "LayerManager" #endif ); + +MObjectHandle theLayerManagerHandle; + } // namespace namespace { @@ -299,12 +303,20 @@ MObject LayerManager::findNode() //---------------------------------------------------------------------------------------------------------------------- MObject LayerManager::_findNode() { + if (theLayerManagerHandle.isValid() && theLayerManagerHandle.isAlive()) { + MObject theManager { theLayerManagerHandle.object() }; + if (!theManager.isNull()) { + return theManager; + } + } + MFnDependencyNode fn; MItDependencyNodes iter(MFn::kPluginDependNode); for (; !iter.isDone(); iter.next()) { MObject mobj = iter.item(); fn.setObject(mobj); if (fn.typeId() == kTypeId && !fn.isFromReferencedFile()) { + theLayerManagerHandle = mobj; return mobj; } }