| 72 | } |
| 73 | |
| 74 | void CollideFunc (void* userPtr, RTCCollision* collisions, unsigned int num_collisions) |
| 75 | { |
| 76 | for (size_t i=0; i<num_collisions;) |
| 77 | { |
| 78 | bool intersect = intersect_triangle_triangle(collisions[i].geomID0,collisions[i].primID0, |
| 79 | collisions[i].geomID1,collisions[i].primID1); |
| 80 | if (intersect) i++; |
| 81 | else collisions[i] = collisions[--num_collisions]; |
| 82 | } |
| 83 | |
| 84 | if (num_collisions == 0) |
| 85 | return; |
| 86 | |
| 87 | Lock<MutexSys> lock(mutex); |
| 88 | for (size_t i=0; i<num_collisions; i++) |
| 89 | { |
| 90 | const unsigned geomID0 = collisions[i].geomID0; |
| 91 | const unsigned primID0 = collisions[i].primID0; |
| 92 | const unsigned geomID1 = collisions[i].geomID1; |
| 93 | const unsigned primID1 = collisions[i].primID1; |
| 94 | |
| 95 | static_cast<Collisions*>(userPtr)->push_back(std::make_pair(std::make_pair(geomID0,primID0),std::make_pair(geomID1,primID1))); |
| 96 | } |
| 97 | } |
| 98 | |
| 99 | void triangle_bounds_func(const struct RTCBoundsFunctionArguments* args) |
| 100 | { |
nothing calls this directly
no test coverage detected