diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-10-27 13:40:42 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-10-27 13:40:42 +0300 |
commit | 30f626fe4cd62f406468ef0ff2169694424b1a29 (patch) | |
tree | d428586cd3a6e689ab1e2f5a4222d1e0eb77ada7 /intern/cycles/graph/node.cpp | |
parent | 17381c7b90eb3acde53eca013ae5a5a55699f17d (diff) |
Revert "Cycles API: encapsulate Node socket members"
This reverts commit 527f8b32b32187f754e5b176db6377736f9cb8ff. It is causing
motion blur test failures and crashes in some renders, reverting until this is
fixed.
Diffstat (limited to 'intern/cycles/graph/node.cpp')
-rw-r--r-- | intern/cycles/graph/node.cpp | 85 |
1 files changed, 5 insertions, 80 deletions
diff --git a/intern/cycles/graph/node.cpp b/intern/cycles/graph/node.cpp index 8c355b66f13..f239040ee3d 100644 --- a/intern/cycles/graph/node.cpp +++ b/intern/cycles/graph/node.cpp @@ -52,6 +52,11 @@ Node::~Node() { } +template<typename T> static T &get_socket_value(const Node *node, const SocketType &socket) +{ + return (T &)*(((char *)node) + socket.struct_offset); +} + #ifndef NDEBUG static bool is_socket_float3(const SocketType &socket) { @@ -382,86 +387,6 @@ void Node::copy_value(const SocketType &socket, const Node &other, const SocketT } } -void Node::set_value(const SocketType &socket, const Node &other, const SocketType &other_socket) -{ - assert(socket.type == other_socket.type); - - if (socket.is_array()) { - switch (socket.type) { - case SocketType::BOOLEAN_ARRAY: - set(socket, get_socket_value<array<bool>>(&other, socket)); - break; - case SocketType::FLOAT_ARRAY: - set(socket, get_socket_value<array<float>>(&other, socket)); - break; - case SocketType::INT_ARRAY: - set(socket, get_socket_value<array<int>>(&other, socket)); - break; - case SocketType::COLOR_ARRAY: - case SocketType::VECTOR_ARRAY: - case SocketType::POINT_ARRAY: - case SocketType::NORMAL_ARRAY: - set(socket, get_socket_value<array<float3>>(&other, socket)); - break; - case SocketType::POINT2_ARRAY: - set(socket, get_socket_value<array<float2>>(&other, socket)); - break; - case SocketType::STRING_ARRAY: - set(socket, get_socket_value<array<ustring>>(&other, socket)); - break; - case SocketType::TRANSFORM_ARRAY: - set(socket, get_socket_value<array<Transform>>(&other, socket)); - break; - case SocketType::NODE_ARRAY: - set(socket, get_socket_value<array<Node *>>(&other, socket)); - break; - default: - assert(0); - break; - } - } - else { - switch (socket.type) { - case SocketType::BOOLEAN: - set(socket, get_socket_value<bool>(&other, socket)); - break; - case SocketType::FLOAT: - set(socket, get_socket_value<float>(&other, socket)); - break; - case SocketType::INT: - set(socket, get_socket_value<int>(&other, socket)); - break; - case SocketType::UINT: - set(socket, get_socket_value<uint>(&other, socket)); - break; - case SocketType::COLOR: - case SocketType::VECTOR: - case SocketType::POINT: - case SocketType::NORMAL: - set(socket, get_socket_value<float3>(&other, socket)); - break; - case SocketType::POINT2: - set(socket, get_socket_value<float2>(&other, socket)); - break; - case SocketType::STRING: - set(socket, get_socket_value<ustring>(&other, socket)); - break; - case SocketType::ENUM: - set(socket, get_socket_value<int>(&other, socket)); - break; - case SocketType::TRANSFORM: - set(socket, get_socket_value<Transform>(&other, socket)); - break; - case SocketType::NODE: - set(socket, get_socket_value<Node *>(&other, socket)); - break; - default: - assert(0); - break; - } - } -} - template<typename T> static bool is_array_equal(const Node *node, const Node *other, const SocketType &socket) { |