[Bf-blender-cvs] [4e78822c282] 2d: Wip
Johnny Matthews
noreply at git.blender.org
Wed Feb 2 19:04:56 CET 2022
Commit: 4e78822c282de471af4bafa603b18df1f790bfb6
Author: Johnny Matthews
Date: Tue Feb 1 15:16:03 2022 -0600
Branches: 2d
https://developer.blender.org/rB4e78822c282de471af4bafa603b18df1f790bfb6
Wip
===================================================================
M source/blender/blenkernel/intern/node_tree_update.cc
M source/blender/editors/space_node/drawnode.cc
M source/blender/editors/space_node/node_relationships.cc
M source/blender/makesrna/intern/rna_attribute.c
M source/blender/modifiers/intern/MOD_nodes.cc
M source/blender/nodes/geometry/node_geometry_tree.cc
M source/blender/nodes/geometry/node_geometry_util.cc
M source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc
A source/blender/nodes/geometry/nodes/node_geo_input_uv.cc
M source/blender/nodes/geometry/nodes/node_geo_viewer.cc
M source/blender/nodes/intern/node_exec.cc
M source/blender/nodes/intern/node_geometry_exec.cc
M source/blender/nodes/intern/node_socket_declarations.cc
M source/blender/nodes/intern/node_util.c
M source/blender/nodes/intern/node_util.h
===================================================================
diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc
index 0555707b64c..9fafb57ae54 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -618,6 +618,18 @@ static int get_internal_link_type_priority(const bNodeSocketType *from, const bN
return 1;
}
return -1;
+ // case SOCK_VECTOR2D:
+ // switch (from->type) {
+ // case SOCK_VECTOR2D:
+ // return 4;
+ // case SOCK_FLOAT:
+ // return 3;
+ // case SOCK_INT:
+ // return 2;
+ // case SOCK_BOOLEAN:
+ // return 1;
+ // }
+ // return -1;
case SOCK_FLOAT:
switch (from->type) {
case SOCK_FLOAT:
diff --git a/source/blender/editors/space_node/drawnode.cc b/source/blender/editors/space_node/drawnode.cc
index 5dd285a6099..6b5c00ed5bb 100644
--- a/source/blender/editors/space_node/drawnode.cc
+++ b/source/blender/editors/space_node/drawnode.cc
@@ -1434,6 +1434,13 @@ static void std_node_socket_interface_draw(bContext *UNUSED(C), uiLayout *layout
uiItemR(sub, ptr, "max_value", DEFAULT_FLAGS, IFACE_("Max"), ICON_NONE);
break;
}
+ case SOCK_VECTOR2D: {
+ uiItemR(col, ptr, "default_value", UI_ITEM_R_EXPAND, IFACE_("Default"), ICON_NONE);
+ uiLayout *sub = uiLayoutColumn(col, true);
+ uiItemR(sub, ptr, "min_value", DEFAULT_FLAGS, IFACE_("Min"), ICON_NONE);
+ uiItemR(sub, ptr, "max_value", DEFAULT_FLAGS, IFACE_("Max"), ICON_NONE);
+ break;
+ }
case SOCK_BOOLEAN:
case SOCK_RGBA:
case SOCK_STRING: {
diff --git a/source/blender/editors/space_node/node_relationships.cc b/source/blender/editors/space_node/node_relationships.cc
index 740d872bfc5..d7f0514cbb7 100644
--- a/source/blender/editors/space_node/node_relationships.cc
+++ b/source/blender/editors/space_node/node_relationships.cc
@@ -471,6 +471,7 @@ static bool socket_can_be_viewed(const OutputSocketRef &socket)
SOCK_GEOMETRY,
SOCK_FLOAT,
SOCK_VECTOR,
+ SOCK_VECTOR2D,
SOCK_INT,
SOCK_BOOLEAN,
SOCK_RGBA);
@@ -485,6 +486,8 @@ static CustomDataType socket_type_to_custom_data_type(const eNodeSocketDatatype
return CD_PROP_INT32;
case SOCK_VECTOR:
return CD_PROP_FLOAT3;
+ case SOCK_VECTOR2D:
+ return CD_PROP_FLOAT2;
case SOCK_BOOLEAN:
return CD_PROP_BOOL;
case SOCK_RGBA:
diff --git a/source/blender/makesrna/intern/rna_attribute.c b/source/blender/makesrna/intern/rna_attribute.c
index 35da353a043..1ea9b9ecbd1 100644
--- a/source/blender/makesrna/intern/rna_attribute.c
+++ b/source/blender/makesrna/intern/rna_attribute.c
@@ -123,6 +123,8 @@ static StructRNA *srna_by_custom_data_layer_type(const CustomDataType type)
return &RNA_IntAttribute;
case CD_PROP_FLOAT3:
return &RNA_FloatVectorAttribute;
+ case CD_PROP_FLOAT2:
+ return &RNA_Float2Attribute;
case CD_PROP_COLOR:
return &RNA_FloatColorAttribute;
case CD_MLOOPCOL:
@@ -131,8 +133,6 @@ static StructRNA *srna_by_custom_data_layer_type(const CustomDataType type)
return &RNA_StringAttribute;
case CD_PROP_BOOL:
return &RNA_BoolAttribute;
- case CD_PROP_FLOAT2:
- return &RNA_Float2Attribute;
default:
return NULL;
}
@@ -238,6 +238,9 @@ static void rna_Attribute_data_begin(CollectionPropertyIterator *iter, PointerRN
case CD_PROP_FLOAT3:
struct_size = sizeof(float[3]);
break;
+ case CD_PROP_FLOAT2:
+ struct_size = sizeof(float[2]);
+ break;
case CD_PROP_COLOR:
struct_size = sizeof(MPropCol);
break;
@@ -250,9 +253,6 @@ static void rna_Attribute_data_begin(CollectionPropertyIterator *iter, PointerRN
case CD_PROP_BOOL:
struct_size = sizeof(MBoolProperty);
break;
- case CD_PROP_FLOAT2:
- struct_size = sizeof(float[2]);
- break;
default:
struct_size = 0;
length = 0;
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index 83775be8c9e..24a8a9621c5 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -105,6 +105,7 @@
using blender::Array;
using blender::ColorGeometry4f;
using blender::destruct_ptr;
+using blender::float2;
using blender::float3;
using blender::FunctionRef;
using blender::IndexRange;
@@ -366,7 +367,8 @@ static const std::string attribute_name_suffix = "_attribute_name";
*/
static bool socket_type_has_attribute_toggle(const bNodeSocket &socket)
{
- return ELEM(socket.type, SOCK_FLOAT, SOCK_VECTOR, SOCK_BOOLEAN, SOCK_RGBA, SOCK_INT);
+ return ELEM(
+ socket.type, SOCK_FLOAT, SOCK_VECTOR, SOCK_VECTOR2D, SOCK_BOOLEAN, SOCK_RGBA, SOCK_INT);
}
/**
@@ -425,6 +427,24 @@ static IDProperty *id_property_create_from_socket(const bNodeSocket &socket)
}
return property;
}
+ case SOCK_VECTOR2D: {
+ bNodeSocketValueVector2d *value = (bNodeSocketValueVector2d *)socket.default_value;
+ IDPropertyTemplate idprop = {0};
+ idprop.array.len = 2;
+ idprop.array.type = IDP_FLOAT;
+ IDProperty *property = IDP_New(IDP_ARRAY, &idprop, socket.identifier);
+ copy_v2_v2((float *)IDP_Array(property), value->value);
+ IDPropertyUIDataFloat *ui_data = (IDPropertyUIDataFloat *)IDP_ui_data_ensure(property);
+ ui_data->base.rna_subtype = value->subtype;
+ ui_data->min = ui_data->soft_min = (double)value->min;
+ ui_data->max = ui_data->soft_max = (double)value->max;
+ ui_data->default_array = (double *)MEM_mallocN(sizeof(double[2]), "mod_prop_default");
+ ui_data->default_array_len = 2;
+ for (const int i : IndexRange(2)) {
+ ui_data->default_array[i] = double(value->value[i]);
+ }
+ return property;
+ }
case SOCK_RGBA: {
bNodeSocketValueRGBA *value = (bNodeSocketValueRGBA *)socket.default_value;
IDPropertyTemplate idprop = {0};
@@ -501,6 +521,8 @@ static bool id_property_type_matches_socket(const bNodeSocket &socket, const IDP
return ELEM(property.type, IDP_FLOAT, IDP_DOUBLE);
case SOCK_INT:
return property.type == IDP_INT;
+ case SOCK_VECTOR2D:
+ return property.type == IDP_ARRAY && property.subtype == IDP_FLOAT && property.len == 2;
case SOCK_VECTOR:
return property.type == IDP_ARRAY && property.subtype == IDP_FLOAT && property.len == 3;
case SOCK_RGBA:
@@ -547,6 +569,12 @@ static void init_socket_cpp_value_from_property(const IDProperty &property,
new (r_value) ValueOrField<float3>(value);
break;
}
+ case SOCK_VECTOR2D: {
+ float2 value;
+ copy_v2_v2(value, (const float *)IDP_Array(&property));
+ new (r_value) ValueOrField<float2>(value);
+ break;
+ }
case SOCK_RGBA: {
blender::ColorGeometry4f value;
copy_v4_v4((float *)value, (const float *)IDP_Array(&property));
diff --git a/source/blender/nodes/geometry/node_geometry_tree.cc b/source/blender/nodes/geometry/node_geometry_tree.cc
index a6dec71ed06..cddb8a6eae9 100644
--- a/source/blender/nodes/geometry/node_geometry_tree.cc
+++ b/source/blender/nodes/geometry/node_geometry_tree.cc
@@ -91,8 +91,8 @@ static bool geometry_node_tree_validate_link(eNodeSocketDatatype type_a,
{
/* Geometry, string, object, material, texture and collection sockets can only be connected to
* themselves. The other types can be converted between each other. */
- if (ELEM(type_a, SOCK_FLOAT, SOCK_VECTOR, SOCK_RGBA, SOCK_BOOLEAN, SOCK_INT) &&
- ELEM(type_b, SOCK_FLOAT, SOCK_VECTOR, SOCK_RGBA, SOCK_BOOLEAN, SOCK_INT)) {
+ if (ELEM(type_a, SOCK_FLOAT, SOCK_VECTOR, SOCK_VECTOR2D, SOCK_RGBA, SOCK_BOOLEAN, SOCK_INT) &&
+ ELEM(type_b, SOCK_FLOAT, SOCK_VECTOR, SOCK_VECTOR2D, SOCK_RGBA, SOCK_BOOLEAN, SOCK_INT)) {
return true;
}
return type_a == type_b;
@@ -104,6 +104,7 @@ static bool geometry_node_tree_socket_type_valid(bNodeTreeType *UNUSED(ntreetype
return nodeIsStaticSocketType(socket_type) && ELEM(socket_type->type,
SOCK_FLOAT,
SOCK_VECTOR,
+ SOCK_VECTOR2D,
SOCK_RGBA,
SOCK_BOOLEAN,
SOCK_INT,
diff --git a/source/blender/nodes/geometry/node_geometry_util.cc b/source/blender/nodes/geometry/node_geometry_util.cc
index ceb9a7e1467..aaa03d3ddc8 100644
--- a/source/blender/nodes/geometry/node_geometry_util.cc
+++ b/source/blender/nodes/geometry/node_geometry_util.cc
@@ -45,6 +45,7 @@ void update_attribute_input_socket_availabilities(bNodeTree &ntree,
(socket->type == SOCK_FLOAT && mode_ == GEO_NODE_ATTRIBUTE_INPUT_FLOAT) ||
(socket->type == SOCK_INT && mode_ == GEO_NODE_ATTRIBUTE_INPUT_INTEGER) ||
(socket->type == SOCK_VECTOR && mode_ == GEO_NODE_ATTRIBUTE_INPUT_VECTOR) ||
+ (socket->type == SOCK_VECTOR2D && mode_ == GEO_NODE_ATTRIBUTE_INPUT_VECTOR) ||
(socket->type == SOCK_RGBA && mode_ == GEO_NODE_ATTRIBUTE_INPUT_COLOR));
nodeSetSocketAvailability(&ntree, socket, socket_is_available);
}
@@ -58,6 +59,8 @@ std::optional<CustomDataType> node_data_type_to_custom_data_type(const eNodeSock
return CD_PROP_FLOAT;
case SOCK_VECTOR:
return CD_PROP_FLOAT3;
+ case SOCK_VECTOR2D:
+ return CD_PROP_FLOAT2;
case SOCK_RGBA:
return CD_PROP_COLOR;
case SOCK_BOOLEAN:
diff --git a/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc b/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc
index 6c2e72cf14f..3bbc9012202 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc
@@ -148,6 +148,8 @@ static std::optional<CustomDataType> node_type_from_other_socket(const bNode
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list