Files
2026-08-12 04:47:48 -04:00

91 lines
2.0 KiB
C++

/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup bke
*/
#include "DNA_sound_types.h"
#include "DNA_speaker_types.h"
#include "BLI_utildefines.h"
#include "BLT_translation.hh"
#include "BKE_idtype.hh"
#include "BKE_lib_id.hh"
#include "BKE_lib_query.hh"
#include "BKE_speaker.hh"
#include "BLO_read_write.hh"
#include <cstring>
namespace blender {
static void speaker_init_data(ID *id)
{
Speaker *speaker = id_cast<Speaker *>(id);
INIT_DEFAULT_STRUCT_AFTER(speaker, id);
}
static void speaker_foreach_id(ID *id, LibraryForeachIDData *data)
{
Speaker *speaker = id_cast<Speaker *>(id);
BKE_LIB_FOREACHID_PROCESS_IDSUPER(data, speaker->sound, IDWALK_CB_USER);
}
static void speaker_blend_write(BlendWriter *writer, ID *id, const void *id_address)
{
Speaker *spk = id_cast<Speaker *>(id);
/* write LibData */
writer->write_id_struct(id_address, spk);
BKE_id_blend_write(writer, &spk->id);
}
IDTypeInfo IDType_ID_SPK = {
.id_code = Speaker::id_type,
.id_filter = FILTER_ID_SPK,
.dependencies_id_types = FILTER_ID_SO,
.main_listbase_index = INDEX_ID_SPK,
.struct_size = sizeof(Speaker),
.name = "Speaker",
.name_plural = N_("speakers"),
.translation_context = BLT_I18NCONTEXT_ID_SPEAKER,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = nullptr,
.init_data = speaker_init_data,
.copy_data = nullptr,
.free_data = nullptr,
.make_local = nullptr,
.foreach_id = speaker_foreach_id,
.foreach_cache = nullptr,
.foreach_path = nullptr,
.foreach_working_space_color = nullptr,
.owner_pointer_get = nullptr,
.blend_write = speaker_blend_write,
.blend_read_data = nullptr,
.blend_read_after_liblink = nullptr,
.blend_read_undo_preserve = nullptr,
.lib_override_apply_post = nullptr,
};
Speaker *BKE_speaker_add(Main *bmain, const char *name)
{
Speaker *spk;
spk = BKE_id_new<Speaker>(bmain, name);
return spk;
}
} // namespace blender