HDK
|
#include <notice.h>
Classes | |
class | PathRange |
Public Member Functions | |
virtual USD_API | ~ObjectsChanged () |
bool | AffectedObject (const UsdObject &obj) const |
USD_API bool | ResyncedObject (const UsdObject &obj) const |
USD_API bool | ResolvedAssetPathsResynced (const UsdObject &obj) const |
USD_API bool | ChangedInfoOnly (const UsdObject &obj) const |
USD_API PathRange | GetResyncedPaths () const |
USD_API PathRange | GetChangedInfoOnlyPaths () const |
USD_API PathRange | GetResolvedAssetPathsResyncedPaths () const |
USD_API TfTokenVector | GetChangedFields (const UsdObject &obj) const |
USD_API TfTokenVector | GetChangedFields (const SdfPath &path) const |
USD_API bool | HasChangedFields (const UsdObject &obj) const |
USD_API bool | HasChangedFields (const SdfPath &path) const |
Public Member Functions inherited from UsdNotice::StageNotice | |
USD_API | StageNotice (const UsdStageWeakPtr &stage) |
virtual USD_API | ~StageNotice () |
const UsdStageWeakPtr & | GetStage () const |
Return the stage associated with this notice. More... | |
Public Member Functions inherited from TfNotice | |
TF_API size_t | Send () const |
template<typename SenderPtr > | |
size_t | Send (SenderPtr const &s) const |
TF_API size_t | SendWithWeakBase (const TfWeakBase *senderWeakBase, const void *senderUniqueId, const std::type_info &type) const |
virtual TF_API | ~TfNotice () |
Friends | |
class | UsdStage |
Additional Inherited Members | |
Public Types inherited from TfNotice | |
typedef TfWeakPtr< Probe > | WeakProbePtr |
typedef std::vector< Key > | Keys |
Static Public Member Functions inherited from TfNotice | |
static TF_API void | InsertProbe (const WeakProbePtr &probe) |
static TF_API void | RemoveProbe (const WeakProbePtr &probe) |
template<class LPtr , class MethodPtr > | |
static TfNotice::Key | Register (LPtr const &listener, MethodPtr method) |
template<class LPtr , class MethodPtr , class SenderPtr > | |
static TfNotice::Key | Register (LPtr const &listener, MethodPtr method, SenderPtr const &sender) |
template<class LPtr , class MethodPtr > | |
static TfNotice::Key | Register (LPtr const &listener, MethodPtr method, const TfType ¬iceType, const TfAnyWeakPtr &sender) |
static TF_API bool | Revoke (TfNotice::Key &key) |
static TF_API void | Revoke (TfNotice::Keys *keys) |
Notice sent in response to authored changes that affect UsdObjects.
The kinds of object changes are divided into these categories:
"Resyncs" are potentially structural changes that invalidate entire subtrees of UsdObjects (including prims and properties). For example, if the path "/foo" is resynced, then all subpaths like "/foo/bar" and "/foo/bar.baz" may be arbitrarily changed.
When a prim is resynced, say "/foo/bar", it might have been created or destroyed. Indication of possible changes flows down the resynced prim namespace, implicitly via prim resync notices. We do not consider the parent "/foo" to be resynced, as this would incorrectly imply that some or all of "/foo/bar"'s siblings (and their descendants) have also changed. Additionally, we do not propagate change indication to objects associated with the changed object through relationships or connections.
"Resolved asset path resyncs" invalidate asset paths in a subtree of objects. Asset paths authored anywhere in this subtree of objects (e.g. as attribute or metadata values) may now resolve to different locations, even though the asset path authored in scene description has not changed.
"Changed-info" means that a nonstructural change has occurred, like an attribute value change or a value change to a metadata field not related to composition. Unlike resyncs, changed-info notices for an object do not imply that the subtree beneath that object have changed.
This notice provides API for two client use-cases. Clients interested in testing whether specific objects are affected by the changes should use the methods that return a bool, like AffectedObject(). Clients that wish to reason about all changes as a whole should use the methods that return a PathRange, like GetResyncedPaths().
|
virtual |
|
inline |
Return true if obj
was possibly affected by the layer changes that generated this notice. This is the case if either the object is subject to a resync or has changed info. Equivalent to:
Return true if obj
was changed but not resynced by the layer changes that generated this notice. This is the case if this object's exact path is present in GetChangedInfoOnlyPaths().
USD_API TfTokenVector UsdNotice::ObjectsChanged::GetChangedFields | ( | const UsdObject & | obj | ) | const |
Return the set of changed fields in layers that affected obj
.
This set will be empty for objects whose paths are not in GetResyncedPaths() or GetChangedInfoOnlyPaths().
If a field is present in this set, it does not necessarily mean the composed value of that field on obj
has changed. For example, if a metadata value on obj
is overridden in a stronger layer and is changed in a weaker layer, that field will appear in this set. However, since the value in the stronger layer did not change, the composed value returned by GetMetadata() will not have changed.
USD_API TfTokenVector UsdNotice::ObjectsChanged::GetChangedFields | ( | const SdfPath & | path | ) | const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Return the set of paths that have only info changes (those that do not affect the structure of cached UsdPrims on a UsdStage) in lexicographical order. Info changes do not imply entire subtree invalidation, so this set is not minimal regarding ancestors and descendants, as opposed to GetResyncedPaths(). For example, both the paths '/foo' and '/foo/bar' may appear in this set.
Return the set of paths affected by changes that may cause asset path values to resolve to different locations, even though the asset path authored in scene description has not changed. For example, asset paths using expression variables may be invalidated when a variable value is modified, even though the authored asset paths have not changed. The set of paths are returned in lexicographical order.
Resolved asset path resyncs imply invalidation of asset paths within entire subtrees including all descendant prims and properties, so this set is minimal regarding ancestors and descendants. For example, if the path '/foo' appears in this set, all asset paths in the entire subtree at '/foo' are invalidated, so the path '/foo/bar' will not appear, but asset paths on that prim should be considered invalidated.
Return the set of paths that are resynced in lexicographical order. Resyncs imply entire subtree invalidation of all descendant prims and properties, so this set is minimal regarding ancestors and descendants. For example, if the path '/foo' appears in this set, the entire subtree at '/foo' is resynced so the path '/foo/bar' will not appear, but it should be considered resynced.
Since object resyncs fully invalidate entire subtrees, this set of paths subsumes all other paths. For example, if the path '/foo' appears in this set, but an attribute value was changed at '/foo/bar.x', this notice will only contain '/foo' in the set returned by this path and empty sets from all other functions. This is because the change to '/foo/bar.x' is implied by the resync of '/foo'.
Return true if there are any changed fields that affected obj
, false otherwise. See GetChangedFields for more details.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Return true if asset path values in obj
were resynced by the layer changes that generated this notice. This is the case if the object's path or an ancestor path is present in GetResolvedAssetPathsResyncedPaths().
Return true if obj
was resynced by the layer changes that generated this notice. This is the case if the object's path or an ancestor path is present in GetResyncedPaths().