Loading...
Searching...
No Matches
notice.h
1//
2// Copyright 2021 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_USD_AR_NOTICE_H
8#define PXR_USD_AR_NOTICE_H
9
10#include "pxr/pxr.h"
11
12#include "pxr/usd/ar/api.h"
14
15#include "pxr/base/tf/notice.h"
16
17#include <functional>
18
19PXR_NAMESPACE_OPEN_SCOPE
20
23class ArNotice
24{
25public:
29 : public TfNotice
30 {
31 public:
32 AR_API virtual ~ResolverNotice();
33 protected:
34 AR_API ResolverNotice();
35 };
36
41 : public ResolverNotice
42 {
43 public:
47 AR_API
49
55 AR_API
57 const std::function<bool(const ArResolverContext&)>& affectsFn);
58
62 : _affects(
63 [ctx](const ArResolverContext& otherCtx) {
64 return otherCtx.Contains(ctx);
65 })
66 {
67 }
68
72 template <
73 class ContextObj,
74 std::enable_if_t<ArIsContextObject<ContextObj>::value>* = nullptr
75 >
77 const ContextObj& contextObj)
78 : _affects(
79 [contextObj](const ArResolverContext& ctx) {
80 return ctx.Contains(contextObj);
81 })
82 {
83 }
84
85 AR_API
86 virtual ~ResolverChanged();
87
90 AR_API
91 bool AffectsContext(const ArResolverContext& ctx) const;
92
93 private:
94 std::function<bool(const ArResolverContext&)> _affects;
95 };
96
97};
98
99PXR_NAMESPACE_CLOSE_SCOPE
100
101#endif
Notice sent when asset paths may resolve to a different path than before due to a change in the resol...
Definition notice.h:42
AR_API bool AffectsContext(const ArResolverContext &ctx) const
Returns true if the results of asset resolution when ctx is bound may be affected by this resolver ch...
ResolverChanged(const ArResolverContext &ctx)
Create a notice indicating that the results of asset resolution when any ArResolverContext containing...
Definition notice.h:61
ResolverChanged(const ContextObj &contextObj)
Create a notice indicating that the results of asset resolution when any ArResolverContext containing...
Definition notice.h:76
AR_API ResolverChanged(const std::function< bool(const ArResolverContext &)> &affectsFn)
Create a notice using affectsFn to determine the ArResolverContext objects that are affected by this ...
AR_API ResolverChanged()
Create a notice indicating that the results of asset resolution might have changed,...
Base class for all ArResolver-related notices.
Definition notice.h:30
An asset resolver context allows clients to provide additional data to the resolver for use during re...
The base class for objects used to notify interested parties (listeners) when events have occurred.
Definition notice.h:80