1 // 2 // Copyright 2016 Pixar 3 // 4 // Licensed under the Apache License, Version 2.0 (the "Apache License") 5 // with the following modification; you may not use this file except in 6 // compliance with the Apache License and the following modification to it: 7 // Section 6. Trademarks. is deleted and replaced with: 8 // 9 // 6. Trademarks. This License does not grant permission to use the trade 10 // names, trademarks, service marks, or product names of the Licensor 11 // and its affiliates, except as required to comply with Section 4(c) of 12 // the License and to reproduce the content of the NOTICE file. 13 // 14 // You may obtain a copy of the Apache License at 15 // 16 // http://www.apache.org/licenses/LICENSE-2.0 17 // 18 // Unless required by applicable law or agreed to in writing, software 19 // distributed under the Apache License with the above modification is 20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 21 // KIND, either express or implied. See the Apache License for the specific 22 // language governing permissions and limitations under the Apache License. 23 // 24 #ifndef USDUI_GENERATED_SCENEGRAPHPRIMAPI_H 25 #define USDUI_GENERATED_SCENEGRAPHPRIMAPI_H 26 27 /// \file usdUI/sceneGraphPrimAPI.h 28 29 #include "pxr/pxr.h" 30 #include "pxr/usd/usdUI/api.h" 31 #include "pxr/usd/usd/apiSchemaBase.h" 32 #include "pxr/usd/usd/prim.h" 33 #include "pxr/usd/usd/stage.h" 34 #include "pxr/usd/usdUI/tokens.h" 35 36 #include "pxr/base/vt/value.h" 37 38 #include "pxr/base/gf/vec3d.h" 39 #include "pxr/base/gf/vec3f.h" 40 #include "pxr/base/gf/matrix4d.h" 41 42 #include "pxr/base/tf/token.h" 43 #include "pxr/base/tf/type.h" 44 45 PXR_NAMESPACE_OPEN_SCOPE 46 47 class SdfAssetPath; 48 49 // -------------------------------------------------------------------------- // 50 // SCENEGRAPHPRIMAPI // 51 // -------------------------------------------------------------------------- // 52 53 /// \class UsdUISceneGraphPrimAPI 54 /// 55 /// 56 /// Utility schema for display properties of a prim 57 /// 58 /// 59 /// For any described attribute \em Fallback \em Value or \em Allowed \em Values below 60 /// that are text/tokens, the actual token is published and defined in \ref UsdUITokens. 61 /// So to set an attribute to the value "rightHanded", use UsdUITokens->rightHanded 62 /// as the value. 63 /// 64 class UsdUISceneGraphPrimAPI : public UsdAPISchemaBase 65 { 66 public: 67 /// Compile time constant representing what kind of schema this class is. 68 /// 69 /// \sa UsdSchemaKind 70 static const UsdSchemaKind schemaKind = UsdSchemaKind::SingleApplyAPI; 71 72 /// Construct a UsdUISceneGraphPrimAPI on UsdPrim \p prim . 73 /// Equivalent to UsdUISceneGraphPrimAPI::Get(prim.GetStage(), prim.GetPath()) 74 /// for a \em valid \p prim, but will not immediately throw an error for 75 /// an invalid \p prim 76 explicit UsdUISceneGraphPrimAPI(const UsdPrim& prim=UsdPrim()) UsdAPISchemaBase(prim)77 : UsdAPISchemaBase(prim) 78 { 79 } 80 81 /// Construct a UsdUISceneGraphPrimAPI on the prim held by \p schemaObj . 82 /// Should be preferred over UsdUISceneGraphPrimAPI(schemaObj.GetPrim()), 83 /// as it preserves SchemaBase state. UsdUISceneGraphPrimAPI(const UsdSchemaBase & schemaObj)84 explicit UsdUISceneGraphPrimAPI(const UsdSchemaBase& schemaObj) 85 : UsdAPISchemaBase(schemaObj) 86 { 87 } 88 89 /// Destructor. 90 USDUI_API 91 virtual ~UsdUISceneGraphPrimAPI(); 92 93 /// Return a vector of names of all pre-declared attributes for this schema 94 /// class and all its ancestor classes. Does not include attributes that 95 /// may be authored by custom/extended methods of the schemas involved. 96 USDUI_API 97 static const TfTokenVector & 98 GetSchemaAttributeNames(bool includeInherited=true); 99 100 /// Return a UsdUISceneGraphPrimAPI holding the prim adhering to this 101 /// schema at \p path on \p stage. If no prim exists at \p path on 102 /// \p stage, or if the prim at that path does not adhere to this schema, 103 /// return an invalid schema object. This is shorthand for the following: 104 /// 105 /// \code 106 /// UsdUISceneGraphPrimAPI(stage->GetPrimAtPath(path)); 107 /// \endcode 108 /// 109 USDUI_API 110 static UsdUISceneGraphPrimAPI 111 Get(const UsdStagePtr &stage, const SdfPath &path); 112 113 114 /// Returns true if this <b>single-apply</b> API schema can be applied to 115 /// the given \p prim. If this schema can not be a applied to the prim, 116 /// this returns false and, if provided, populates \p whyNot with the 117 /// reason it can not be applied. 118 /// 119 /// Note that if CanApply returns false, that does not necessarily imply 120 /// that calling Apply will fail. Callers are expected to call CanApply 121 /// before calling Apply if they want to ensure that it is valid to 122 /// apply a schema. 123 /// 124 /// \sa UsdPrim::GetAppliedSchemas() 125 /// \sa UsdPrim::HasAPI() 126 /// \sa UsdPrim::CanApplyAPI() 127 /// \sa UsdPrim::ApplyAPI() 128 /// \sa UsdPrim::RemoveAPI() 129 /// 130 USDUI_API 131 static bool 132 CanApply(const UsdPrim &prim, std::string *whyNot=nullptr); 133 134 /// Applies this <b>single-apply</b> API schema to the given \p prim. 135 /// This information is stored by adding "SceneGraphPrimAPI" to the 136 /// token-valued, listOp metadata \em apiSchemas on the prim. 137 /// 138 /// \return A valid UsdUISceneGraphPrimAPI object is returned upon success. 139 /// An invalid (or empty) UsdUISceneGraphPrimAPI object is returned upon 140 /// failure. See \ref UsdPrim::ApplyAPI() for conditions 141 /// resulting in failure. 142 /// 143 /// \sa UsdPrim::GetAppliedSchemas() 144 /// \sa UsdPrim::HasAPI() 145 /// \sa UsdPrim::CanApplyAPI() 146 /// \sa UsdPrim::ApplyAPI() 147 /// \sa UsdPrim::RemoveAPI() 148 /// 149 USDUI_API 150 static UsdUISceneGraphPrimAPI 151 Apply(const UsdPrim &prim); 152 153 protected: 154 /// Returns the kind of schema this class belongs to. 155 /// 156 /// \sa UsdSchemaKind 157 USDUI_API 158 UsdSchemaKind _GetSchemaKind() const override; 159 160 private: 161 // needs to invoke _GetStaticTfType. 162 friend class UsdSchemaRegistry; 163 USDUI_API 164 static const TfType &_GetStaticTfType(); 165 166 static bool _IsTypedSchema(); 167 168 // override SchemaBase virtuals. 169 USDUI_API 170 const TfType &_GetTfType() const override; 171 172 public: 173 // --------------------------------------------------------------------- // 174 // DISPLAYNAME 175 // --------------------------------------------------------------------- // 176 /// When publishing a nodegraph or a material, it can be useful to 177 /// provide an optional display name, for readability. 178 /// 179 /// 180 /// | || 181 /// | -- | -- | 182 /// | Declaration | `uniform token ui:displayName` | 183 /// | C++ Type | TfToken | 184 /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Token | 185 /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | 186 USDUI_API 187 UsdAttribute GetDisplayNameAttr() const; 188 189 /// See GetDisplayNameAttr(), and also 190 /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. 191 /// If specified, author \p defaultValue as the attribute's default, 192 /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - 193 /// the default for \p writeSparsely is \c false. 194 USDUI_API 195 UsdAttribute CreateDisplayNameAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; 196 197 public: 198 // --------------------------------------------------------------------- // 199 // DISPLAYGROUP 200 // --------------------------------------------------------------------- // 201 /// When publishing a nodegraph or a material, it can be useful to 202 /// provide an optional display group, for organizational purposes and 203 /// readability. This is because often the usd shading hierarchy is rather 204 /// flat while we want to display it in organized groups. 205 /// 206 /// 207 /// | || 208 /// | -- | -- | 209 /// | Declaration | `uniform token ui:displayGroup` | 210 /// | C++ Type | TfToken | 211 /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Token | 212 /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | 213 USDUI_API 214 UsdAttribute GetDisplayGroupAttr() const; 215 216 /// See GetDisplayGroupAttr(), and also 217 /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. 218 /// If specified, author \p defaultValue as the attribute's default, 219 /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - 220 /// the default for \p writeSparsely is \c false. 221 USDUI_API 222 UsdAttribute CreateDisplayGroupAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; 223 224 public: 225 // ===================================================================== // 226 // Feel free to add custom code below this line, it will be preserved by 227 // the code generator. 228 // 229 // Just remember to: 230 // - Close the class declaration with }; 231 // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE 232 // - Close the include guard with #endif 233 // ===================================================================== // 234 // --(BEGIN CUSTOM CODE)-- 235 }; 236 237 PXR_NAMESPACE_CLOSE_SCOPE 238 239 #endif 240