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