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 'extern/softbody/src/admmpd_bvh_traverse.cpp')
-rw-r--r--extern/softbody/src/admmpd_bvh_traverse.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/extern/softbody/src/admmpd_bvh_traverse.cpp b/extern/softbody/src/admmpd_bvh_traverse.cpp
index 9ec4c281368..fc0a8370ae8 100644
--- a/extern/softbody/src/admmpd_bvh_traverse.cpp
+++ b/extern/softbody/src/admmpd_bvh_traverse.cpp
@@ -45,6 +45,7 @@ void RayClosestHit<T>::traverse(
(eps > 0 ? left_aabb.exteriorDistance(o) < eps : false);
go_right = geom::ray_aabb<T>(o,d,right_aabb,t_min,output.t_max) ||
(eps > 0 ? right_aabb.exteriorDistance(o) < eps : false);
+ (void)(go_left_first);
}
template <typename T>
@@ -109,6 +110,15 @@ bool PointInTetMeshTraverse<T>::stop_traversing(
return false;
RowVector4i t = prim_inds->row(prim);
+ int n_skip = skip_inds.size();
+ for (int i=0; i<n_skip; ++i)
+ {
+ if (skip_inds[i]==t[0]) return false;
+ if (skip_inds[i]==t[1]) return false;
+ if (skip_inds[i]==t[2]) return false;
+ if (skip_inds[i]==t[3]) return false;
+ }
+
VecType v[4] = {
prim_verts->row(t[0]),
prim_verts->row(t[1]),
@@ -229,6 +239,15 @@ bool NearestTriangleTraverse<T>::stop_traversing(const AABB &aabb, int prim)
return false;
RowVector3i tri = prim_inds->row(prim);
+
+ int n_skip = skip_inds.size();
+ for (int i=0; i<n_skip; ++i)
+ {
+ if (skip_inds[i]==tri[0]) return false;
+ if (skip_inds[i]==tri[1]) return false;
+ if (skip_inds[i]==tri[2]) return false;
+ }
+
VecType v[3] = {
prim_verts->row(tri[0]),
prim_verts->row(tri[1]),