system.h
Go to the documentation of this file.
1 //
2 // Copyright 2025 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_EXEC_EXEC_USD_SYSTEM_H
8 #define PXR_EXEC_EXEC_USD_SYSTEM_H
9 
11 
12 #include "pxr/pxr.h"
13 
14 #include "pxr/exec/execUsd/api.h"
16 
18 #include "pxr/exec/exec/request.h"
19 #include "pxr/exec/exec/system.h"
20 
21 #include <memory>
22 #include <vector>
23 
24 PXR_NAMESPACE_OPEN_SCOPE
25 
27 
28 class ExecUsdCacheView;
29 class ExecUsdRequest;
30 class ExecUsdValueKey;
31 class UsdTimeCode;
32 
45 class ExecUsdSystem : public ExecSystem
46 {
47 public:
48  EXECUSD_API
49  explicit ExecUsdSystem(const UsdStageConstRefPtr &stage);
50 
51  // Systems are non-copyable and non-movable to simplify management of
52  // back-pointers.
53  //
54  ExecUsdSystem(const ExecUsdSystem &) = delete;
55  ExecUsdSystem& operator=(const ExecUsdSystem &) = delete;
56 
57  EXECUSD_API
58  ~ExecUsdSystem();
59 
74  EXECUSD_API
75  void ChangeTime(UsdTimeCode time);
76 
104  EXECUSD_API
106  std::vector<ExecUsdValueKey> &&valueKeys,
107  ExecRequestComputedValueInvalidationCallback &&valueCallback =
108  ExecRequestComputedValueInvalidationCallback(),
109  ExecRequestTimeChangeInvalidationCallback &&timeCallback =
110  ExecRequestTimeChangeInvalidationCallback());
111 
119  EXECUSD_API
120  void PrepareRequest(const ExecUsdRequest &request);
121 
129  EXECUSD_API
130  ExecUsdCacheView Compute(const ExecUsdRequest &request);
131 
151  EXECUSD_API
153  const ExecUsdRequest &request,
154  ExecUsdValueOverrideVector &&valueOverrides);
155 
156 private:
157  // This object to subscribes to scene changes on the UsdStage and delivers
158  // those changes to the base ExecSystem.
159  class _NoticeListener;
160  std::unique_ptr<_NoticeListener> _noticeListener;
161 };
162 
163 PXR_NAMESPACE_CLOSE_SCOPE
164 
165 #endif
Standard pointer typedefs.
EXECUSD_API ExecUsdCacheView ComputeWithOverrides(const ExecUsdRequest &request, ExecUsdValueOverrideVector &&valueOverrides)
Executes the given request in the presence of valueOverrides, and returns a cache view for extracting...
Base implementation of a system to procedurally compute values based on scene description and computa...
Definition: system.h:46
The outermost container for scene description, which owns and presents composed prims as a scenegraph...
Definition: stage.h:135
Provides a view of values computed by ExecUsdSystem::Compute().
Definition: cacheView.h:27
EXECUSD_API void ChangeTime(UsdTimeCode time)
Changes the time at which values are computed.
EXECUSD_API ExecUsdRequest BuildRequest(std::vector< ExecUsdValueKey > &&valueKeys, ExecRequestComputedValueInvalidationCallback &&valueCallback=ExecRequestComputedValueInvalidationCallback(), ExecRequestTimeChangeInvalidationCallback &&timeCallback=ExecRequestTimeChangeInvalidationCallback())
Builds a request for the given valueKeys.
Represent a time value, which may be either numeric, holding a double value, or a sentinel value UsdT...
Definition: timeCode.h:73
A batch of values to compute together.
Definition: request.h:31
The implementation of a system to procedurally compute values based on USD scene description and comp...
Definition: system.h:45
EXECUSD_API void PrepareRequest(const ExecUsdRequest &request)
Prepares a given request for execution.
Specifies a computed value.
Definition: valueKey.h:55
#define TF_DECLARE_REF_PTRS(type)
Define standard ref pointer types.
Definition: declarePtrs.h:58
EXECUSD_API ExecUsdCacheView Compute(const ExecUsdRequest &request)
Executes the given request and returns a cache view for extracting the computed values.