3ds Max USD API Reference
Loading...
Searching...
No Matches
JobContextRegistry.h
1#pragma once
2//**************************************************************************/
3// Copyright (c) 2022 Autodesk, Inc.
4// All rights reserved.
5//
6// Use of this software is subject to the terms of the Autodesk license
7// agreement provided at the time of installation or download, or which
8// otherwise accompanies this software in either electronic or hard copy form.
9//**************************************************************************/
10
11#include <MaxUsd/MaxUSDAPI.h>
12
13#include <pxr/base/tf/declarePtrs.h>
14#include <pxr/base/tf/registryManager.h>
15#include <pxr/base/tf/singleton.h>
16#include <pxr/base/tf/token.h>
17#include <pxr/base/tf/weakBase.h>
18#include <pxr/base/vt/dictionary.h>
19#include <pxr/pxr.h>
20
21#include <string>
22
23PXR_NAMESPACE_OPEN_SCOPE
24
25TF_DECLARE_WEAK_PTRS(MaxUsdJobContextRegistry);
26
28class MaxUsdJobContextRegistry : public TfWeakBase
29{
30public:
56
58 typedef std::function<VtDictionary()> EnablerFn;
59
61 static TfTokenVector ListJobContexts()
62 {
63 return GetInstance()._ListJobContexts();
64 }
65
68 {
69 TfToken jobContext;
70 TfToken niceName;
71 TfToken exportDescription;
72 EnablerFn exportEnablerCallback;
73 TfToken importDescription;
74 EnablerFn importEnablerCallback;
75
76 ContextInfo() = default;
77
79 const TfToken& jc,
80 const TfToken& nn,
81 const TfToken& edsc,
82 EnablerFn eef,
83 const TfToken& idsc,
84 EnablerFn ief)
85 : jobContext(jc)
86 , niceName(nn)
87 , exportDescription(edsc)
88 , exportEnablerCallback(eef)
89 , importDescription(idsc)
90 , importEnablerCallback(ief)
91 {
92 }
93 };
94
96 static const ContextInfo& GetJobContextInfo(const TfToken& jobContext)
97 {
98 return GetInstance()._GetJobContextInfo(jobContext);
99 }
100
107 MaxUSDAPI void RegisterExportJobContext(const std::string& jobContext, const std::string& niceName,
108 const std::string& description, EnablerFn enablerFct, bool fromPython = false);
109
116 MaxUSDAPI void RegisterImportJobContext(const std::string& jobContext, const std::string& niceName,
117 const std::string& description, EnablerFn enablerFct, bool fromPython = false);
118
119 MaxUSDAPI static MaxUsdJobContextRegistry& GetInstance();
120
121private:
122 MaxUSDAPI TfTokenVector _ListJobContexts();
123 MaxUSDAPI const ContextInfo& _GetJobContextInfo(const TfToken&);
124
127 friend class TfSingleton<MaxUsdJobContextRegistry>;
128};
129
130#define REGISTER_EXPORT_JOB_CONTEXT(name, niceName, description, enablerFct) \
131 TF_REGISTRY_FUNCTION(MaxUsdJobContextRegistry) \
132 { \
133 MaxUsdJobContextRegistry::GetInstance().RegisterExportJobContext(name, niceName, description, enablerFct); \
134 }
135
136#define REGISTER_EXPORT_JOB_CONTEXT_FCT(name, niceName, description) \
137 static VtDictionary _ExportJobContextEnabler_##name(); \
138 TF_REGISTRY_FUNCTION(MaxUsdJobContextRegistry) \
139 { \
140 MaxUsdJobContextRegistry::GetInstance().RegisterExportJobContext( \
141 #name, niceName, description, &_ExportJobContextEnabler_##name); \
142 } \
143 VtDictionary _ExportJobContextEnabler_##name()
144
145PXR_NAMESPACE_CLOSE_SCOPE
We provide macros that are entry points into the job context logic.
Definition: JobContextRegistry.h:29
MaxUSDAPI void RegisterImportJobContext(const std::string &jobContext, const std::string &niceName, const std::string &description, EnablerFn enablerFct, bool fromPython=false)
static TfTokenVector ListJobContexts()
Get all registered export job contexts:
Definition: JobContextRegistry.h:61
static const ContextInfo & GetJobContextInfo(const TfToken &jobContext)
Gets the conversion information associated with jobContext on export and import.
Definition: JobContextRegistry.h:96
MaxUSDAPI void RegisterExportJobContext(const std::string &jobContext, const std::string &niceName, const std::string &description, EnablerFn enablerFct, bool fromPython=false)
std::function< VtDictionary()> EnablerFn
Enabler function, returns a dictionary containing all the options for the context.
Definition: JobContextRegistry.h:58
All the information registered for a specific job context.
Definition: JobContextRegistry.h:68