[Bf-blender-cvs] [c70d802a237] temp-fracture-modifier-2.8: still trying to get simulation to work

Martin Felke noreply at git.blender.org
Fri Aug 10 14:00:45 CEST 2018


Commit: c70d802a237951200d79901555c7b748c2050a94
Author: Martin Felke
Date:   Thu Aug 9 13:18:13 2018 +0200
Branches: temp-fracture-modifier-2.8
https://developer.blender.org/rBc70d802a237951200d79901555c7b748c2050a94

still trying to get simulation to work

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

M	source/blender/blenkernel/BKE_fracture.h
M	source/blender/blenkernel/BKE_rigidbody.h
M	source/blender/blenkernel/intern/fracture.c
M	source/blender/blenkernel/intern/fracture_automerge.c
M	source/blender/blenkernel/intern/fracture_dynamic.c
M	source/blender/blenkernel/intern/fracture_external.c
M	source/blender/blenkernel/intern/fracture_prefractured.c
M	source/blender/blenkernel/intern/fracture_rigidbody.c
M	source/blender/blenkernel/intern/pointcache.c
M	source/blender/blenkernel/intern/rigidbody.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/editors/object/object_transform.c
M	source/blender/makesdna/DNA_fracture_types.h
M	source/blender/makesdna/DNA_modifier_types.h
M	source/blender/makesdna/DNA_rigidbody_types.h
M	source/blender/makesrna/intern/rna_fracture.c

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

diff --git a/source/blender/blenkernel/BKE_fracture.h b/source/blender/blenkernel/BKE_fracture.h
index 13ff5fda799..303e9fac5c9 100644
--- a/source/blender/blenkernel/BKE_fracture.h
+++ b/source/blender/blenkernel/BKE_fracture.h
@@ -73,7 +73,7 @@ typedef struct FracPointCloud {
 
 
 void BKE_fracture_dynamic_free(struct FractureModifierData *fmd,
-                               bool do_free_sequence, bool do_free_rigidbody, struct Scene* scene);
+                               bool do_free_sequence, bool do_free_rigidbody, struct Scene* scene, const int flag);
 
 struct Mesh* BKE_fracture_prefractured_apply(struct FractureModifierData *fmd, struct Object *ob, struct Mesh *mesh,
                                              struct Depsgraph *depsgraph);
@@ -106,11 +106,12 @@ void BKE_fracture_shared_verts_free(struct ListBase* lb);
 struct Mesh *BKE_fracture_autohide_do(struct FractureModifierData *fmd, struct Mesh *dm, struct Object *ob, struct Scene* sc);
 
 struct FracMesh* BKE_fracture_fracmesh_copy(struct FracMesh* fm);
-void BKE_fracture_simulation_free(struct FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, struct Scene *scene);
+void BKE_fracture_simulation_free(struct FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, struct Scene *scene,
+                                  const int flag);
 void BKE_fracture_meshislands_free(struct FractureModifierData* fmd, struct ListBase* meshIslands, bool do_free_rigidbody,
-                                   struct Scene* scene);
+                                   struct Scene* scene, const int flag);
 
-void BKE_fracture_free(struct FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, struct Scene *scene);
+void BKE_fracture_free(struct FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, struct Scene *scene, const int flag);
 
 void BKE_fracture_do(struct FractureModifierData *fmd, ShardID id, struct Object *obj, struct Mesh *dm,
                      struct Depsgraph *depsgraph, struct Main *bmain);
@@ -181,9 +182,10 @@ void BKE_fracture_do_halving(struct FractureModifierData *fmd, struct Object* ob
 
 struct Mesh* BKE_fracture_assemble_mesh_from_shards(struct FractureModifierData *fmd, bool doCustomData, bool use_packed);
 
-void BKE_fracture_modifier_free(struct FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, struct Scene *scene);
+void BKE_fracture_modifier_free(struct FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, struct Scene *scene, const int flag);
 
-void BKE_fracture_mesh_island_free(struct FractureModifierData *rmd, struct MeshIsland *mi, bool remove_rigidbody, struct Scene* scene);
+void BKE_fracture_mesh_island_free(struct FractureModifierData *rmd, struct MeshIsland *mi, bool remove_rigidbody,
+                                   struct Scene* scene, const int flag);
 
 short BKE_fracture_collect_materials(struct Main* bmain, struct Object* o, struct Object* ob, int matstart, struct GHash** mat_index_map);
 
diff --git a/source/blender/blenkernel/BKE_rigidbody.h b/source/blender/blenkernel/BKE_rigidbody.h
index f60646876cd..f4d3416e972 100644
--- a/source/blender/blenkernel/BKE_rigidbody.h
+++ b/source/blender/blenkernel/BKE_rigidbody.h
@@ -88,7 +88,9 @@ void BKE_rigidbody_validate_sim_constraint(struct RigidBodyWorld *rbw, struct Ob
 void BKE_rigidbody_validate_sim_shard_constraint(struct RigidBodyWorld *rbw, struct FractureModifierData* fmd, struct Object*,
                                                  struct RigidBodyShardCon *rbsc, short rebuild);
 
-void BKE_rigidbody_validate_sim_shard(struct RigidBodyWorld *rbw, struct MeshIsland *mi, struct Object *ob, short rebuild, int transfer_speeds, float size[3]);
+void BKE_rigidbody_validate_sim_shard(struct RigidBodyWorld *rbw, struct MeshIsland *mi, struct Object *ob,
+                                      struct FractureModifierData *fmd, short rebuild, int transfer_speeds, float size[3]);
+
 void BKE_rigidbody_validate_sim_shard_shape(struct MeshIsland *mi, struct Object *ob, short rebuild);
 
 /* move the islands of the visible mesh according to shard rigidbody movement */
@@ -150,7 +152,7 @@ void BKE_rigidbody_id_callback(void *world, void* island, int* objectId, int* is
 
 bool BKE_rigidbody_modifier_active(struct FractureModifierData *rmd);
 void BKE_rigidbody_shard_validate(struct RigidBodyWorld *rbw, struct MeshIsland *mi, struct Object *ob,
-                                  int rebuild, int transfer_speed, float size[3]);
+                                  struct FractureModifierData *fmd, int rebuild, int transfer_speed, float size[3]);
 
 void BKE_rigidbody_activate(struct RigidBodyOb* rbo, struct RigidBodyWorld *rbw, struct MeshIsland *mi, struct Object *ob);
 bool BKE_rigidbody_modifier_update(struct Scene* scene, struct Object* ob, struct RigidBodyWorld *rbw,  bool rebuild,
diff --git a/source/blender/blenkernel/intern/fracture.c b/source/blender/blenkernel/intern/fracture.c
index a28110789e7..d7c05106b37 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -1705,7 +1705,7 @@ static void intersect_shards_by_dm(FractureModifierData *fmd, Mesh *d, Object *o
 
 static void reset_shards(FractureModifierData *fmd)
 {
-	if (fmd->fracture_mode == MOD_FRACTURE_PREFRACTURED && fmd->reset_shards)
+	if (fmd->fracture_mode == MOD_FRACTURE_PREFRACTURED && fmd->shared->reset_shards)
 	{
 		FracMesh *fm = fmd->shared->frac_mesh;
 		while (fm && fm->shard_map.first)
@@ -1718,7 +1718,7 @@ static void reset_shards(FractureModifierData *fmd)
 		fm->shard_count = 0;
 		/* do not reset again afterwards, in case we have multiple point sources */
 		if (!fmd->execute_threaded) {
-			fmd->reset_shards = false;
+			fmd->shared->reset_shards = false;
 		}
 	}
 }
@@ -2913,14 +2913,15 @@ FracMesh* BKE_fracture_fracmesh_copy(FracMesh* fm)
 }
 
 
-void BKE_fracture_meshislands_free(FractureModifierData* fmd, ListBase* meshIslands, bool do_free_rigidbody, Scene* scene)
+void BKE_fracture_meshislands_free(FractureModifierData* fmd, ListBase* meshIslands, bool do_free_rigidbody,
+                                   Scene* scene, const int flag)
 {
 	MeshIsland *mi;
 
 	while (meshIslands->first) {
 		mi = meshIslands->first;
 		BLI_remlink_safe(meshIslands, mi);
-		BKE_fracture_mesh_island_free(fmd, mi, do_free_rigidbody, scene);
+		BKE_fracture_mesh_island_free(fmd, mi, do_free_rigidbody, scene, flag);
 		mi = NULL;
 	}
 
@@ -2928,7 +2929,7 @@ void BKE_fracture_meshislands_free(FractureModifierData* fmd, ListBase* meshIsla
 	meshIslands->last = NULL;
 }
 
-void BKE_fracture_simulation_free(FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, Scene *scene)
+void BKE_fracture_simulation_free(FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, Scene *scene, const int flag)
 {
 	/* what happens with this in dynamic fracture ? worst case, we need a sequence for this too*/
 	if (fmd->shards_to_islands) {
@@ -2948,7 +2949,7 @@ void BKE_fracture_simulation_free(FractureModifierData *fmd, bool do_free_seq, b
 
 	if (!do_free_seq) {
 
-		BKE_fracture_meshislands_free(fmd, &fmd->shared->meshIslands, do_free_rigidbody, scene);
+		BKE_fracture_meshislands_free(fmd, &fmd->shared->meshIslands, do_free_rigidbody, scene, flag);
 		fmd->shared->meshIslands.first = NULL;
 		fmd->shared->meshIslands.last = NULL;
 	}
@@ -2963,7 +2964,7 @@ void BKE_fracture_simulation_free(FractureModifierData *fmd, bool do_free_seq, b
 			while (fmd->shared->meshIsland_sequence.first) {
 				msq = fmd->shared->meshIsland_sequence.first;
 				BLI_remlink(&fmd->shared->meshIsland_sequence, msq);
-				BKE_fracture_meshislands_free(fmd, &msq->meshIslands, do_free_rigidbody, scene);
+				BKE_fracture_meshislands_free(fmd, &msq->meshIslands, do_free_rigidbody, scene, flag);
 				MEM_freeN(msq);
 				msq = NULL;
 			}
@@ -3037,9 +3038,9 @@ static void free_shards(FractureModifierData *fmd)
 	}
 }
 
-void BKE_fracture_modifier_free(FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, Scene *scene)
+void BKE_fracture_modifier_free(FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, Scene *scene, const int flag)
 {
-	BKE_fracture_simulation_free(fmd, do_free_seq, (fmd->fracture_mode == MOD_FRACTURE_DYNAMIC) && do_free_rigidbody, scene);
+	BKE_fracture_simulation_free(fmd, do_free_seq, (fmd->fracture_mode == MOD_FRACTURE_DYNAMIC) && do_free_rigidbody, scene, flag);
 
 	if (fmd->shared->material_index_map)
 	{
@@ -3105,13 +3106,13 @@ void BKE_fracture_modifier_free(FractureModifierData *fmd, bool do_free_seq, boo
 
 }
 
-void BKE_fracture_free(FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, Scene *scene)
+void BKE_fracture_free(FractureModifierData *fmd, bool do_free_seq, bool do_free_rigidbody, Scene *scene, const int flag)
 {
 	//for prefractured and external case
 
-	if ((!fmd->refresh && !fmd->refresh_constraints)) {
+	if ((!fmd->shared->refresh && !fmd->shared->refresh_constraints)) {
 		/* free entire modifier or when job has been cancelled */
-		BKE_fracture_modifier_free(fmd, do_free_seq, do_free_rigidbody, scene);
+		BKE_fracture_modifier_free(fmd, do_free_seq, do_free_rigidbody, scene, flag);
 
 		if (fmd->shared->visible_mesh_cached && !fmd->shards_to_islands)
 		{
@@ -3120,11 +3121,11 @@ void BKE_fracture_free(FractureModifierData *fmd, bool do_free_seq, bool do_free
 			fmd->shared->visible_mesh_cached = NULL;
 		}
 	}
-	else if (!fmd->refresh_constraints) {
+	else if (!fmd->shared->refresh_constraints) {
 		/* refreshing all simulation data only, no refracture */
-		BKE_fracture_simulation_free(fmd, false, do_free_rigidbody, scene);
+		BKE_fracture_simulation_free(fmd, false, do_free_rigidbody, scene, flag);
 	}
-	else if (fmd->refresh_constraints && !fmd->is_dynamic_external) {
+	else if (fmd->shared->refresh_constraints && !fmd->is_dynamic_external) {
 		/* refresh constraints only */
 		BKE_fracture_constraints_free(fmd, scene);
 	}
@@ -3557,7 +3558,7 @@ static void points_from_greasepencil(Object **ob, int totobj, FracPointCloud *po
 FracPointCloud BKE_fracture_points_get(Depsgraph *depsgraph, FractureModifierData *emd, Objec

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list