Add 'foreach_nodeclass' for geometry nodetrees
This way we get a choice when we click on node links in the Properties
Editor.
This also changes some of the more permissive poll functions on some
nodes back to being "shading-only" (these were made permissive in
rBb78f2675d7e5 for simulation nodes, but have not found their way into
geometry nodes yet).
ref b279fef85d
/ T86416 / D10671
Maniphest Tasks: T86416
Differential Revision: https://developer.blender.org/D10673
This commit is contained in:
parent
eb20250d2a
commit
cf2933c38a
Notes:
blender-bot
2023-02-14 04:10:15 +01:00
Referenced by commit 9ef24d5aaa
, Geometry Nodes: fix error adding a value node
Referenced by issue #86416, Crash in node menu of the texture properties
|
@ -71,6 +71,17 @@ static void geometry_node_tree_update(bNodeTree *ntree)
|
|||
ntree_update_reroute_nodes(ntree);
|
||||
}
|
||||
|
||||
static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCallback func)
|
||||
{
|
||||
func(calldata, NODE_CLASS_INPUT, N_("Input"));
|
||||
func(calldata, NODE_CLASS_GEOMETRY, N_("Geometry"));
|
||||
func(calldata, NODE_CLASS_ATTRIBUTE, N_("Attribute"));
|
||||
func(calldata, NODE_CLASS_OP_COLOR, N_("Color"));
|
||||
func(calldata, NODE_CLASS_OP_VECTOR, N_("Vector"));
|
||||
func(calldata, NODE_CLASS_CONVERTOR, N_("Convertor"));
|
||||
func(calldata, NODE_CLASS_LAYOUT, N_("Layout"));
|
||||
}
|
||||
|
||||
void register_node_tree_type_geo(void)
|
||||
{
|
||||
bNodeTreeType *tt = ntreeType_Geometry = static_cast<bNodeTreeType *>(
|
||||
|
@ -83,6 +94,7 @@ void register_node_tree_type_geo(void)
|
|||
tt->rna_ext.srna = &RNA_GeometryNodeTree;
|
||||
tt->update = geometry_node_tree_update;
|
||||
tt->get_from_context = geometry_node_tree_get_from_context;
|
||||
tt->foreach_nodeclass = foreach_nodeclass;
|
||||
|
||||
ntreeTypeAdd(tt);
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ void register_node_type_sh_brightcontrast(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_BRIGHTCONTRAST, "Bright/Contrast", NODE_CLASS_OP_COLOR, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_BRIGHTCONTRAST, "Bright/Contrast", NODE_CLASS_OP_COLOR, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_brightcontrast_in, sh_node_brightcontrast_out);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
|
|
|
@ -62,7 +62,7 @@ void register_node_type_sh_gamma(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_GAMMA, "Gamma", NODE_CLASS_OP_COLOR, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_GAMMA, "Gamma", NODE_CLASS_OP_COLOR, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_gamma_in, sh_node_gamma_out);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
|
|
|
@ -89,7 +89,7 @@ void register_node_type_sh_hue_sat(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_HUE_SAT, "Hue Saturation Value", NODE_CLASS_OP_COLOR, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_HUE_SAT, "Hue Saturation Value", NODE_CLASS_OP_COLOR, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_hue_sat_in, sh_node_hue_sat_out);
|
||||
node_type_size_preset(&ntype, NODE_SIZE_MIDDLE);
|
||||
node_type_exec(&ntype, NULL, NULL, node_shader_exec_hue_sat);
|
||||
|
|
|
@ -69,7 +69,7 @@ void register_node_type_sh_invert(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_INVERT, "Invert", NODE_CLASS_OP_COLOR, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_INVERT, "Invert", NODE_CLASS_OP_COLOR, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_invert_in, sh_node_invert_out);
|
||||
node_type_exec(&ntype, NULL, NULL, node_shader_exec_invert);
|
||||
node_type_gpu(&ntype, gpu_shader_invert);
|
||||
|
|
|
@ -106,7 +106,7 @@ void register_node_type_sh_mix_rgb(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_MIX_RGB, "Mix", NODE_CLASS_OP_COLOR, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_MIX_RGB, "Mix", NODE_CLASS_OP_COLOR, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_mix_rgb_in, sh_node_mix_rgb_out);
|
||||
node_type_label(&ntype, node_blend_label);
|
||||
node_type_exec(&ntype, NULL, NULL, node_shader_exec_mix_rgb);
|
||||
|
|
|
@ -61,7 +61,7 @@ void register_node_type_sh_sephsv(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_SEPHSV, "Separate HSV", NODE_CLASS_CONVERTOR, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_SEPHSV, "Separate HSV", NODE_CLASS_CONVERTOR, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_sephsv_in, sh_node_sephsv_out);
|
||||
node_type_exec(&ntype, NULL, NULL, node_shader_exec_sephsv);
|
||||
node_type_gpu(&ntype, gpu_shader_sephsv);
|
||||
|
@ -109,7 +109,7 @@ void register_node_type_sh_combhsv(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_COMBHSV, "Combine HSV", NODE_CLASS_CONVERTOR, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_COMBHSV, "Combine HSV", NODE_CLASS_CONVERTOR, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_combhsv_in, sh_node_combhsv_out);
|
||||
node_type_exec(&ntype, NULL, NULL, node_shader_exec_combhsv);
|
||||
node_type_gpu(&ntype, gpu_shader_combhsv);
|
||||
|
|
|
@ -91,7 +91,7 @@ void register_node_type_sh_tex_noise(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_TEX_NOISE, "Noise Texture", NODE_CLASS_TEXTURE, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_TEX_NOISE, "Noise Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_noise_in, sh_node_tex_noise_out);
|
||||
node_type_init(&ntype, node_shader_init_tex_noise);
|
||||
node_type_storage(
|
||||
|
|
|
@ -71,8 +71,7 @@ void register_node_type_sh_tex_white_noise(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(
|
||||
&ntype, SH_NODE_TEX_WHITE_NOISE, "White Noise Texture", NODE_CLASS_TEXTURE, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_TEX_WHITE_NOISE, "White Noise Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_white_noise_in, sh_node_tex_white_noise_out);
|
||||
node_type_init(&ntype, node_shader_init_tex_white_noise);
|
||||
node_type_gpu(&ntype, gpu_shader_tex_white_noise);
|
||||
|
|
|
@ -50,7 +50,7 @@ void register_node_type_sh_value(void)
|
|||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_fn_node_type_base(&ntype, SH_NODE_VALUE, "Value", NODE_CLASS_INPUT, 0);
|
||||
sh_node_type_base(&ntype, SH_NODE_VALUE, "Value", NODE_CLASS_INPUT, 0);
|
||||
node_type_socket_templates(&ntype, nullptr, sh_node_value_out);
|
||||
node_type_gpu(&ntype, gpu_shader_value);
|
||||
ntype.expand_in_mf_network = sh_node_value_expand_in_mf_network;
|
||||
|
|
Loading…
Reference in New Issue