[Bf-blender-cvs] [3a10c61a7d0] master: Cleanup: ParticleSettings: Move to IDTypeInfo and remove unused BKE API.

Bastien Montagne noreply at git.blender.org
Mon Mar 9 12:49:12 CET 2020


Commit: 3a10c61a7d088712e66ae6cc775f8260dc91518b
Author: Bastien Montagne
Date:   Mon Mar 9 12:48:32 2020 +0100
Branches: master
https://developer.blender.org/rB3a10c61a7d088712e66ae6cc775f8260dc91518b

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

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

M	source/blender/blenkernel/BKE_idtype.h
M	source/blender/blenkernel/BKE_particle.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/particle.c

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

diff --git a/source/blender/blenkernel/BKE_idtype.h b/source/blender/blenkernel/BKE_idtype.h
index 243275e5219..91c0216db0b 100644
--- a/source/blender/blenkernel/BKE_idtype.h
+++ b/source/blender/blenkernel/BKE_idtype.h
@@ -149,7 +149,7 @@ extern IDTypeInfo IDType_ID_AR;
 extern IDTypeInfo IDType_ID_AC;
 extern IDTypeInfo IDType_ID_NT;
 extern IDTypeInfo IDType_ID_BR;
-// extern IDTypeInfo IDType_ID_PA;
+extern IDTypeInfo IDType_ID_PA;
 // extern IDTypeInfo IDType_ID_GD;
 extern IDTypeInfo IDType_ID_WM;
 // extern IDTypeInfo IDType_ID_MC;
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index a7569951616..e9f83a55a70 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -331,7 +331,6 @@ int psys_uses_gravity(struct ParticleSimulationData *sim);
 void BKE_particlesettings_fluid_default_settings(struct ParticleSettings *part);
 
 /* free */
-void BKE_particlesettings_free(struct ParticleSettings *part);
 void psys_free_path_cache(struct ParticleSystem *psys, struct PTCacheEdit *edit);
 void psys_free(struct Object *ob, struct ParticleSystem *psys);
 
@@ -369,16 +368,8 @@ struct ModifierData *object_add_particle_system(struct Main *bmain,
                                                 const char *name);
 void object_remove_particle_system(struct Main *bmain, struct Scene *scene, struct Object *ob);
 struct ParticleSettings *BKE_particlesettings_add(struct Main *bmain, const char *name);
-void BKE_particlesettings_copy_data(struct Main *bmain,
-                                    struct ParticleSettings *part_dst,
-                                    const struct ParticleSettings *part_src,
-                                    const int flag);
 struct ParticleSettings *BKE_particlesettings_copy(struct Main *bmain,
                                                    const struct ParticleSettings *part);
-void BKE_particlesettings_make_local(struct Main *bmain,
-                                     struct ParticleSettings *part,
-                                     const int flags);
-
 void psys_reset(struct ParticleSystem *psys, int mode);
 
 void psys_find_parents(struct ParticleSimulationData *sim, const bool use_render_params);
diff --git a/source/blender/blenkernel/intern/idtype.c b/source/blender/blenkernel/intern/idtype.c
index 347327dfd1b..56b85f32ff7 100644
--- a/source/blender/blenkernel/intern/idtype.c
+++ b/source/blender/blenkernel/intern/idtype.c
@@ -76,7 +76,7 @@ static void id_type_init(void)
   INIT_TYPE(ID_AC);
   INIT_TYPE(ID_NT);
   INIT_TYPE(ID_BR);
-  // INIT_TYPE(ID_PA);
+  INIT_TYPE(ID_PA);
   // INIT_TYPE(ID_GD);
   INIT_TYPE(ID_WM);
   // INIT_TYPE(ID_MC);
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c
index ff9f342f27d..37b416918c7 100644
--- a/source/blender/blenkernel/intern/lib_id.c
+++ b/source/blender/blenkernel/intern/lib_id.c
@@ -533,9 +533,7 @@ bool BKE_lib_id_make_local(Main *bmain, ID *id, const bool test, const int flags
       BLI_assert(0);
       return true;
     case ID_PA:
-      if (!test) {
-        BKE_particlesettings_make_local(bmain, (ParticleSettings *)id, flags);
-      }
+      BLI_assert(0);
       return true;
     case ID_GD:
       if (!test) {
@@ -745,8 +743,7 @@ bool BKE_id_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int flag)
         BLI_assert(0);
         break;
       case ID_PA:
-        BKE_particlesettings_copy_data(
-            bmain, (ParticleSettings *)*r_newid, (ParticleSettings *)id, flag);
+        BLI_assert(0);
         break;
       case ID_GD:
         BKE_gpencil_copy_data((bGPdata *)*r_newid, (bGPdata *)id, flag);
@@ -1372,7 +1369,7 @@ void BKE_libblock_init_empty(ID *id)
       BLI_assert(0);
       break;
     case ID_PA:
-      /* Nothing to do. */
+      BLI_assert(0);
       break;
     case ID_PC:
       BLI_assert(0);
diff --git a/source/blender/blenkernel/intern/lib_id_delete.c b/source/blender/blenkernel/intern/lib_id_delete.c
index 430b40b57df..268e906333d 100644
--- a/source/blender/blenkernel/intern/lib_id_delete.c
+++ b/source/blender/blenkernel/intern/lib_id_delete.c
@@ -214,7 +214,7 @@ void BKE_libblock_free_datablock(ID *id, const int UNUSED(flag))
       BLI_assert(0);
       break;
     case ID_PA:
-      BKE_particlesettings_free((ParticleSettings *)id);
+      BLI_assert(0);
       break;
     case ID_WM:
       BLI_assert(0);
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index a77eb0b5ed6..cdfaa0fe075 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -58,6 +58,7 @@
 #include "BKE_collection.h"
 #include "BKE_colortools.h"
 #include "BKE_effect.h"
+#include "BKE_idtype.h"
 #include "BKE_main.h"
 #include "BKE_lattice.h"
 
@@ -80,6 +81,91 @@
 
 #include "particle_private.h"
 
+static void fluid_free_settings(SPHFluidSettings *fluid);
+
+static void particle_settings_copy_data(Main *UNUSED(bmain),
+                                        ID *id_dst,
+                                        const ID *id_src,
+                                        const int UNUSED(flag))
+{
+  ParticleSettings *particle_settings_dst = (ParticleSettings *)id_dst;
+  const ParticleSettings *partticle_settings_src = (const ParticleSettings *)id_src;
+
+  particle_settings_dst->pd = BKE_partdeflect_copy(partticle_settings_src->pd);
+  particle_settings_dst->pd2 = BKE_partdeflect_copy(partticle_settings_src->pd2);
+  particle_settings_dst->effector_weights = MEM_dupallocN(
+      partticle_settings_src->effector_weights);
+  particle_settings_dst->fluid = MEM_dupallocN(partticle_settings_src->fluid);
+
+  if (partticle_settings_src->clumpcurve) {
+    particle_settings_dst->clumpcurve = BKE_curvemapping_copy(partticle_settings_src->clumpcurve);
+  }
+  if (partticle_settings_src->roughcurve) {
+    particle_settings_dst->roughcurve = BKE_curvemapping_copy(partticle_settings_src->roughcurve);
+  }
+  if (partticle_settings_src->twistcurve) {
+    particle_settings_dst->twistcurve = BKE_curvemapping_copy(partticle_settings_src->twistcurve);
+  }
+
+  particle_settings_dst->boids = boid_copy_settings(partticle_settings_src->boids);
+
+  for (int a = 0; a < MAX_MTEX; a++) {
+    if (partticle_settings_src->mtex[a]) {
+      particle_settings_dst->mtex[a] = MEM_dupallocN(partticle_settings_src->mtex[a]);
+    }
+  }
+
+  BLI_duplicatelist(&particle_settings_dst->instance_weights,
+                    &partticle_settings_src->instance_weights);
+}
+
+static void particle_settings_free_data(ID *id)
+{
+  ParticleSettings *particle_settings = (ParticleSettings *)id;
+
+  BKE_animdata_free((ID *)particle_settings, false);
+
+  for (int a = 0; a < MAX_MTEX; a++) {
+    MEM_SAFE_FREE(particle_settings->mtex[a]);
+  }
+
+  if (particle_settings->clumpcurve) {
+    BKE_curvemapping_free(particle_settings->clumpcurve);
+  }
+  if (particle_settings->roughcurve) {
+    BKE_curvemapping_free(particle_settings->roughcurve);
+  }
+  if (particle_settings->twistcurve) {
+    BKE_curvemapping_free(particle_settings->twistcurve);
+  }
+
+  BKE_partdeflect_free(particle_settings->pd);
+  BKE_partdeflect_free(particle_settings->pd2);
+
+  MEM_SAFE_FREE(particle_settings->effector_weights);
+
+  BLI_freelistN(&particle_settings->instance_weights);
+
+  boid_free_settings(particle_settings->boids);
+  fluid_free_settings(particle_settings->fluid);
+}
+
+IDTypeInfo IDType_ID_PA = {
+    .id_code = ID_PA,
+    .id_filter = FILTER_ID_PA,
+    .main_listbase_index = INDEX_ID_PA,
+    .struct_size = sizeof(ParticleSettings),
+    .name = "ParticleSettings",
+    .name_plural = "particles",
+    .translation_context = BLT_I18NCONTEXT_ID_PARTICLESETTINGS,
+    .flags = 0,
+
+    .init_data = NULL,
+    .copy_data = particle_settings_copy_data,
+    .free_data = particle_settings_free_data,
+    .make_local = NULL,
+};
+
 unsigned int PSYS_FRAND_SEED_OFFSET[PSYS_FRAND_COUNT];
 unsigned int PSYS_FRAND_SEED_MULTIPLIER[PSYS_FRAND_COUNT];
 float PSYS_FRAND_BASE[PSYS_FRAND_COUNT];
@@ -484,40 +570,6 @@ static void fluid_free_settings(SPHFluidSettings *fluid)
   }
 }
 
-/**
- * Free (or release) any data used by this particle settings (does not free the partsett itself).
- */
-void BKE_particlesettings_free(ParticleSettings *part)
-{
-  int a;
-
-  BKE_animdata_free((ID *)part, false);
-
-  for (a = 0; a < MAX_MTEX; a++) {
-    MEM_SAFE_FREE(part->mtex[a]);
-  }
-
-  if (part->clumpcurve) {
-    BKE_curvemapping_free(part->clumpcurve);
-  }
-  if (part->roughcurve) {
-    BKE_curvemapping_free(part->roughcurve);
-  }
-  if (part->twistcurve) {
-    BKE_curvemapping_free(part->twistcurve);
-  }
-
-  BKE_partdeflect_free(part->pd);
-  BKE_partdeflect_free(part->pd2);
-
-  MEM_SAFE_FREE(part->effector_weights);
-
-  BLI_freelistN(&part->instance_weights);
-
-  boid_free_settings(part->boids);
-  fluid_free_settings(part->fluid);
-}
-
 void free_hair(Object *object, ParticleSystem *psys, int dynamics)
 {
   PARTICLE_P;
@@ -3789,47 +3841,6 @@ void BKE_particlesettings_twist_curve_init(ParticleSettings *part)
   part->twistcurve = cumap;
 }
 
-/**
- * Only copy internal data of ParticleSettings 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_particlesettings_copy_data(Main *UNUSED(bmain),
-                                    ParticleSettings *part_dst,
-                                    const ParticleSettings *part_src,
-                                    const int UNUSED(flag))
-{
-  part_dst->pd = BKE_partdeflect_copy(part_src->pd);
-  part_dst->pd2 = BKE_partdeflect_copy(part_src->pd2);
-  part_dst->effector_weights = MEM_dupallocN(part_src->effector_weights);
-  part_dst->fluid = MEM_dupallocN(part_src->fluid);
-
-  if (part_src->clumpcurve) {
-    part_dst->clumpcurve = BKE_curvemapping_copy(part_src->clumpcurve);
-  }
-  if (part_src->roughcurve) {

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list