Commit: f2112199a4dce81d7a3644b4499309f10847c458
Author: Hans Goudey
Date: Fri Aug 6 17:08:22 2021 -0500
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rBf2112199a4dce81d7a3644b4499309f10847c458
Add utilities to enable and disable output sockets with a type
===================================================================
M source/blender/nodes/geometry/node_geometry_util.cc
M source/blender/nodes/geometry/node_geometry_util.hh
===================================================================
diff --git a/source/blender/nodes/geometry/node_geometry_util.cc
b/source/blender/nodes/geometry/node_geometry_util.cc
index 455bc8c55dc..4ea12190ae8 100644
--- a/source/blender/nodes/geometry/node_geometry_util.cc
+++ b/source/blender/nodes/geometry/node_geometry_util.cc
@@ -30,6 +30,40 @@ namespace blender::nodes {
using bke::GeometryInstanceGroup;
+static void update_multi_type_socket_availabilities(ListBase &socket_list,
+ const StringRef name,
+ const CustomDataType type,
+ const bool
name_is_available)
+{
+ LISTBASE_FOREACH (bNodeSocket *, socket, &socket_list) {
+ if (name == socket->name) {
+ const bool socket_is_available = name_is_available &&
+ ((socket->type == SOCK_STRING && type
== CD_PROP_STRING) ||
+ (socket->type == SOCK_FLOAT && type ==
CD_PROP_FLOAT) ||
+ (socket->type == SOCK_INT && type ==
CD_PROP_INT32) ||
+ (socket->type == SOCK_VECTOR && type
== CD_PROP_FLOAT3) ||
+ (socket->type == SOCK_RGBA && type ==
CD_PROP_COLOR));
+ nodeSetSocketAvailability(socket, socket_is_available);
+ }
+ }
+}
+
+void update_multi_type_input_socket_availabilities(bNode &node,
+ const StringRef name,
+ const CustomDataType type,
+ const bool
name_is_available)
+{
+ update_multi_type_socket_availabilities(node.inputs, name, type,
name_is_available);
+}
+
+void update_multi_type_output_socket_availabilities(bNode &node,
+ const StringRef name,
+ const CustomDataType type,
+ const bool
name_is_available)
+{
+ update_multi_type_socket_availabilities(node.outputs, name, type,
name_is_available);
+}
+
/**
* Update the availability of a group of input sockets with the same name,
* used for switching between attribute inputs or single values.
diff --git a/source/blender/nodes/geometry/node_geometry_util.hh
b/source/blender/nodes/geometry/node_geometry_util.hh
index b2d5a542e3b..2aa7276578a 100644
--- a/source/blender/nodes/geometry/node_geometry_util.hh
+++ b/source/blender/nodes/geometry/node_geometry_util.hh
@@ -46,6 +46,16 @@ void update_attribute_input_socket_availabilities(bNode
&node,
const
GeometryNodeAttributeInputMode mode,
const bool name_is_available
= true);
+void update_multi_type_input_socket_availabilities(bNode &node,
+ const StringRef name,
+ const CustomDataType type,
+ const bool
name_is_available = true);
+
+void update_multi_type_output_socket_availabilities(bNode &node,
+ const StringRef name,
+ const CustomDataType type,
+ const bool
name_is_available = true);
+
Array<uint32_t> get_geometry_element_ids_as_uints(const GeometryComponent
&component,
const AttributeDomain
domain);
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs