diff --git a/source/blender/blenkernel/BKE_node_tree_interface.hh b/source/blender/blenkernel/BKE_node_tree_interface.hh index 74b924ad1e4..c7f7d5863ec 100644 --- a/source/blender/blenkernel/BKE_node_tree_interface.hh +++ b/source/blender/blenkernel/BKE_node_tree_interface.hh @@ -147,6 +147,11 @@ static const bNodeSocketStaticTypeInfo node_socket_subtypes[] = { {"NodeSocketRotation", "NodeTreeInterfaceSocketRotation", SOCK_ROTATION, PROP_NONE}, {"NodeSocketMatrix", "NodeTreeInterfaceSocketMatrix", SOCK_MATRIX, PROP_NONE}, {"NodeSocketVector", "NodeTreeInterfaceSocketVector", SOCK_VECTOR, PROP_NONE}, + {"NodeSocketVectorFactor", "NodeTreeInterfaceSocketVectorFactor", SOCK_VECTOR, PROP_FACTOR}, + {"NodeSocketVectorPercentage", + "NodeTreeInterfaceSocketVectorPercentage", + SOCK_VECTOR, + PROP_PERCENTAGE}, {"NodeSocketVectorTranslation", "NodeTreeInterfaceSocketVectorTranslation", SOCK_VECTOR, diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc index 045bf069c30..f60c0ef5475 100644 --- a/source/blender/blenkernel/intern/node.cc +++ b/source/blender/blenkernel/intern/node.cc @@ -537,6 +537,10 @@ static StringRef get_legacy_socket_subtype_idname(StringRef idname, const void * const bNodeSocketValueVector &vector_data = *static_cast( socket_data); switch (vector_data.subtype) { + case PROP_FACTOR: + return "NodeSocketVectorFactor"; + case PROP_PERCENTAGE: + return "NodeSocketVectorPercentage"; case PROP_TRANSLATION: return "NodeSocketVectorTranslation"; case PROP_DIRECTION: @@ -2547,6 +2551,10 @@ std::optional node_static_socket_type(const int type, const int s return "NodeSocketMatrix"; case SOCK_VECTOR: switch (PropertySubType(subtype)) { + case PROP_FACTOR: + return "NodeSocketVectorFactor"; + case PROP_PERCENTAGE: + return "NodeSocketVectorPercentage"; case PROP_TRANSLATION: return "NodeSocketVectorTranslation"; case PROP_DIRECTION: @@ -2648,6 +2656,10 @@ std::optional node_static_socket_interface_type_new(const int typ return "NodeTreeInterfaceSocketMatrix"; case SOCK_VECTOR: switch (PropertySubType(subtype)) { + case PROP_FACTOR: + return "NodeTreeInterfaceSocketVectorFactor"; + case PROP_PERCENTAGE: + return "NodeTreeInterfaceSocketVectorPercentage"; case PROP_TRANSLATION: return "NodeTreeInterfaceSocketVectorTranslation"; case PROP_DIRECTION: diff --git a/source/blender/makesrna/intern/rna_node_socket.cc b/source/blender/makesrna/intern/rna_node_socket.cc index 620072b1704..ffc2343ca00 100644 --- a/source/blender/makesrna/intern/rna_node_socket.cc +++ b/source/blender/makesrna/intern/rna_node_socket.cc @@ -1811,6 +1811,11 @@ static const bNodeSocketStaticTypeInfo node_socket_subtypes[] = { {"NodeSocketRotation", "NodeTreeInterfaceSocketRotation", SOCK_ROTATION, PROP_NONE}, {"NodeSocketMatrix", "NodeTreeInterfaceSocketMatrix", SOCK_MATRIX, PROP_NONE}, {"NodeSocketVector", "NodeTreeInterfaceSocketVector", SOCK_VECTOR, PROP_NONE}, + {"NodeSocketVectorFactor", "NodeTreeInterfaceSocketVectorFactor", SOCK_VECTOR, PROP_FACTOR}, + {"NodeSocketVectorPercentage", + "NodeTreeInterfaceSocketVectorPercentage", + SOCK_VECTOR, + PROP_PERCENTAGE}, {"NodeSocketVectorTranslation", "NodeTreeInterfaceSocketVectorTranslation", SOCK_VECTOR, diff --git a/source/blender/makesrna/intern/rna_node_tree_interface.cc b/source/blender/makesrna/intern/rna_node_tree_interface.cc index 58684776322..4d9164205a7 100644 --- a/source/blender/makesrna/intern/rna_node_tree_interface.cc +++ b/source/blender/makesrna/intern/rna_node_tree_interface.cc @@ -774,7 +774,9 @@ void rna_NodeTreeInterfaceSocketInt_default_value_range( static const EnumPropertyItem *rna_NodeTreeInterfaceSocketVector_subtype_itemf( bContext * /*C*/, PointerRNA * /*ptr*/, PropertyRNA * /*prop*/, bool *r_free) { - return rna_subtype_filter_itemf({PROP_TRANSLATION, + return rna_subtype_filter_itemf({PROP_FACTOR, + PROP_PERCENTAGE, + PROP_TRANSLATION, PROP_DIRECTION, PROP_VELOCITY, PROP_ACCELERATION, diff --git a/source/blender/nodes/intern/node_socket.cc b/source/blender/nodes/intern/node_socket.cc index ff35e597c1f..b597e979e18 100644 --- a/source/blender/nodes/intern/node_socket.cc +++ b/source/blender/nodes/intern/node_socket.cc @@ -1217,6 +1217,8 @@ void register_standard_node_socket_types() bke::node_register_socket_type(*make_socket_type_matrix()); bke::node_register_socket_type(*make_socket_type_vector(PROP_NONE)); + bke::node_register_socket_type(*make_socket_type_vector(PROP_FACTOR)); + bke::node_register_socket_type(*make_socket_type_vector(PROP_PERCENTAGE)); bke::node_register_socket_type(*make_socket_type_vector(PROP_TRANSLATION)); bke::node_register_socket_type(*make_socket_type_vector(PROP_DIRECTION)); bke::node_register_socket_type(*make_socket_type_vector(PROP_VELOCITY)); diff --git a/tests/python/bl_node_group_compat.py b/tests/python/bl_node_group_compat.py index 11188746b1c..6337655ee83 100644 --- a/tests/python/bl_node_group_compat.py +++ b/tests/python/bl_node_group_compat.py @@ -48,6 +48,8 @@ subtype_idname = { ("BOOLEAN", "NONE"): "NodeSocketBool", ("ROTATION", "NONE"): "NodeSocketRotation", ("VECTOR", "NONE"): "NodeSocketVector", + ("VECTOR", "FACTOR"): "NodeSocketVectorFactor", + ("VECTOR", "PERCENTAGE"): "NodeSocketVectorPercentage", ("VECTOR", "TRANSLATION"): "NodeSocketVectorTranslation", ("VECTOR", "DIRECTION"): "NodeSocketVectorDirection", ("VECTOR", "VELOCITY"): "NodeSocketVectorVelocity",