25 const bNode *node =
b.node_or_null();
28 b.add_input(data_type,
"Value");
48 static auto exec_preset = mf::build::exec_presets::AllSpanOrSingle();
50 static auto fn_hash_float = mf::build::SI2_SO<float, int, int>(
54 static auto fn_hash_vector = mf::build::SI2_SO<float3, int, int>(
58 static auto fn_hash_color = mf::build::SI2_SO<ColorGeometry4f, int, int>(
62 static auto fn_hash_int = mf::build::SI2_SO<int, int, int>(
66 static auto fn_hash_string = mf::build::SI2_SO<std::string, int, int>(
70 static auto fn_hash_rotation = mf::build::SI2_SO<math::Quaternion, int, int>(
74 static auto fn_hash_matrix = mf::build::SI2_SO<float4x4, int, int>(
79 switch (socket_type) {
81 return &fn_hash_matrix;
83 return &fn_hash_rotation;
85 return &fn_hash_string;
87 return &fn_hash_float;
89 return &fn_hash_vector;
91 return &fn_hash_color;
106 bNode &node =
params.add_node(
"FunctionNodeHashValue");
121 if (!
ELEM(socket_type,
180 ntype.
ui_description =
"Generate a randomized integer using the given input value as a seed";
#define NODE_CLASS_CONVERTER
#define FN_NODE_HASH_VALUE
#define BLI_assert_unreachable()
BLI_INLINE unsigned int BLI_hash_string(const char *str)
#define NOD_REGISTER_NODE(REGISTER_FUNC)
#define NOD_inline_enum_accessors(member)
static unsigned long seed
void set_matching_fn(const mf::MultiFunction *fn)
eNodeSocketDatatype socket_type
const StringRef socket_name
void operator()(LinkSearchOpParams ¶ms)
void node_register_type(bNodeType &ntype)
QuaternionBase< float > Quaternion
static const mf::MultiFunction * get_multi_function(const bNode &bnode)
static void node_build_multi_function(NodeMultiFunctionBuilder &builder)
static void node_init(bNodeTree *, bNode *node)
static void node_declare(NodeDeclarationBuilder &b)
static void node_register()
static void node_gather_link_searches(GatherLinkSearchOpParams ¶ms)
static void node_layout(uiLayout *layout, bContext *, PointerRNA *ptr)
static void node_rna(StructRNA *srna)
PropertyRNA * RNA_def_node_enum(StructRNA *srna, const char *identifier, const char *ui_name, const char *ui_description, const EnumPropertyItem *static_items, const EnumRNAAccessors accessors, std::optional< int > default_value, const EnumPropertyItemFunc item_func, const bool allow_animation)
const EnumPropertyItem * enum_items_filter(const EnumPropertyItem *original_item_array, FunctionRef< bool(const EnumPropertyItem &item)> fn)
uint32_t hash_float(float kx)
uint32_t hash(uint32_t kx)
MatBase< float, 4, 4 > float4x4
VecBase< float, 4 > float4
ColorSceneLinear4f< eAlpha::Premultiplied > ColorGeometry4f
VecBase< float, 3 > float3
void fn_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
const EnumPropertyItem rna_enum_node_socket_data_type_items[]
std::string ui_description
void(* initfunc)(bNodeTree *ntree, bNode *node)
NodeMultiFunctionBuildFunction build_multi_function
const char * enum_name_legacy
void(* draw_buttons)(uiLayout *, bContext *C, PointerRNA *ptr)
NodeGatherSocketLinkOperationsFunction gather_link_search_ops
NodeDeclareFunction declare
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)