Blender V5.0
NOD_geometry_nodes_values.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2025 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
7#include "BKE_geometry_set.hh"
8#include "BKE_node.hh"
11
12#include "BLI_color_types.hh"
15#include "BLI_memory_utils.hh"
16
17#include "FN_field.hh"
18#include "FN_lazy_function.hh"
19#include "FN_multi_function.hh"
20
24
25namespace blender {
26namespace bke {
28}
29namespace nodes {
30struct GeoNodesUserData;
31}
32} // namespace blender
33
34namespace blender::nodes {
35
36template<typename T> struct GeoNodesMultiInput {
37 using value_type = T;
39};
40template<typename T> constexpr bool is_GeoNodesMultiInput_v = false;
41template<typename T> constexpr bool is_GeoNodesMultiInput_v<GeoNodesMultiInput<T>> = true;
42
48 const mf::MultiFunction &fn,
49 const std::shared_ptr<mf::MultiFunction> &owned_fn,
52 GeoNodesUserData *user_data,
53 std::string &r_error_message);
54
56 const std::shared_ptr<mf::MultiFunction> &owned_fn,
57 const Span<bke::SocketValueVariant *> input_values,
58 const Span<bke::SocketValueVariant *> output_values,
59 GeoNodesUserData *user_data,
60 std::string &r_error_message)
61{
62 const mf::MultiFunction &fn = *owned_fn;
64 fn, std::move(owned_fn), input_values, output_values, user_data, r_error_message);
65}
66
68 const mf::MultiFunction &fn,
69 const Span<bke::SocketValueVariant *> input_values,
70 const Span<bke::SocketValueVariant *> output_values,
71 GeoNodesUserData *user_data,
72 std::string &r_error_message)
73{
75 fn, {}, input_values, output_values, user_data, r_error_message);
76}
77
82[[nodiscard]] std::optional<bke::SocketValueVariant> implicitly_convert_socket_value(
83 const bke::bNodeSocketType &from_type,
84 const bke::SocketValueVariant &from_value,
86
92 const bke::bNodeSocketType &from_type,
94 ResourceScope &scope);
95
96} // namespace blender::nodes
#define T
static Type to_type(const GPUType type)
bool execute_multi_function_on_value_variant(const MultiFunction &fn, const std::shared_ptr< MultiFunction > &owned_fn, const Span< SocketValueVariant * > input_values, const Span< SocketValueVariant * > output_values, GeoNodesUserData *user_data, std::string &r_error_message)
const LazyFunction * build_implicit_conversion_lazy_function(const bke::bNodeSocketType &from_type, const bke::bNodeSocketType &to_type, ResourceScope &scope)
std::optional< SocketValueVariant > implicitly_convert_socket_value(const bke::bNodeSocketType &from_type, const SocketValueVariant &from_value, const bke::bNodeSocketType &to_type)
constexpr bool is_GeoNodesMultiInput_v
Defines a socket type.
Definition BKE_node.hh:158