Refactor: Geometry Nodes: remove bNodeSocketType::geometry_nodes_cpp_type
This type was the same for every socket type supported by Geometry Nodes. It's always `SocketValueVariant` now. Therefore, it was unnecessary to s tore an explicit pointer to it. Pull Request: https://projects.blender.org/blender/blender/pulls/144458
This commit is contained in:
@@ -205,8 +205,6 @@ struct bNodeSocketType {
|
||||
const blender::CPPType *base_cpp_type = nullptr;
|
||||
/* Get the value of this socket in a generic way. */
|
||||
SocketGetCPPValueFunction get_base_cpp_value = nullptr;
|
||||
/* Get geometry nodes cpp type. */
|
||||
const blender::CPPType *geometry_nodes_cpp_type = nullptr;
|
||||
/* Get geometry nodes cpp value. */
|
||||
SocketGetGeometryNodesCPPValueFunction get_geometry_nodes_cpp_value = nullptr;
|
||||
/* Default value for this socket type. */
|
||||
|
||||
@@ -45,8 +45,7 @@ struct BundleItemValue {
|
||||
};
|
||||
|
||||
/**
|
||||
* A bundle is a map containing keys and their corresponding values. Values are stored as the type
|
||||
* they have in Geometry Nodes (#bNodeSocketType::geometry_nodes_cpp_type).
|
||||
* A bundle is a map containing keys and their corresponding values.
|
||||
*
|
||||
* The API also supports working with paths in nested bundles like `root/child/data`.
|
||||
*/
|
||||
|
||||
@@ -72,21 +72,6 @@ using bke::node_tree_reference_lifetimes::ReferenceLifetimesInfo;
|
||||
using bke::node_tree_reference_lifetimes::ReferenceSetInfo;
|
||||
using bke::node_tree_reference_lifetimes::ReferenceSetType;
|
||||
|
||||
static const CPPType *get_socket_cpp_type(const bke::bNodeSocketType &typeinfo)
|
||||
{
|
||||
const CPPType *type = typeinfo.geometry_nodes_cpp_type;
|
||||
if (type == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
BLI_assert(type->has_special_member_functions);
|
||||
return type;
|
||||
}
|
||||
|
||||
static const CPPType *get_socket_cpp_type(const bNodeSocket &socket)
|
||||
{
|
||||
return get_socket_cpp_type(*socket.typeinfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks which sockets of the node are available and creates corresponding inputs/outputs on the
|
||||
* lazy-function.
|
||||
@@ -102,13 +87,16 @@ static void lazy_function_interface_from_node(const bNode &node,
|
||||
if (!socket->is_available()) {
|
||||
continue;
|
||||
}
|
||||
const CPPType *type = get_socket_cpp_type(*socket);
|
||||
if (type == nullptr) {
|
||||
if (!socket->typeinfo->geometry_nodes_default_value) {
|
||||
continue;
|
||||
}
|
||||
const CPPType *type;
|
||||
if (socket->is_multi_input() && !is_muted) {
|
||||
type = &CPPType::get<GeoNodesMultiInput<SocketValueVariant>>();
|
||||
}
|
||||
else {
|
||||
type = &CPPType::get<SocketValueVariant>();
|
||||
}
|
||||
r_lf_index_by_bsocket[socket->index_in_tree()] = r_inputs.append_and_get_index_as(
|
||||
socket->name, *type, input_usage);
|
||||
}
|
||||
@@ -116,12 +104,11 @@ static void lazy_function_interface_from_node(const bNode &node,
|
||||
if (!socket->is_available()) {
|
||||
continue;
|
||||
}
|
||||
const CPPType *type = get_socket_cpp_type(*socket);
|
||||
if (type == nullptr) {
|
||||
if (!socket->typeinfo->geometry_nodes_default_value) {
|
||||
continue;
|
||||
}
|
||||
r_lf_index_by_bsocket[socket->index_in_tree()] = r_outputs.append_and_get_index_as(
|
||||
socket->name, *type);
|
||||
socket->name, CPPType::get<SocketValueVariant>());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,11 +339,11 @@ class LazyFunctionForMultiInput : public LazyFunction {
|
||||
*/
|
||||
class LazyFunctionForRerouteNode : public LazyFunction {
|
||||
public:
|
||||
LazyFunctionForRerouteNode(const CPPType &type)
|
||||
LazyFunctionForRerouteNode()
|
||||
{
|
||||
debug_name_ = "Reroute";
|
||||
inputs_.append({"Input", type});
|
||||
outputs_.append({"Output", type});
|
||||
inputs_.append({"Input", CPPType::get<SocketValueVariant>()});
|
||||
outputs_.append({"Output", CPPType::get<SocketValueVariant>()});
|
||||
}
|
||||
|
||||
void execute_impl(lf::Params ¶ms, const lf::Context & /*context*/) const override
|
||||
@@ -613,11 +600,11 @@ const LazyFunction *build_implicit_conversion_lazy_function(const bke::bNodeSock
|
||||
const bke::bNodeSocketType &to_type,
|
||||
ResourceScope &scope)
|
||||
{
|
||||
if (!from_type.geometry_nodes_cpp_type || !to_type.geometry_nodes_cpp_type) {
|
||||
if (!from_type.geometry_nodes_default_value || !to_type.geometry_nodes_default_value) {
|
||||
return nullptr;
|
||||
}
|
||||
if (from_type.type == to_type.type) {
|
||||
return &scope.construct<LazyFunctionForRerouteNode>(*from_type.geometry_nodes_cpp_type);
|
||||
return &scope.construct<LazyFunctionForRerouteNode>();
|
||||
}
|
||||
const bke::DataTypeConversions &conversions = bke::get_implicit_type_conversions();
|
||||
const CPPType &from_base_type = *from_type.base_cpp_type;
|
||||
@@ -979,14 +966,13 @@ class LazyFunctionForGizmoNode : public LazyFunction {
|
||||
if (link->fromnode->is_dangling_reroute()) {
|
||||
continue;
|
||||
}
|
||||
inputs_.append_and_get_index_as(gizmo_socket.identifier,
|
||||
*gizmo_socket.typeinfo->geometry_nodes_cpp_type,
|
||||
lf::ValueUsage::Maybe);
|
||||
inputs_.append_and_get_index_as(
|
||||
gizmo_socket.identifier, CPPType::get<SocketValueVariant>(), lf::ValueUsage::Maybe);
|
||||
gizmo_links.append(link);
|
||||
}
|
||||
for (const bNodeSocket *socket : bnode.input_sockets().drop_front(1)) {
|
||||
r_lf_index_by_bsocket[socket->index_in_tree()] = inputs_.append_and_get_index_as(
|
||||
socket->identifier, *socket->typeinfo->geometry_nodes_cpp_type, lf::ValueUsage::Maybe);
|
||||
socket->identifier, CPPType::get<SocketValueVariant>(), lf::ValueUsage::Maybe);
|
||||
}
|
||||
r_lf_index_by_bsocket[bnode.output_socket(0).index_in_tree()] =
|
||||
outputs_.append_and_get_index_as("Transform", CPPType::get<SocketValueVariant>());
|
||||
@@ -1647,7 +1633,7 @@ static bool ignore_zone_bsocket(const bNodeSocket &bsocket)
|
||||
if (!bsocket.is_available()) {
|
||||
return true;
|
||||
}
|
||||
if (!bsocket.typeinfo->geometry_nodes_cpp_type) {
|
||||
if (!bsocket.typeinfo->geometry_nodes_default_value) {
|
||||
/* These are typically extend sockets. */
|
||||
return true;
|
||||
}
|
||||
@@ -1666,25 +1652,22 @@ void initialize_zone_wrapper(const bNodeTreeZone &zone,
|
||||
continue;
|
||||
}
|
||||
zone_info.indices.inputs.main.append(r_inputs.append_and_get_index_as(
|
||||
socket->name, *socket->typeinfo->geometry_nodes_cpp_type, lf::ValueUsage::Maybe));
|
||||
socket->name, CPPType::get<SocketValueVariant>(), lf::ValueUsage::Maybe));
|
||||
}
|
||||
|
||||
for (const bNodeLink *link : zone.border_links) {
|
||||
zone_info.indices.inputs.border_links.append(
|
||||
r_inputs.append_and_get_index_as(link->fromsock->name,
|
||||
*link->tosock->typeinfo->geometry_nodes_cpp_type,
|
||||
lf::ValueUsage::Maybe));
|
||||
zone_info.indices.inputs.border_links.append(r_inputs.append_and_get_index_as(
|
||||
link->fromsock->name, CPPType::get<SocketValueVariant>(), lf::ValueUsage::Maybe));
|
||||
}
|
||||
|
||||
for (const bNodeSocket *socket : zone.output_node()->output_sockets()) {
|
||||
if (ignore_zone_bsocket(*socket)) {
|
||||
continue;
|
||||
}
|
||||
const CPPType *cpp_type = socket->typeinfo->geometry_nodes_cpp_type;
|
||||
zone_info.indices.inputs.output_usages.append(
|
||||
r_inputs.append_and_get_index_as("Usage", CPPType::get<bool>(), lf::ValueUsage::Maybe));
|
||||
zone_info.indices.outputs.main.append(
|
||||
r_outputs.append_and_get_index_as(socket->name, *cpp_type));
|
||||
r_outputs.append_and_get_index_as(socket->name, CPPType::get<SocketValueVariant>()));
|
||||
}
|
||||
|
||||
for ([[maybe_unused]] const bNodeSocket *socket : zone.input_node()->input_sockets()) {
|
||||
@@ -2068,7 +2051,7 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
if (zone.input_node() != nullptr) {
|
||||
for (const bNodeSocket *bsocket : zone.input_node()->input_sockets().drop_back(1)) {
|
||||
zone_info.indices.inputs.main.append(lf_zone_inputs.append_and_get_index(
|
||||
&lf_graph.add_input(*bsocket->typeinfo->geometry_nodes_cpp_type, bsocket->name)));
|
||||
&lf_graph.add_input(CPPType::get<SocketValueVariant>(), bsocket->name)));
|
||||
zone_info.indices.outputs.input_usages.append(lf_zone_outputs.append_and_get_index(
|
||||
&lf_graph.add_output(CPPType::get<bool>(), "Usage: " + StringRef(bsocket->name))));
|
||||
}
|
||||
@@ -2081,7 +2064,7 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
|
||||
for (const bNodeSocket *bsocket : zone.output_node()->output_sockets().drop_back(1)) {
|
||||
zone_info.indices.outputs.main.append(lf_zone_outputs.append_and_get_index(
|
||||
&lf_graph.add_output(*bsocket->typeinfo->geometry_nodes_cpp_type, bsocket->name)));
|
||||
&lf_graph.add_output(CPPType::get<SocketValueVariant>(), bsocket->name)));
|
||||
zone_info.indices.inputs.output_usages.append(lf_zone_inputs.append_and_get_index(
|
||||
&lf_graph.add_input(CPPType::get<bool>(), "Usage: " + StringRef(bsocket->name))));
|
||||
}
|
||||
@@ -2239,8 +2222,8 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
if (ignore_zone_bsocket(*bsocket)) {
|
||||
continue;
|
||||
}
|
||||
lf::GraphInputSocket &lf_input = lf_body_graph.add_input(
|
||||
*bsocket->typeinfo->geometry_nodes_cpp_type, bsocket->name);
|
||||
lf::GraphInputSocket &lf_input = lf_body_graph.add_input(CPPType::get<SocketValueVariant>(),
|
||||
bsocket->name);
|
||||
lf::GraphOutputSocket &lf_input_usage = lf_body_graph.add_output(
|
||||
CPPType::get<bool>(), "Usage: " + StringRef(bsocket->name));
|
||||
body_fn.indices.inputs.main.append(lf_body_inputs.append_and_get_index(&lf_input));
|
||||
@@ -2259,7 +2242,7 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
continue;
|
||||
}
|
||||
lf::GraphOutputSocket &lf_output = lf_body_graph.add_output(
|
||||
*bsocket->typeinfo->geometry_nodes_cpp_type, bsocket->name);
|
||||
CPPType::get<SocketValueVariant>(), bsocket->name);
|
||||
lf::GraphInputSocket &lf_output_usage = lf_body_graph.add_input(
|
||||
CPPType::get<bool>(), "Usage: " + StringRef(bsocket->name));
|
||||
graph_params.lf_inputs_by_bsocket.add(bsocket, &lf_output);
|
||||
@@ -2344,7 +2327,7 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
{
|
||||
for (const bNodeLink *border_link : zone.border_links) {
|
||||
r_indices.append(r_lf_graph_inputs.append_and_get_index(
|
||||
&lf_graph.add_input(*border_link->tosock->typeinfo->geometry_nodes_cpp_type,
|
||||
&lf_graph.add_input(CPPType::get<SocketValueVariant>(),
|
||||
StringRef("Link from ") + border_link->fromsock->name)));
|
||||
}
|
||||
}
|
||||
@@ -2829,9 +2812,8 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
{
|
||||
const Span<const bNodeTreeInterfaceSocket *> interface_inputs = btree_.interface_inputs();
|
||||
for (const bNodeTreeInterfaceSocket *interface_input : interface_inputs) {
|
||||
const bke::bNodeSocketType *typeinfo = interface_input->socket_typeinfo();
|
||||
lf::GraphInputSocket &lf_socket = lf_graph.add_input(
|
||||
*typeinfo->geometry_nodes_cpp_type, interface_input->name ? interface_input->name : "");
|
||||
CPPType::get<SocketValueVariant>(), interface_input->name ? interface_input->name : "");
|
||||
group_input_sockets_.append(&lf_socket);
|
||||
}
|
||||
}
|
||||
@@ -2844,14 +2826,10 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
{
|
||||
for (const bNodeTreeInterfaceSocket *interface_output : btree_.interface_outputs()) {
|
||||
const bke::bNodeSocketType *typeinfo = interface_output->socket_typeinfo();
|
||||
const CPPType &type = *typeinfo->geometry_nodes_cpp_type;
|
||||
lf::GraphOutputSocket &lf_socket = lf_graph.add_output(
|
||||
type, interface_output->name ? interface_output->name : "");
|
||||
const void *default_value = typeinfo->geometry_nodes_default_value;
|
||||
if (default_value == nullptr) {
|
||||
default_value = type.default_value();
|
||||
}
|
||||
lf_socket.set_default_value(default_value);
|
||||
CPPType::get<SocketValueVariant>(),
|
||||
interface_output->name ? interface_output->name : "");
|
||||
lf_socket.set_default_value(typeinfo->geometry_nodes_default_value);
|
||||
standard_group_output_sockets_.append(&lf_socket);
|
||||
}
|
||||
}
|
||||
@@ -3002,12 +2980,11 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
{
|
||||
const bNodeSocket &input_bsocket = bnode.input_socket(0);
|
||||
const bNodeSocket &output_bsocket = bnode.output_socket(0);
|
||||
const CPPType *type = get_socket_cpp_type(input_bsocket);
|
||||
if (type == nullptr) {
|
||||
if (!input_bsocket.typeinfo->geometry_nodes_default_value) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto &lazy_function = scope_.construct<LazyFunctionForRerouteNode>(*type);
|
||||
auto &lazy_function = scope_.construct<LazyFunctionForRerouteNode>();
|
||||
lf::Node &lf_node = graph_params.lf_graph.add_function(lazy_function);
|
||||
|
||||
lf::InputSocket &lf_input = lf_node.input(0);
|
||||
@@ -3042,10 +3019,8 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
for (const int i : btree_.interface_outputs().index_range()) {
|
||||
const bNodeTreeInterfaceSocket &interface_output = *btree_.interface_outputs()[i];
|
||||
const bNodeSocket &bsocket = bnode.input_socket(i);
|
||||
const bke::bNodeSocketType *typeinfo = interface_output.socket_typeinfo();
|
||||
const CPPType &type = *typeinfo->geometry_nodes_cpp_type;
|
||||
lf::GraphOutputSocket &lf_socket = graph_params.lf_graph.add_output(
|
||||
type, interface_output.name ? interface_output.name : "");
|
||||
CPPType::get<SocketValueVariant>(), interface_output.name ? interface_output.name : "");
|
||||
lf_graph_outputs.append(&lf_socket);
|
||||
graph_params.lf_inputs_by_bsocket.add(&bsocket, &lf_socket);
|
||||
mapping_->bsockets_by_lf_socket_map.add(&lf_socket, &bsocket);
|
||||
@@ -3757,10 +3732,10 @@ struct GeometryNodesLazyFunctionBuilder {
|
||||
const Vector<TypeWithLinks> types_with_links = this->group_link_targets_by_type(from_bsocket);
|
||||
|
||||
for (const TypeWithLinks &type_with_links : types_with_links) {
|
||||
if (type_with_links.typeinfo == nullptr) {
|
||||
if (!type_with_links.typeinfo) {
|
||||
continue;
|
||||
}
|
||||
if (type_with_links.typeinfo->geometry_nodes_cpp_type == nullptr) {
|
||||
if (!type_with_links.typeinfo->geometry_nodes_default_value) {
|
||||
continue;
|
||||
}
|
||||
const bke::bNodeSocketType &to_typeinfo = *type_with_links.typeinfo;
|
||||
@@ -4211,13 +4186,13 @@ const GeometryNodesLazyFunctionGraphInfo *ensure_geometry_nodes_lazy_function_gr
|
||||
}
|
||||
for (const bNodeTreeInterfaceSocket *interface_bsocket : btree.interface_inputs()) {
|
||||
const bke::bNodeSocketType *typeinfo = interface_bsocket->socket_typeinfo();
|
||||
if (!typeinfo || !typeinfo->geometry_nodes_cpp_type) {
|
||||
if (!typeinfo || !typeinfo->geometry_nodes_default_value) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
for (const bNodeTreeInterfaceSocket *interface_bsocket : btree.interface_outputs()) {
|
||||
const bke::bNodeSocketType *typeinfo = interface_bsocket->socket_typeinfo();
|
||||
if (!typeinfo || !typeinfo->geometry_nodes_cpp_type) {
|
||||
if (!typeinfo || !typeinfo->geometry_nodes_default_value) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -968,7 +968,6 @@ static bke::bNodeSocketType *make_socket_type_bool()
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(bool *)r_value = ((bNodeSocketValueBoolean *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
const bool value = ((bNodeSocketValueBoolean *)socket_value)->value;
|
||||
return SocketValueVariant(value);
|
||||
@@ -987,7 +986,6 @@ static bke::bNodeSocketType *make_socket_type_rotation()
|
||||
const math::EulerXYZ euler(float3(typed_value.value_euler));
|
||||
*static_cast<math::Quaternion *>(r_value) = math::to_quaternion(euler);
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
const auto &typed_value = *(bNodeSocketValueRotation *)socket_value;
|
||||
const math::EulerXYZ euler(float3(typed_value.value_euler));
|
||||
@@ -1006,7 +1004,6 @@ static bke::bNodeSocketType *make_socket_type_matrix()
|
||||
socktype->get_base_cpp_value = [](const void * /*socket_value*/, void *r_value) {
|
||||
*static_cast<float4x4 *>(r_value) = float4x4::identity();
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void * /*socket_value*/) {
|
||||
return SocketValueVariant(float4x4::identity());
|
||||
};
|
||||
@@ -1022,7 +1019,6 @@ static bke::bNodeSocketType *make_socket_type_bundle()
|
||||
socktype->get_base_cpp_value = [](const void * /*socket_value*/, void *r_value) {
|
||||
new (r_value) nodes::BundlePtr();
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void * /*socket_value*/) {
|
||||
return SocketValueVariant::From(nodes::BundlePtr());
|
||||
};
|
||||
@@ -1038,7 +1034,6 @@ static bke::bNodeSocketType *make_socket_type_closure()
|
||||
socktype->get_base_cpp_value = [](const void * /*socket_value*/, void *r_value) {
|
||||
new (r_value) nodes::ClosurePtr();
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void * /*socket_value*/) {
|
||||
return SocketValueVariant::From(nodes::ClosurePtr());
|
||||
};
|
||||
@@ -1054,7 +1049,6 @@ static bke::bNodeSocketType *make_socket_type_float(PropertySubType subtype)
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(float *)r_value = ((bNodeSocketValueFloat *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
const float value = ((bNodeSocketValueFloat *)socket_value)->value;
|
||||
return SocketValueVariant(value);
|
||||
@@ -1071,7 +1065,6 @@ static bke::bNodeSocketType *make_socket_type_int(PropertySubType subtype)
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(int *)r_value = ((bNodeSocketValueInt *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
const int value = ((bNodeSocketValueInt *)socket_value)->value;
|
||||
return SocketValueVariant(value);
|
||||
@@ -1088,7 +1081,6 @@ static bke::bNodeSocketType *make_socket_type_vector(PropertySubType subtype, co
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(blender::float3 *)r_value = ((bNodeSocketValueVector *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
const blender::float3 value = ((bNodeSocketValueVector *)socket_value)->value;
|
||||
return SocketValueVariant(value);
|
||||
@@ -1105,7 +1097,6 @@ static bke::bNodeSocketType *make_socket_type_rgba()
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(blender::ColorGeometry4f *)r_value = ((bNodeSocketValueRGBA *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
const blender::ColorGeometry4f value = ((bNodeSocketValueRGBA *)socket_value)->value;
|
||||
return SocketValueVariant(value);
|
||||
@@ -1122,7 +1113,6 @@ static bke::bNodeSocketType *make_socket_type_string(PropertySubType subtype)
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
new (r_value) std::string(((bNodeSocketValueString *)socket_value)->value);
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
std::string value = ((bNodeSocketValueString *)socket_value)->value;
|
||||
return SocketValueVariant(value);
|
||||
@@ -1139,7 +1129,6 @@ static bke::bNodeSocketType *make_socket_type_menu()
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(int *)r_value = ((bNodeSocketValueMenu *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
const int value = ((bNodeSocketValueMenu *)socket_value)->value;
|
||||
return SocketValueVariant(value);
|
||||
@@ -1156,7 +1145,6 @@ static bke::bNodeSocketType *make_socket_type_object()
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(Object **)r_value = ((bNodeSocketValueObject *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
Object *object = static_cast<const bNodeSocketValueObject *>(socket_value)->value;
|
||||
return SocketValueVariant::From(object);
|
||||
@@ -1174,7 +1162,6 @@ static bke::bNodeSocketType *make_socket_type_geometry()
|
||||
socktype->get_base_cpp_value = [](const void * /*socket_value*/, void *r_value) {
|
||||
new (r_value) blender::bke::GeometrySet();
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void * /*socket_value*/) {
|
||||
return SocketValueVariant::From(bke::GeometrySet());
|
||||
};
|
||||
@@ -1190,7 +1177,6 @@ static bke::bNodeSocketType *make_socket_type_collection()
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(Collection **)r_value = ((bNodeSocketValueCollection *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
Collection *collection = static_cast<const bNodeSocketValueCollection *>(socket_value)->value;
|
||||
return SocketValueVariant::From(collection);
|
||||
@@ -1208,7 +1194,6 @@ static bke::bNodeSocketType *make_socket_type_texture()
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(Tex **)r_value = ((bNodeSocketValueTexture *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
Tex *texture = static_cast<const bNodeSocketValueTexture *>(socket_value)->value;
|
||||
return SocketValueVariant::From(texture);
|
||||
@@ -1225,7 +1210,6 @@ static bke::bNodeSocketType *make_socket_type_image()
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(Image **)r_value = ((bNodeSocketValueImage *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
Image *image = static_cast<const bNodeSocketValueImage *>(socket_value)->value;
|
||||
return SocketValueVariant::From(image);
|
||||
@@ -1243,7 +1227,6 @@ static bke::bNodeSocketType *make_socket_type_material()
|
||||
socktype->get_base_cpp_value = [](const void *socket_value, void *r_value) {
|
||||
*(Material **)r_value = ((bNodeSocketValueMaterial *)socket_value)->value;
|
||||
};
|
||||
socktype->geometry_nodes_cpp_type = &blender::CPPType::get<SocketValueVariant>();
|
||||
socktype->get_geometry_nodes_cpp_value = [](const void *socket_value) {
|
||||
Material *material = static_cast<const bNodeSocketValueMaterial *>(socket_value)->value;
|
||||
return SocketValueVariant::From(material);
|
||||
|
||||
Reference in New Issue
Block a user