Loading...
Searching...
No Matches
legacyTaskFactory.h
1//
2// Copyright 2024 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_IMAGING_HD_LEGACY_TASK_FACTORY_H
8#define PXR_IMAGING_HD_LEGACY_TASK_FACTORY_H
9
10#include "pxr/pxr.h"
11#include "pxr/imaging/hd/api.h"
12
13#include "pxr/usd/sdf/path.h"
14
15#include <memory>
16
17PXR_NAMESPACE_OPEN_SCOPE
18
19class HdSceneDelegate;
20using HdTaskSharedPtr = std::shared_ptr<class HdTask>;
21using HdLegacyTaskFactorySharedPtr = std::shared_ptr<class HdLegacyTaskFactory>;
22
29{
30public:
31 virtual HdTaskSharedPtr Create(
32 HdSceneDelegate * delegate, const SdfPath &id) = 0;
33
34 HD_API
35 virtual ~HdLegacyTaskFactory();
36};
37
38template<typename T>
39class HdLegacyTaskFactory_Impl : public HdLegacyTaskFactory
40{
41public:
42 HdTaskSharedPtr Create(
43 HdSceneDelegate * const delegate, const SdfPath &id) override
44 {
45 return std::make_shared<T>(delegate, id);
46 }
47};
48
51template<typename T>
52HdLegacyTaskFactorySharedPtr HdMakeLegacyTaskFactory()
53{
54 return std::make_shared<HdLegacyTaskFactory_Impl<T>>();
55}
56
57PXR_NAMESPACE_CLOSE_SCOPE
58
59#endif
An abstract base class to create implementations of HdTask.
Adapter class providing data exchange with the client scene graph.
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:274