91 lines
2.0 KiB
C++
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
|