Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/collision.c')
-rw-r--r--source/blender/blenkernel/intern/collision.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index 2acdc6543b5..b9d5be62306 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -72,16 +72,16 @@ void collision_move_object(CollisionModifierData *collmd,
/* the collider doesn't move this frame */
if (collmd->is_static) {
for (i = 0; i < collmd->mvert_num; i++) {
- zero_v3(collmd->current_v[i].co);
+ zero_v3(collmd->current_v[i]);
}
return;
}
for (i = 0; i < collmd->mvert_num; i++) {
- interp_v3_v3v3(collmd->current_x[i].co, collmd->x[i].co, collmd->xnew[i].co, prevstep);
- interp_v3_v3v3(collmd->current_xnew[i].co, collmd->x[i].co, collmd->xnew[i].co, step);
- sub_v3_v3v3(collmd->current_v[i].co, collmd->current_xnew[i].co, collmd->current_x[i].co);
+ interp_v3_v3v3(collmd->current_x[i], collmd->x[i], collmd->xnew[i], prevstep);
+ interp_v3_v3v3(collmd->current_xnew[i], collmd->x[i], collmd->xnew[i], step);
+ sub_v3_v3v3(collmd->current_v[i], collmd->current_xnew[i], collmd->current_x[i]);
}
bvhtree_update_from_mvert(collmd->bvhtree,
@@ -92,7 +92,7 @@ void collision_move_object(CollisionModifierData *collmd,
moving_bvh);
}
-BVHTree *bvhtree_build_from_mvert(const MVert *mvert,
+BVHTree *bvhtree_build_from_mvert(const float (*positions)[3],
const struct MVertTri *tri,
int tri_num,
float epsilon)
@@ -105,9 +105,9 @@ BVHTree *bvhtree_build_from_mvert(const MVert *mvert,
for (i = 0, vt = tri; i < tri_num; i++, vt++) {
float co[3][3];
- copy_v3_v3(co[0], mvert[vt->tri[0]].co);
- copy_v3_v3(co[1], mvert[vt->tri[1]].co);
- copy_v3_v3(co[2], mvert[vt->tri[2]].co);
+ copy_v3_v3(co[0], positions[vt->tri[0]]);
+ copy_v3_v3(co[1], positions[vt->tri[1]]);
+ copy_v3_v3(co[2], positions[vt->tri[2]]);
BLI_bvhtree_insert(tree, i, co[0], 3);
}
@@ -119,18 +119,18 @@ BVHTree *bvhtree_build_from_mvert(const MVert *mvert,
}
void bvhtree_update_from_mvert(BVHTree *bvhtree,
- const MVert *mvert,
- const MVert *mvert_moving,
+ const float (*positions)[3],
+ const float (*positions_moving)[3],
const MVertTri *tri,
int tri_num,
bool moving)
{
- if ((bvhtree == NULL) || (mvert == NULL)) {
+ if ((bvhtree == NULL) || (positions == NULL)) {
return;
}
- if (mvert_moving == NULL) {
+ if (positions_moving == NULL) {
moving = false;
}
@@ -140,17 +140,17 @@ void bvhtree_update_from_mvert(BVHTree *bvhtree,
float co[3][3];
bool ret;
- copy_v3_v3(co[0], mvert[vt->tri[0]].co);
- copy_v3_v3(co[1], mvert[vt->tri[1]].co);
- copy_v3_v3(co[2], mvert[vt->tri[2]].co);
+ copy_v3_v3(co[0], positions[vt->tri[0]]);
+ copy_v3_v3(co[1], positions[vt->tri[1]]);
+ copy_v3_v3(co[2], positions[vt->tri[2]]);
/* copy new locations into array */
if (moving) {
float co_moving[3][3];
/* update moving positions */
- copy_v3_v3(co_moving[0], mvert_moving[vt->tri[0]].co);
- copy_v3_v3(co_moving[1], mvert_moving[vt->tri[1]].co);
- copy_v3_v3(co_moving[2], mvert_moving[vt->tri[2]].co);
+ copy_v3_v3(co_moving[0], positions_moving[vt->tri[0]]);
+ copy_v3_v3(co_moving[1], positions_moving[vt->tri[1]]);
+ copy_v3_v3(co_moving[2], positions_moving[vt->tri[2]]);
ret = BLI_bvhtree_update_node(bvhtree, i, &co[0][0], &co_moving[0][0], 3);
}
@@ -709,17 +709,17 @@ static int cloth_collision_response_static(ClothModifierData *clmd,
}
collision_compute_barycentric(collpair->pb,
- collmd->current_xnew[collpair->bp1].co,
- collmd->current_xnew[collpair->bp2].co,
- collmd->current_xnew[collpair->bp3].co,
+ collmd->current_xnew[collpair->bp1],
+ collmd->current_xnew[collpair->bp2],
+ collmd->current_xnew[collpair->bp3],
&u1,
&u2,
&u3);
collision_interpolateOnTriangle(v2,
- collmd->current_v[collpair->bp1].co,
- collmd->current_v[collpair->bp2].co,
- collmd->current_v[collpair->bp3].co,
+ collmd->current_v[collpair->bp1],
+ collmd->current_v[collpair->bp2],
+ collmd->current_v[collpair->bp3],
u1,
u2,
u3);
@@ -1025,9 +1025,9 @@ static void cloth_collision(void *__restrict userdata,
distance = compute_collision_point_tri_tri(verts1[tri_a->tri[0]].tx,
verts1[tri_a->tri[1]].tx,
verts1[tri_a->tri[2]].tx,
- collmd->current_xnew[tri_b->tri[0]].co,
- collmd->current_xnew[tri_b->tri[1]].co,
- collmd->current_xnew[tri_b->tri[2]].co,
+ collmd->current_xnew[tri_b->tri[0]],
+ collmd->current_xnew[tri_b->tri[1]],
+ collmd->current_xnew[tri_b->tri[2]],
data->culling,
data->use_normal,
pa,
@@ -1183,9 +1183,9 @@ static void hair_collision(void *__restrict userdata,
/* Compute distance and normal. */
distance = compute_collision_point_edge_tri(verts1[edge_coll->v1].tx,
verts1[edge_coll->v2].tx,
- collmd->current_x[tri_coll->tri[0]].co,
- collmd->current_x[tri_coll->tri[1]].co,
- collmd->current_x[tri_coll->tri[2]].co,
+ collmd->current_x[tri_coll->tri[0]],
+ collmd->current_x[tri_coll->tri[1]],
+ collmd->current_x[tri_coll->tri[2]],
data->culling,
data->use_normal,
pa,
@@ -1720,17 +1720,17 @@ void collision_get_collider_velocity(float vel_old[3],
/* compute barycentric coordinates */
collision_compute_barycentric(collpair->pb,
- collmd->current_x[collpair->bp1].co,
- collmd->current_x[collpair->bp2].co,
- collmd->current_x[collpair->bp3].co,
+ collmd->current_x[collpair->bp1],
+ collmd->current_x[collpair->bp2],
+ collmd->current_x[collpair->bp3],
&u1,
&u2,
&u3);
collision_interpolateOnTriangle(vel_new,
- collmd->current_v[collpair->bp1].co,
- collmd->current_v[collpair->bp2].co,
- collmd->current_v[collpair->bp3].co,
+ collmd->current_v[collpair->bp1],
+ collmd->current_v[collpair->bp2],
+ collmd->current_v[collpair->bp3],
u1,
u2,
u3);