Cleanup: MetaBall: Move to IDTypeInfo and remove unused BKE API.
This commit is contained in:
@@ -129,7 +129,7 @@ extern IDTypeInfo IDType_ID_LI;
|
||||
extern IDTypeInfo IDType_ID_OB;
|
||||
extern IDTypeInfo IDType_ID_ME;
|
||||
extern IDTypeInfo IDType_ID_CU;
|
||||
// extern IDTypeInfo IDType_ID_MB;
|
||||
extern IDTypeInfo IDType_ID_MB;
|
||||
// extern IDTypeInfo IDType_ID_MA;
|
||||
// extern IDTypeInfo IDType_ID_TE;
|
||||
// extern IDTypeInfo IDType_ID_IM;
|
||||
|
||||
@@ -36,17 +36,9 @@ struct MetaElem;
|
||||
struct Object;
|
||||
struct Scene;
|
||||
|
||||
void BKE_mball_free(struct MetaBall *mb);
|
||||
void BKE_mball_init(struct MetaBall *mb);
|
||||
struct MetaBall *BKE_mball_add(struct Main *bmain, const char *name);
|
||||
void BKE_mball_copy_data(struct Main *bmain,
|
||||
struct MetaBall *mb_dst,
|
||||
const struct MetaBall *mb_src,
|
||||
const int flag);
|
||||
struct MetaBall *BKE_mball_copy(struct Main *bmain, const struct MetaBall *mb);
|
||||
|
||||
void BKE_mball_make_local(struct Main *bmain, struct MetaBall *mb, const int flags);
|
||||
|
||||
bool BKE_mball_is_any_selected(const struct MetaBall *mb);
|
||||
bool BKE_mball_is_any_selected_multi(struct Base **bases, int bases_len);
|
||||
bool BKE_mball_is_any_unselected(const struct MetaBall *mb);
|
||||
|
||||
@@ -56,7 +56,7 @@ static void id_type_init(void)
|
||||
INIT_TYPE(ID_OB);
|
||||
INIT_TYPE(ID_ME);
|
||||
INIT_TYPE(ID_CU);
|
||||
// INIT_TYPE(ID_MB);
|
||||
INIT_TYPE(ID_MB);
|
||||
// INIT_TYPE(ID_MA);
|
||||
// INIT_TYPE(ID_TE);
|
||||
// INIT_TYPE(ID_IM);
|
||||
|
||||
@@ -479,9 +479,7 @@ bool BKE_lib_id_make_local(Main *bmain, ID *id, const bool test, const int flags
|
||||
BLI_assert(0);
|
||||
return true;
|
||||
case ID_MB:
|
||||
if (!test) {
|
||||
BKE_mball_make_local(bmain, (MetaBall *)id, flags);
|
||||
}
|
||||
BLI_assert(0);
|
||||
return true;
|
||||
case ID_MA:
|
||||
if (!test) {
|
||||
@@ -720,7 +718,7 @@ bool BKE_id_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int flag)
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_MB:
|
||||
BKE_mball_copy_data(bmain, (MetaBall *)*r_newid, (MetaBall *)id, flag);
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_MA:
|
||||
BKE_material_copy_data(bmain, (Material *)*r_newid, (Material *)id, flag);
|
||||
@@ -1341,7 +1339,7 @@ void BKE_libblock_init_empty(ID *id)
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_MB:
|
||||
BKE_mball_init((MetaBall *)id);
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_MA:
|
||||
BKE_material_init((Material *)id);
|
||||
|
||||
@@ -152,7 +152,7 @@ void BKE_libblock_free_datablock(ID *id, const int UNUSED(flag))
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_MB:
|
||||
BKE_mball_free((MetaBall *)id);
|
||||
BLI_assert(0);
|
||||
break;
|
||||
case ID_MA:
|
||||
BKE_material_free((Material *)id);
|
||||
|
||||
@@ -46,10 +46,13 @@
|
||||
#include "BLI_string_utils.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "BKE_main.h"
|
||||
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_idtype.h"
|
||||
#include "BKE_scene.h"
|
||||
#include "BKE_lib_id.h"
|
||||
#include "BKE_displist.h"
|
||||
@@ -59,29 +62,65 @@
|
||||
|
||||
#include "DEG_depsgraph.h"
|
||||
|
||||
/* Functions */
|
||||
|
||||
/** Free (or release) any data used by this mball (does not free the mball itself). */
|
||||
void BKE_mball_free(MetaBall *mb)
|
||||
static void metaball_init_data(ID *id)
|
||||
{
|
||||
BKE_animdata_free((ID *)mb, false);
|
||||
MetaBall *metaball = (MetaBall *)id;
|
||||
|
||||
BKE_mball_batch_cache_free(mb);
|
||||
BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(metaball, id));
|
||||
|
||||
MEM_SAFE_FREE(mb->mat);
|
||||
MEMCPY_STRUCT_AFTER(metaball, DNA_struct_default_get(MetaBall), id);
|
||||
}
|
||||
|
||||
BLI_freelistN(&mb->elems);
|
||||
if (mb->disp.first) {
|
||||
BKE_displist_free(&mb->disp);
|
||||
static void metaball_copy_data(Main *UNUSED(bmain),
|
||||
ID *id_dst,
|
||||
const ID *id_src,
|
||||
const int UNUSED(flag))
|
||||
{
|
||||
MetaBall *metaball_dst = (MetaBall *)id_dst;
|
||||
const MetaBall *metaball_src = (const MetaBall *)id_src;
|
||||
|
||||
BLI_duplicatelist(&metaball_dst->elems, &metaball_src->elems);
|
||||
|
||||
metaball_dst->mat = MEM_dupallocN(metaball_src->mat);
|
||||
|
||||
metaball_dst->editelems = NULL;
|
||||
metaball_dst->lastelem = NULL;
|
||||
metaball_dst->batch_cache = NULL;
|
||||
}
|
||||
|
||||
static void metaball_free_data(ID *id)
|
||||
{
|
||||
MetaBall *metaball = (MetaBall *)id;
|
||||
|
||||
BKE_animdata_free((ID *)metaball, false);
|
||||
|
||||
BKE_mball_batch_cache_free(metaball);
|
||||
|
||||
MEM_SAFE_FREE(metaball->mat);
|
||||
|
||||
BLI_freelistN(&metaball->elems);
|
||||
if (metaball->disp.first) {
|
||||
BKE_displist_free(&metaball->disp);
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_mball_init(MetaBall *mb)
|
||||
{
|
||||
BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mb, id));
|
||||
IDTypeInfo IDType_ID_MB = {
|
||||
.id_code = ID_MB,
|
||||
.id_filter = FILTER_ID_MB,
|
||||
.main_listbase_index = INDEX_ID_MB,
|
||||
.struct_size = sizeof(MetaBall),
|
||||
.name = "Metaball",
|
||||
.name_plural = "metaballs",
|
||||
.translation_context = BLT_I18NCONTEXT_ID_METABALL,
|
||||
.flags = 0,
|
||||
|
||||
MEMCPY_STRUCT_AFTER(mb, DNA_struct_default_get(MetaBall), id);
|
||||
}
|
||||
.init_data = metaball_init_data,
|
||||
.copy_data = metaball_copy_data,
|
||||
.free_data = metaball_free_data,
|
||||
.make_local = NULL,
|
||||
};
|
||||
|
||||
/* Functions */
|
||||
|
||||
MetaBall *BKE_mball_add(Main *bmain, const char *name)
|
||||
{
|
||||
@@ -89,35 +128,11 @@ MetaBall *BKE_mball_add(Main *bmain, const char *name)
|
||||
|
||||
mb = BKE_libblock_alloc(bmain, ID_MB, name, 0);
|
||||
|
||||
BKE_mball_init(mb);
|
||||
metaball_init_data(&mb->id);
|
||||
|
||||
return mb;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only copy internal data of MetaBall ID from source
|
||||
* to already allocated/initialized destination.
|
||||
* You probably never want to use that directly,
|
||||
* use #BKE_id_copy or #BKE_id_copy_ex for typical needs.
|
||||
*
|
||||
* WARNING! This function will not handle ID user count!
|
||||
*
|
||||
* \param flag: Copying options (see BKE_lib_id.h's LIB_ID_COPY_... flags for more).
|
||||
*/
|
||||
void BKE_mball_copy_data(Main *UNUSED(bmain),
|
||||
MetaBall *mb_dst,
|
||||
const MetaBall *mb_src,
|
||||
const int UNUSED(flag))
|
||||
{
|
||||
BLI_duplicatelist(&mb_dst->elems, &mb_src->elems);
|
||||
|
||||
mb_dst->mat = MEM_dupallocN(mb_src->mat);
|
||||
|
||||
mb_dst->editelems = NULL;
|
||||
mb_dst->lastelem = NULL;
|
||||
mb_dst->batch_cache = NULL;
|
||||
}
|
||||
|
||||
MetaBall *BKE_mball_copy(Main *bmain, const MetaBall *mb)
|
||||
{
|
||||
MetaBall *mb_copy;
|
||||
@@ -125,11 +140,6 @@ MetaBall *BKE_mball_copy(Main *bmain, const MetaBall *mb)
|
||||
return mb_copy;
|
||||
}
|
||||
|
||||
void BKE_mball_make_local(Main *bmain, MetaBall *mb, const int flags)
|
||||
{
|
||||
BKE_lib_id_make_local_generic(bmain, &mb->id, flags);
|
||||
}
|
||||
|
||||
/* most simple meta-element adding function
|
||||
* don't do context manipulation here (rna uses) */
|
||||
MetaElem *BKE_mball_element_add(MetaBall *mb, const int type)
|
||||
|
||||
Reference in New Issue
Block a user