Describes how to define a texture node that is automatically created when an image file is dragged into the Node Editor.
A texture node is a custom user node that has to provide at least the following ports:
A texture node has to be registered within NodeRendererNodeSpaceImpl::Init(). Where IMAGENODEASSETID defines the node identifier and IMAGENODEPORTIDS defines the identifiers of the ports that will be handled automatically by Cinema 4D. The object ImageNodePortTuple() accepts node paths instead of identifiers.
static maxon::nodes::NodeSystemClass g_nodeSystemClass;
{
{
{
}, g_nodeSystemClass);
});
}
static maxon::Result<void> CreateMaterialGraphDefaultSetup(
const maxon::nodes::NodesGraphModelRef& graph)
{
maxon::GraphNode valuePort = shaderNode.GetInputs().FindChild(
maxon::Id("usernode_shade.colorB"))
iferr_return;
}
static
maxon::Result<
void> ConfigurePreviewImageRequest(
maxon::DataDictionaryObjectRef request)
{
request.Set(maxon::nodes::PREVIEWIMAGEREQUEST::PROVIDER, PreviewImageProviderExampleHandbook::GetClass())
iferr_return;
}
{
_class = NodeRendererNodeSystemClassImpl::GetClass().Create()
iferr_return;
spaceData.Set(maxon::nodes::NODESPACE::NODESYSTEMCLASS, _class)
iferr_return;
spaceData.Set(maxon::nodes::NODESPACE::MATERIALENDNODEIDS, std::move(materialEndNodeIds))
iferr_return;
spaceData.Set(maxon::nodes::NODESPACE::RENDERERS, std::move(supportedRenderers))
iferr_return;
spaceData.Set(maxon::nodes::NODESPACE::MATERIALPREVIEWIDS, std::move(materialPreviewNodes))
iferr_return;
materialExchangeBundleIds.
Append(maxon::NODESPACE::EXCHANGE::BUNDLE::VIEWPORTMATERIAL::GetId())
iferr_return;
spaceData.Set(maxon::nodes::NODESPACE::MATERIALEXCHANGEBUNDLEIDS, std::move(materialExchangeBundleIds))
iferr_return;
spaceData.Set(maxon::nodes::NODESPACE::MATERIALEXCHANGECLASS, NodeRendererViewPortMaterialHandbookImpl::GetClass())
iferr_return;
spaceData.Set(maxon::nodes::NODESPACE::IMAGENODEASSETID, maxonexample::HANDBOOK::NODERENDERER::TEXTURENODE::GetId())
iferr_return;
spaceData.Set(maxon::nodes::NODESPACE::IMAGENODEPORTS, imageTuple)
iferr_return;
}
static maxon::Id g_nodeRendererDatabaseID =
maxon::Id(
"net.maxonexample.handbook.nodes.registereddatabase");
{
{
err.CritStop();
return err;
};
const maxon::Url& binaryUrl = maxon::g_maxon.GetUrl();
const maxon::Id spaceDescriptionId =
maxon::Id(
"net.maxonexample.handbook.nodespace.node_renderer");
maxon::nodes::NodeSpaceRef nodeRendererSpace = NodeRendererNodeSpaceImpl::CreateInit(nodeRendererData)
iferr_return;
g_exampleNodeSpace = maxon::nodes::MaterialNodeSpaces::Register(NodeRendererNodeSpaceImpl::GetDescriptor().GetId(), nodeRendererSpace)
iferr_return;
}
static void FreeResources()
{
{
err.CritStop();
return;
};
g_nodeSystemClass = nullptr;
}
static MAXON_METHOD const AssetRepositoryRef & GetBuiltinRepository()
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< T > Append(ARG &&x)
Definition: basearray.h:677
static MAXON_METHOD Result< void > RegisterDatabaseWithUrl(const Id &databaseId, const Url &url, const CString &version=CString::NullValue())
static MAXON_METHOD Result< void > UnregisterDatabase(const Id &databaseId)
Definition: delegate.h:240
Definition: genericdata.h:20
Definition: apibaseid.h:253
Definition: resultbase.h:766
static MAXON_METHOD Result< DataDictionary > LoadDescription(const Id &spaceDescriptionId)
static MAXON_METHOD Result< NodeTemplate > CreateLazyTemplate(const Id &nodeId, Delegate< Result< NodeTemplate >()> &&creator, Delegate< Result< Bool >(const NodeSystemClass &cls)> &&support={})
static MAXON_METHOD Result< DescriptionProcessor > CreateNodeDescriptionProcessor(Delegate< Result< NodeTemplate >(const Id &descriptionId, const DataDescription &dataDescription)> &&delegate)
static MAXON_METHOD Result< NodeTemplate > LoadTemplate(const AssetRepositoryRef &repo, const Id &assetId)
static MAXON_METHOD Result< NodeSystemBasedNodeTemplate > BuildNodeFromDescription(const Id &id, const NodeSystemClass &nodeClass, Bool addDependencies=true, const Delegate< Result< void >(const MutableRoot &root, const TemplateArguments &args)> &finalizer={})
OK
Ok.
Definition: ge_prepass.h:0
return OK
Definition: apibase.h:2690
Col4< Float, 1 > ColorA
Definition: vector4d.h:60
#define MAXON_DECLARATION_REGISTER(...)
Definition: module.h:933
#define MAXON_INITIALIZATION(...)
Definition: module.h:795
#define MAXON_METHOD
Definition: interfacebase.h:1001
The maxon namespace contains all declarations of the MAXON API.
Definition: autoweight.h:14
Definition: animation_attributes.h:10
#define iferr_scope_handler
Definition: resultbase.h:1402
#define iferr_scope
Definition: resultbase.h:1384