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. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to