diff --git a/lib/mayaUsd/ufe/UsdAttributeHolder.cpp b/lib/mayaUsd/ufe/UsdAttributeHolder.cpp index b5b0f6acb9..33aa9407eb 100644 --- a/lib/mayaUsd/ufe/UsdAttributeHolder.cpp +++ b/lib/mayaUsd/ufe/UsdAttributeHolder.cpp @@ -424,6 +424,9 @@ Ufe::Value UsdAttributeHolder::getMetadata(const std::string& key) const } #endif return Ufe::Value(niceName); + } else if (key == SdfFieldKeys->ColorSpace) { + const auto csValue = _usdAttr.GetColorSpace(); + return !csValue.IsEmpty() ? Ufe::Value(csValue.GetString()) : Ufe::Value(); } PXR_NS::VtValue v; if (_usdAttr.GetMetadata(tok, &v)) { @@ -451,9 +454,17 @@ Ufe::Value UsdAttributeHolder::getMetadata(const std::string& key) const bool UsdAttributeHolder::setMetadata(const std::string& key, const Ufe::Value& value) { - if (isValid()) + if (isValid()) { + if (key == SdfFieldKeys->ColorSpace) { + if (!value.empty() && value.isType()) { + const AttributeEditRouterContext ctx(_usdAttr.GetPrim(), _usdAttr.GetName()); + _usdAttr.SetColorSpace(TfToken(value.get())); + return true; + } + return false; + } return setUsdAttrMetadata(_usdAttr, key, value); - else { + } else { return false; } } @@ -481,6 +492,10 @@ bool UsdAttributeHolder::clearMetadata(const std::string& key) if (key == Ufe::Attribute::kLocked) { return _usdAttr.ClearMetadata(MayaUsdMetadata->Lock); } + + if (key == SdfFieldKeys->ColorSpace) { + return _usdAttr.ClearColorSpace(); + } return _usdAttr.ClearMetadata(tok); } else { return true;