[Bf-blender-cvs] [dad5c3991c9] temp-geometry-nodes-fields-prototype: cleanup
Jacques Lucke
noreply at git.blender.org
Fri Jul 30 13:56:50 CEST 2021
Commit: dad5c3991c91e6195d7156d053de09e8fa4038c9
Author: Jacques Lucke
Date: Fri Jul 30 12:23:19 2021 +0200
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rBdad5c3991c91e6195d7156d053de09e8fa4038c9
cleanup
===================================================================
M source/blender/blenkernel/BKE_node.h
M source/blender/modifiers/intern/MOD_nodes.cc
M source/blender/nodes/NOD_geometry_exec.hh
M source/blender/nodes/NOD_type_callbacks.hh
M source/blender/nodes/intern/node_geometry_exec.cc
M source/blender/nodes/intern/node_socket.cc
M source/blender/nodes/intern/type_callbacks.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 5d2a1df76bc..acbbd110219 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -199,9 +199,9 @@ typedef struct bNodeSocketType {
/* Expands the socket into a multi-function node that outputs the socket value. */
SocketExpandInMFNetworkFunction expand_in_mf_network;
/* Return the CPPType of this socket. */
- SocketGetCPPTypeFunction get_cpp_type;
+ SocketGetCPPTypeFunction get_base_cpp_type;
/* Get the value of this socket in a generic way. */
- SocketGetCPPValueFunction get_cpp_value;
+ SocketGetCPPValueFunction get_base_cpp_value;
/* Get geometry nodes cpp type. */
SocketGetGeometryNodesCPPTypeFunction get_geometry_nodes_cpp_type;
/* Get geometry nodes cpp value. */
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index 5fa11ffdd10..3853b345c14 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -721,17 +721,17 @@ static void initialize_group_input(NodesModifierData &nmd,
return;
}
if (nmd.settings.properties == nullptr) {
- blender::nodes::socket_cpp_value_get(socket, r_value);
+ socket.typeinfo->get_geometry_nodes_cpp_value(socket, r_value);
return;
}
const IDProperty *property = IDP_GetPropertyFromGroup(nmd.settings.properties,
socket.identifier);
if (property == nullptr) {
- blender::nodes::socket_cpp_value_get(socket, r_value);
+ socket.typeinfo->get_geometry_nodes_cpp_value(socket, r_value);
return;
}
if (!property_type->is_correct_type(*property)) {
- blender::nodes::socket_cpp_value_get(socket, r_value);
+ socket.typeinfo->get_geometry_nodes_cpp_value(socket, r_value);
return;
}
property_type->init_cpp_value(*property, r_value);
@@ -883,7 +883,7 @@ static GeometrySet compute_geometry(const DerivedNodeTree &tree,
/* Initialize remaining group inputs. */
for (const OutputSocketRef *socket : remaining_input_sockets) {
- const CPPType &cpp_type = *blender::nodes::socket_cpp_type_get(*socket->typeinfo());
+ const CPPType &cpp_type = *socket->typeinfo()->get_geometry_nodes_cpp_type();
void *value_in = allocator.allocate(cpp_type.size(), cpp_type.alignment());
initialize_group_input(*nmd, *socket->bsocket(), cpp_type, value_in);
group_inputs.add_new({root_context, socket}, {cpp_type, value_in});
diff --git a/source/blender/nodes/NOD_geometry_exec.hh b/source/blender/nodes/NOD_geometry_exec.hh
index 46513075f48..779d8ed59bf 100644
--- a/source/blender/nodes/NOD_geometry_exec.hh
+++ b/source/blender/nodes/NOD_geometry_exec.hh
@@ -144,13 +144,13 @@ class GeoNodeExecParams {
*/
template<typename T> T extract_input(StringRef identifier)
{
-#ifdef DEBUG
- this->check_input_access(identifier, &CPPType::get<T>());
-#endif
- GMutablePointer gvalue = this->extract_input(identifier);
if constexpr (std::is_same_v<T, int> || std::is_same_v<T, float> ||
std::is_same_v<T, float3> || std::is_same_v<T, ColorGeometry4f> ||
std::is_same_v<T, bool>) {
+#ifdef DEBUGm
+ this->check_input_access(identifier, &CPPType::get<bke::FieldRef<T>>());
+#endif
+ GMutablePointer gvalue = this->extract_input(identifier);
BLI_assert(gvalue.is_type<bke::FieldRef<T>>());
bke::FieldRef<T> field = gvalue.relocate_out<bke::FieldRef<T>>();
bke::FieldInputs inputs = field->prepare_inputs();
@@ -160,6 +160,10 @@ class GeoNodeExecParams {
return value;
}
else {
+#ifdef DEBUG
+ this->check_input_access(identifier, &CPPType::get<T>());
+#endif
+ GMutablePointer gvalue = this->extract_input(identifier);
return gvalue.relocate_out<T>();
}
}
@@ -184,13 +188,13 @@ class GeoNodeExecParams {
*/
template<typename T> T get_input(StringRef identifier) const
{
-#ifdef DEBUG
- this->check_input_access(identifier, &CPPType::get<T>());
-#endif
GPointer gvalue = provider_->get_input(identifier);
if constexpr (std::is_same_v<T, int> || std::is_same_v<T, float> ||
std::is_same_v<T, float3> || std::is_same_v<T, ColorGeometry4f> ||
std::is_same_v<T, bool>) {
+#ifdef DEBUG
+ this->check_input_access(identifier, &CPPType::get<bke::FieldRef<T>>());
+#endif
BLI_assert(gvalue.is_type<bke::FieldRef<T>>());
bke::FieldRef<T> field = *gvalue.get<bke::FieldRef<T>>();
bke::FieldInputs inputs = field->prepare_inputs();
@@ -200,6 +204,9 @@ class GeoNodeExecParams {
return value;
}
else {
+#ifdef DEBUG
+ this->check_input_access(identifier, &CPPType::get<T>());
+#endif
BLI_assert(gvalue.is_type<T>());
return *(const T *)gvalue.get();
}
@@ -208,7 +215,7 @@ class GeoNodeExecParams {
template<typename T> bke::FieldRef<T> get_input_field(StringRef identifier) const
{
#ifdef DEBUG
- this->check_input_access(identifier, &CPPType::get<T>());
+ this->check_input_access(identifier, &CPPType::get<bke::FieldRef<T>>());
#endif
GPointer gvalue = provider_->get_input(identifier);
BLI_assert(gvalue.is_type<bke::FieldRef<T>>());
diff --git a/source/blender/nodes/NOD_type_callbacks.hh b/source/blender/nodes/NOD_type_callbacks.hh
index d1a4bd3ad7a..2be78f929db 100644
--- a/source/blender/nodes/NOD_type_callbacks.hh
+++ b/source/blender/nodes/NOD_type_callbacks.hh
@@ -27,10 +27,8 @@ namespace blender::nodes {
using fn::CPPType;
using fn::MFDataType;
-const CPPType *socket_cpp_type_get(const bNodeSocketType &stype);
std::optional<MFDataType> socket_mf_type_get(const bNodeSocketType &stype);
bool socket_is_mf_data_socket(const bNodeSocketType &stype);
-bool socket_cpp_value_get(const bNodeSocket &socket, void *r_value);
void socket_expand_in_mf_network(SocketMFNetworkBuilder &builder);
} // namespace blender::nodes
diff --git a/source/blender/nodes/intern/node_geometry_exec.cc b/source/blender/nodes/intern/node_geometry_exec.cc
index bd2b47d0e56..ffa20579acc 100644
--- a/source/blender/nodes/intern/node_geometry_exec.cc
+++ b/source/blender/nodes/intern/node_geometry_exec.cc
@@ -218,13 +218,12 @@ void GeoNodeExecParams::check_input_access(StringRef identifier,
BLI_assert_unreachable();
}
else if (requested_type != nullptr) {
- // const CPPType &expected_type = *socket_cpp_type_get(*found_socket->typeinfo);
- // if (*requested_type != expected_type) {
- // std::cout << "The requested type '" << requested_type->name() << "' is incorrect. Expected
- // '"
- // << expected_type.name() << "'.\n";
- // BLI_assert_unreachable();
- // }
+ const CPPType &expected_type = *found_socket->typeinfo->get_geometry_nodes_cpp_type();
+ if (*requested_type != expected_type) {
+ std::cout << "The requested type '" << requested_type->name() << "' is incorrect. Expected '"
+ << expected_type.name() << "'.\n";
+ BLI_assert_unreachable();
+ }
}
}
@@ -259,12 +258,12 @@ void GeoNodeExecParams::check_output_access(StringRef identifier, const CPPType
BLI_assert_unreachable();
}
else {
- // const CPPType &expected_type = *socket_cpp_type_get(*found_socket->typeinfo);
- // if (value_type != expected_type) {
- // std::cout << "The value type '" << value_type.name() << "' is incorrect. Expected '"
- // << expected_type.name() << "'.\n";
- // BLI_assert_unreachable();
- // }
+ const CPPType &expected_type = *found_socket->typeinfo->get_geometry_nodes_cpp_type();
+ if (value_type != expected_type) {
+ std::cout << "The value type '" << value_type.name() << "' is incorrect. Expected '"
+ << expected_type.name() << "'.\n";
+ BLI_assert_unreachable();
+ }
}
}
diff --git a/source/blender/nodes/intern/node_socket.cc b/source/blender/nodes/intern/node_socket.cc
index f0b0cd79fec..2202ef2b64a 100644
--- a/source/blender/nodes/intern/node_socket.cc
+++ b/source/blender/nodes/intern/node_socket.cc
@@ -608,8 +608,8 @@ static bNodeSocketType *make_socket_type_virtual()
static bNodeSocketType *make_socket_type_bool()
{
bNodeSocketType *socktype = make_standard_socket_type(SOCK_BOOLEAN, PROP_NONE);
- socktype->get_cpp_type = []() { return &blender::fn::CPPType::get<bool>(); };
- socktype->get_cpp_value = [](const bNodeSocket &socket, void *r_value) {
+ socktype->get_base_cpp_type = []() { return &blender::fn::CPPType::get<bool>(); };
+ socktype->get_base_cpp_value = [](const bNodeSocket &socket, void *r_value) {
*(bool *)r_value = ((bNodeSocketValueBoolean *)socket.default_value)->value;
};
socktype->get_geometry_nodes_cpp_type = []() {
@@ -617,7 +617,7 @@ static bNodeSocketType *make_socket_type_bool()
};
socktype->get_geometry_nodes_cpp_value = [](const bNodeSocket &socket, void *r_value) {
bool value;
- socket.typeinfo->get_cpp_value(socket, &value);
+ socket.typeinfo->get_base_cpp_value(socket, &value);
new (r_value) blender::bke::FieldRef<bool>(
blender::bke::FieldPtr{new blender::bke::ConstantField<bool>(value)});
};
@@ -627,8 +627,8 @@ static bNodeSocketType *make_socket_type_bool()
static bNodeSocketType *make_socket_type_float(PropertySubType subtype)
{
bNodeSocketType *socktype = make_standard_socket_type(SOCK_FLOAT, subtype);
- socktype->get_cpp_type = []() { return &blender::fn::CPPType::get<float>(); };
- socktype->get_cpp_value = [](const bNodeSocket &socket, void *r_value) {
+ socktype->get_base_cpp_type = []() { return &blender::fn::CPPType::get<float>(); };
+ socktype->get_base_cpp_value = [](const bNodeSocket &socket, void *r_value) {
*(float *)r_value = ((bNodeSocketValueFloat *)socket.default_value)->value;
};
socktype->get_geometry_nodes_cpp_type = []() {
@@ -636,7 +636,7 @@ static bNodeSocketType *make_socket_type_float(PropertySubType subtype)
};
socktype->get_geometry_nodes_cpp_value = [](const bNodeSocket &socket, void *r_value) {
float value;
- socket.typeinfo->get_cpp_value(sock
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list