Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/node.cc
| Show First 20 Lines • Show All 481 Lines • ▼ Show 20 Lines | |||||
| static void write_node_socket(BlendWriter *writer, bNodeSocket *sock) | static void write_node_socket(BlendWriter *writer, bNodeSocket *sock) | ||||
| { | { | ||||
| BLO_write_struct(writer, bNodeSocket, sock); | BLO_write_struct(writer, bNodeSocket, sock); | ||||
| if (sock->prop) { | if (sock->prop) { | ||||
| IDP_BlendWrite(writer, sock->prop); | IDP_BlendWrite(writer, sock->prop); | ||||
| } | } | ||||
| /* This property should only be used for group node "interface" sockets. */ | |||||
| BLI_assert(sock->default_attribute_name == nullptr); | |||||
| write_node_socket_default_value(writer, sock); | write_node_socket_default_value(writer, sock); | ||||
| } | } | ||||
| static void write_node_socket_interface(BlendWriter *writer, bNodeSocket *sock) | static void write_node_socket_interface(BlendWriter *writer, bNodeSocket *sock) | ||||
| { | { | ||||
| BLO_write_struct(writer, bNodeSocket, sock); | BLO_write_struct(writer, bNodeSocket, sock); | ||||
| if (sock->prop) { | if (sock->prop) { | ||||
| IDP_BlendWrite(writer, sock->prop); | IDP_BlendWrite(writer, sock->prop); | ||||
| } | } | ||||
| BLO_write_string(writer, sock->default_attribute_name); | |||||
| write_node_socket_default_value(writer, sock); | write_node_socket_default_value(writer, sock); | ||||
| } | } | ||||
| void ntreeBlendWrite(BlendWriter *writer, bNodeTree *ntree) | void ntreeBlendWrite(BlendWriter *writer, bNodeTree *ntree) | ||||
| { | { | ||||
| BKE_id_blend_write(writer, &ntree->id); | BKE_id_blend_write(writer, &ntree->id); | ||||
| if (ntree->adt) { | if (ntree->adt) { | ||||
| ▲ Show 20 Lines • Show All 137 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| BLO_read_data_address(reader, &sock->prop); | BLO_read_data_address(reader, &sock->prop); | ||||
| IDP_BlendDataRead(reader, &sock->prop); | IDP_BlendDataRead(reader, &sock->prop); | ||||
| BLO_read_data_address(reader, &sock->link); | BLO_read_data_address(reader, &sock->link); | ||||
| sock->typeinfo = nullptr; | sock->typeinfo = nullptr; | ||||
| BLO_read_data_address(reader, &sock->storage); | BLO_read_data_address(reader, &sock->storage); | ||||
| BLO_read_data_address(reader, &sock->default_value); | BLO_read_data_address(reader, &sock->default_value); | ||||
| BLO_read_data_address(reader, &sock->default_attribute_name); | |||||
| sock->total_inputs = 0; /* Clear runtime data set before drawing. */ | sock->total_inputs = 0; /* Clear runtime data set before drawing. */ | ||||
| sock->cache = nullptr; | sock->cache = nullptr; | ||||
| sock->declaration = nullptr; | sock->declaration = nullptr; | ||||
| } | } | ||||
| void ntreeBlendReadData(BlendDataReader *reader, bNodeTree *ntree) | void ntreeBlendReadData(BlendDataReader *reader, bNodeTree *ntree) | ||||
| { | { | ||||
| /* NOTE: writing and reading goes in sync, for speed. */ | /* NOTE: writing and reading goes in sync, for speed. */ | ||||
| ▲ Show 20 Lines • Show All 1,495 Lines • ▼ Show 20 Lines | static void node_socket_copy(bNodeSocket *sock_dst, const bNodeSocket *sock_src, const int flag) | ||||
| if (sock_src->default_value) { | if (sock_src->default_value) { | ||||
| sock_dst->default_value = MEM_dupallocN(sock_src->default_value); | sock_dst->default_value = MEM_dupallocN(sock_src->default_value); | ||||
| if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) { | if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) { | ||||
| socket_id_user_increment(sock_dst); | socket_id_user_increment(sock_dst); | ||||
| } | } | ||||
| } | } | ||||
| sock_dst->default_attribute_name = static_cast<char *>( | |||||
| MEM_dupallocN(sock_src->default_attribute_name)); | |||||
| sock_dst->stack_index = 0; | sock_dst->stack_index = 0; | ||||
| /* XXX some compositor nodes (e.g. image, render layers) still store | /* XXX some compositor nodes (e.g. image, render layers) still store | ||||
| * some persistent buffer data here, need to clear this to avoid dangling pointers. */ | * some persistent buffer data here, need to clear this to avoid dangling pointers. */ | ||||
| sock_dst->cache = nullptr; | sock_dst->cache = nullptr; | ||||
| } | } | ||||
| namespace blender::bke { | namespace blender::bke { | ||||
| ▲ Show 20 Lines • Show All 2,807 Lines • Show Last 20 Lines | |||||