Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharlie Jolly <charlie>2021-10-14 16:18:24 +0300
committerCharlie Jolly <mistajolly@gmail.com>2021-10-14 16:19:32 +0300
commit25a255c32a73b9d964d9f8a4733c4a42dfdc2f4f (patch)
tree4259bd7d57353c2664d1c095d1800d3bcacfaa32 /source/blender/nodes/intern/node_socket.cc
parent138aa209592ef3c2232007a9723659116d986d16 (diff)
Nodes: add boilerplate for image sockets
The sockets are not exposed in any nodes yet. They work similar to the Object/Collection/Texture sockets, which also just reference a data block. Based on rB207472930834 Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D12861
Diffstat (limited to 'source/blender/nodes/intern/node_socket.cc')
-rw-r--r--source/blender/nodes/intern/node_socket.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/source/blender/nodes/intern/node_socket.cc b/source/blender/nodes/intern/node_socket.cc
index 4334f1b5030..11356178d87 100644
--- a/source/blender/nodes/intern/node_socket.cc
+++ b/source/blender/nodes/intern/node_socket.cc
@@ -808,6 +808,7 @@ static bNodeSocketType *make_socket_type_string()
MAKE_CPP_TYPE(Object, Object *, CPPTypeFlags::BasicType)
MAKE_CPP_TYPE(Collection, Collection *, CPPTypeFlags::BasicType)
MAKE_CPP_TYPE(Texture, Tex *, CPPTypeFlags::BasicType)
+MAKE_CPP_TYPE(Image, Image *, CPPTypeFlags::BasicType)
MAKE_CPP_TYPE(Material, Material *, CPPTypeFlags::BasicType)
static bNodeSocketType *make_socket_type_object()
@@ -858,6 +859,18 @@ static bNodeSocketType *make_socket_type_texture()
return socktype;
}
+static bNodeSocketType *make_socket_type_image()
+{
+ bNodeSocketType *socktype = make_standard_socket_type(SOCK_IMAGE, PROP_NONE);
+ socktype->get_base_cpp_type = []() { return &blender::fn::CPPType::get<Image *>(); };
+ socktype->get_base_cpp_value = [](const bNodeSocket &socket, void *r_value) {
+ *(Image **)r_value = ((bNodeSocketValueImage *)socket.default_value)->value;
+ };
+ socktype->get_geometry_nodes_cpp_type = socktype->get_base_cpp_type;
+ socktype->get_geometry_nodes_cpp_value = socktype->get_base_cpp_value;
+ return socktype;
+}
+
static bNodeSocketType *make_socket_type_material()
{
bNodeSocketType *socktype = make_standard_socket_type(SOCK_MATERIAL, PROP_NONE);
@@ -906,14 +919,14 @@ void register_standard_node_socket_types(void)
nodeRegisterSocketType(make_socket_type_object());
- nodeRegisterSocketType(make_standard_socket_type(SOCK_IMAGE, PROP_NONE));
-
nodeRegisterSocketType(make_socket_type_geometry());
nodeRegisterSocketType(make_socket_type_collection());
nodeRegisterSocketType(make_socket_type_texture());
+ nodeRegisterSocketType(make_socket_type_image());
+
nodeRegisterSocketType(make_socket_type_material());
nodeRegisterSocketType(make_socket_type_virtual());