Describes how to implement a default state for a node graph.
The default state of a node graph determines what nodes, with which values and connections, will be contained by default in a newly created graph. A custom node called net.maxonexample.handbook.noderenderer.usernode_shade is used in this example and must be created to provide expected functionality.
To implement a default state, a function has to be created that will provide this default setup by creating the required nodes, setting the values and making the port connections. This function has to be registered in NodeRendererNodeSpaceImpl::Init().
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_METHOD const AssetRepositoryRef & GetBuiltinRepository()
Definition: apibaseid.h:253
static MAXON_METHOD Result< NodeTemplate > LoadTemplate(const AssetRepositoryRef &repo, const Id &assetId)
OK
Ok.
Definition: ge_prepass.h:0
Col4< Float, 1 > ColorA
Definition: vector4d.h:60
The maxon namespace contains all declarations of the MAXON API.
Definition: autoweight.h:14
Definition: animation_attributes.h:10
#define iferr_scope
Definition: resultbase.h:1384
#define iferr_return
Definition: resultbase.h:1519
This function then has to be written to the DataDictionary of the node space as a callback for providing a default setup.
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;
}
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;
}
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: genericdata.h:20
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< NodeSystemBasedNodeTemplate > BuildNodeFromDescription(const Id &id, const NodeSystemClass &nodeClass, Bool addDependencies=true, const Delegate< Result< void >(const MutableRoot &root, const TemplateArguments &args)> &finalizer={})
return OK
Definition: apibase.h:2690
#define MAXON_DECLARATION_REGISTER(...)
Definition: module.h:933
#define MAXON_INITIALIZATION(...)
Definition: module.h:795
#define MAXON_METHOD
Definition: interfacebase.h:1001
#define iferr_scope_handler
Definition: resultbase.h:1402