[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