Since 9fd7a093c9 this id can be derived automatically from the corresponding C++ type.
Pull Request: https://projects.blender.org/blender/blender/pulls/138760
36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
/* SPDX-FileCopyrightText: 2024 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#pragma once
|
|
|
|
#include "BLO_read_write.hh"
|
|
|
|
#include "NOD_socket_items.hh"
|
|
|
|
namespace blender::nodes::socket_items {
|
|
|
|
template<typename Accessor> inline void blend_write(BlendWriter *writer, const bNode &node)
|
|
{
|
|
using ItemT = typename Accessor::ItemT;
|
|
const SocketItemsRef<ItemT> items = Accessor::get_items_from_node(const_cast<bNode &>(node));
|
|
BLO_write_struct_array_by_id(
|
|
writer, dna::sdna_struct_id_get<ItemT>(), *items.items_num, *items.items);
|
|
for (const ItemT &item : Span(*items.items, *items.items_num)) {
|
|
Accessor::blend_write_item(writer, item);
|
|
}
|
|
}
|
|
|
|
template<typename Accessor> inline void blend_read_data(BlendDataReader *reader, bNode &node)
|
|
{
|
|
using ItemT = typename Accessor::ItemT;
|
|
const SocketItemsRef<ItemT> items = Accessor::get_items_from_node(node);
|
|
*items.items = static_cast<ItemT *>(
|
|
BLO_read_struct_array_with_size(reader, *items.items, sizeof(ItemT) * *items.items_num));
|
|
for (ItemT &item : MutableSpan(*items.items, *items.items_num)) {
|
|
Accessor::blend_read_data_item(reader, item);
|
|
}
|
|
}
|
|
|
|
} // namespace blender::nodes::socket_items
|