3ds Max USD API Reference
Loading...
Searching...
No Matches
PrimWriterRegistry.h
1//**************************************************************************/
2// Copyright (c) 2022 Autodesk, Inc.
3// All rights reserved.
4//
5// Use of this software is subject to the terms of the Autodesk license
6// agreement provided at the time of installation or download, or which
7// otherwise accompanies this software in either electronic or hard copy form.
8//**************************************************************************/
9
10#pragma once
11#include "MaxUsd/Translators/primWriter.h"
12
13#include <pxr/pxr.h>
14
15#include <functional>
16#include <string>
17
18PXR_NAMESPACE_OPEN_SCOPE
19
51{
52 // Writer factory function, i.e. a function that creates a prim writer
53 // for the given 3dsMax export job context.
54 typedef std::function<MaxUsdPrimWriterSharedPtr(
56 WriterFactoryFn;
57
64 MaxUSDAPI static void Register(const std::string& key, WriterFactoryFn fn, bool fromPython = false);
65
70 MaxUSDAPI static void Unregister(const std::string& key);
71
77 MaxUSDAPI static std::vector<MaxUsdPrimWriterSharedPtr> GetAllWriters(const MaxUsdWriteJobContext& jobCtx);
78
88 MaxUSDAPI static std::vector<MaxUsdPrimWriterSharedPtr> FindWriters(
89 INode* node, const std::vector<MaxUsdPrimWriterSharedPtr>& candidateWriters);
90};
91
92#define PXR_MAXUSD_REGISTER_WRITER(writerClass) \
93 TF_REGISTRY_FUNCTION_WITH_TAG(MaxUsdPrimWriterRegistry, writerName##_##writerClass) \
94 { \
95 MaxUsdPrimWriterRegistry::Register( \
96 #writerClass, \
97 [](const MaxUsdWriteJobContext& jobCtx) { \
98 return std::make_shared<writerClass>(jobCtx); \
99 }); \
100 }
101
102PXR_NAMESPACE_CLOSE_SCOPE
Provides basic functionality and access to shared data for prim and shader writers.
Definition: WriteJobContext.h:19
Provides functionality to register and lookup USD writer plugins for 3dsMax nodes.
Definition: PrimWriterRegistry.h:51
static MaxUSDAPI std::vector< MaxUsdPrimWriterSharedPtr > GetAllWriters(const MaxUsdWriteJobContext &jobCtx)
Returns all prim writers for a given write job context.
static MaxUSDAPI void Register(const std::string &key, WriterFactoryFn fn, bool fromPython=false)
Register a new prim writer via it's factory function.
static MaxUSDAPI std::vector< MaxUsdPrimWriterSharedPtr > FindWriters(INode *node, const std::vector< MaxUsdPrimWriterSharedPtr > &candidateWriters)
Returns prim writers which can be used to translate a given object, given from a list of candidate wr...
static MaxUSDAPI void Unregister(const std::string &key)
Unregisters a prim writer.