Open Search
    NodeSystemClassInterface Implementation

    Table of Contents

    About

    A node system class defines a set of methods to customize the behaviour of node systems and node templates. Whenever a NodeTemplate is instantiated to a NodeSystem, this process goes through a NodeSystemClass. Also only NodeSystems which use the same class can be used together.

    Note
    The instance of maxon::nodes::NodeSystemClassInterface must be registered in maxon::nodes::NodeSpaceInterface::Init(). See NodeSpaceInterface Implementation.

    Methods

    These methods allow to filter nodes that can be used in the node system.

    static maxon::Id g_nodeSystemClassExampleID = maxon::Id("net.maxonexample.class.examplenodeclass");
    class ExampleNodeSystemClassImpl : public maxon::Component<ExampleNodeSystemClassImpl, maxon::nodes::NodeSystemClassInterface>
    {
    MAXON_COMPONENT(FINAL, maxon::nodes::BaseCoreNodesNodeSystemClass().GetClass());
    public:
    MAXON_METHOD maxon::Result<maxon::Bool> SupportsImpl(const maxon::nodes::NodeTemplate& templ) const
    {
    const maxon::Id& id = templ.GetId();
    if (id == maxon::Id("net.maxon.node.arithmetic") || id == maxon::Id("net.maxon.node.scale"))
    {
    return true;
    }
    return super.SupportsImpl(templ);
    }
    MAXON_METHOD maxon::Result<maxon::Bool> SupportsVariant(const maxon::nodes::NodeTemplate& templ, const maxon::Block<const maxon::Id>& variant) const
    {
    return *variant.GetLast() != maxon::Id("net.maxon.parametrictype.col<4,float>");
    }
    MAXON_METHOD maxon::Result<maxon::Id> SubstituteVariant(const maxon::nodes::NodeTemplate& templ, const maxon::Block<const maxon::Id>& variant, const maxon::Block<const maxon::Id>& options) const
    {
    if (*variant.GetLast() == maxon::Id("net.maxon.parametrictype.col<4,float>"))
    {
    return maxon::Id("net.maxon.parametrictype.col<3,float>");
    }
    return { };
    }
    };
    MAXON_COMPONENT_CLASS_REGISTER(ExampleNodeSystemClassImpl, g_nodeSystemClassExampleID);
    Definition: block.h:423
    T * GetLast() const
    Definition: block.h:666
    Definition: objectbase.h:2672
    static const Class< typename INTERFACE::Hxx1::ReferenceClass > & GetClass()
    Definition: objectbase.h:2754
    Definition: apibaseid.h:243
    Definition: resultbase.h:766
    FINAL
    Definition: corenodes_instances.h:26
    #define MAXON_COMPONENT(KIND,...)
    Definition: objectbase.h:2229
    #define MAXON_COMPONENT_CLASS_REGISTER(C,...)
    Definition: objectbase.h:2427
    #define MAXON_METHOD
    Definition: interfacebase.h:1020

    Further methods are:

    // This example creates a new NodesGraphModelRef.
    maxon::AssetRepositoryRef repository = maxon::AssetInterface::GetBuiltinRepository();
    maxon::nodes::MutableRoot root = maxon::nodes::CoreNodesNodeSystemClass().CreateNodeSystem(repository) iferr_return;
    const auto nodesGraphModelClass = maxon::nodes::NodesGraphModelClass();
    maxon::nodes::NodesGraphModelRef nodesGraphModel = nodesGraphModelClass.Create() iferr_return;
    nodesGraphModel.Init(sys, repository, filter, true) iferr_return;
    static MAXON_METHOD const AssetRepositoryRef & GetBuiltinRepository()
    Definition: nodesystem.h:2317
    Result< NodeSystem > EndModification(Opt< ChangeList & > list={}, NodeSystem::FINALIZE_FLAGS finalize=NodeSystem::FINALIZE_FLAGS::CLEANUP)
    Definition: nodesystem.h:862
    @ NONE
    Don't do any finalizations at all.
    @ INCLUDE_INNER
    Includes inner nodes in the view.
    @ INCLUDE_HIDDEN
    Includes hidden nodes in the view.
    static const NO_VALUE_TYPE NO_VALUE
    Definition: optional.h:17
    #define iferr_return
    Definition: resultbase.h:1531