[Bf-blender-cvs] [da7fcd3e528] master: Cleanup: MetaBall: Move to IDTypeInfo and remove unused BKE API.

Bastien Montagne noreply at git.blender.org
Fri Mar 6 16:23:29 CET 2020


Commit: da7fcd3e528bfef30472ef557980bef098c46fcb
Author: Bastien Montagne
Date:   Fri Mar 6 16:08:24 2020 +0100
Branches: master
https://developer.blender.org/rBda7fcd3e528bfef30472ef557980bef098c46fcb

Cleanup: MetaBall: Move to IDTypeInfo and remove unused BKE API.

===================================================================

M	source/blender/blenkernel/BKE_idtype.h
M	source/blender/blenkernel/BKE_mball.h
M	source/blender/blenkernel/intern/idtype.c
M	source/blender/blenkernel/intern/lib_id.c
M	source/blender/blenkernel/intern/lib_id_delete.c
M	source/blender/blenkernel/intern/mball.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_idtype.h b/source/blender/blenkernel/BKE_idtype.h
index b84543c190c..5dbbaa6b6dd 100644
--- a/source/blender/blenkernel/BKE_idtype.h
+++ b/source/blender/blenkernel/BKE_idtype.h
@@ -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;
diff --git a/source/blender/blenkernel/BKE_mball.h b/source/blender/blenkernel/BKE_mball.h
index 799ede4af9f..5f51f528d14 100644
--- a/source/blender/blenkernel/BKE_mball.h
+++ b/source/blender/blenkernel/BKE_mball.h
@@ -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);
diff --git a/source/blender/blenkernel/intern/idtype.c b/source/blender/blenkernel/intern/idtype.c
index 49fc8ea55aa..f095d6d696a 100644
--- a/source/blender/blenkernel/intern/idtype.c
+++ b/source/blender/blenkernel/intern/idtype.c
@@ -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);
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c
index 9902987bd8e..5015c501312 100644
--- a/source/blender/blenkernel/intern/lib_id.c
+++ b/source/blender/blenkernel/intern/lib_id.c
@@ -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);
diff --git a/source/blender/blenkernel/intern/lib_id_delete.c b/source/blender/blenkernel/intern/lib_id_delete.c
index e097ccf1ce6..286b04c5a98 100644
--- a/source/blender/blenkernel/intern/lib_id_delete.c
+++ b/source/blender/blenkernel/intern/lib_id_delete.c
@@ -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);
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index 15a3229aaa7..3154e4c8af9 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -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,65 +62,77 @@
 
 #include "DEG_depsgraph.h"
 
-/* Functions */
+static void metaball_init_data(ID *id)
+{
+  MetaBall *metaball = (MetaBall *)id;
+
+  BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(metaball, id));
 
-/** Free (or release) any data used by this mball (does not free the mball itself). */
-void BKE_mball_free(MetaBall *mb)
+  MEMCPY_STRUCT_AFTER(metaball, DNA_struct_default_get(MetaBall), id);
+}
+
+static void metaball_copy_data(Main *UNUSED(bmain),
+                               ID *id_dst,
+                               const ID *id_src,
+                               const int UNUSED(flag))
 {
-  BKE_animdata_free((ID *)mb, false);
+  MetaBall *metaball_dst = (MetaBall *)id_dst;
+  const MetaBall *metaball_src = (const MetaBall *)id_src;
 
-  BKE_mball_batch_cache_free(mb);
+  BLI_duplicatelist(&metaball_dst->elems, &metaball_src->elems);
 
-  MEM_SAFE_FREE(mb->mat);
+  metaball_dst->mat = MEM_dupallocN(metaball_src->mat);
 
-  BLI_freelistN(&mb->elems);
-  if (mb->disp.first) {
-    BKE_displist_free(&mb->disp);
-  }
+  metaball_dst->editelems = NULL;
+  metaball_dst->lastelem = NULL;
+  metaball_dst->batch_cache = NULL;
 }
 
-void BKE_mball_init(MetaBall *mb)
+static void metaball_free_data(ID *id)
 {
-  BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mb, id));
+  MetaBall *metaball = (MetaBall *)id;
 
-  MEMCPY_STRUCT_AFTER(mb, DNA_struct_default_get(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);
+  }
 }
 
+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,
+
+    .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)
 {
   MetaBall *mb;
 
   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)



More information about the Bf-blender-cvs mailing list