Remove thread_local EPA data in favor of using mjData stack.
PiperOrigin-RevId: 900201369 Change-Id: I82fbe9bf0ef9ea117c2124353d876dd42a57fb3a
This commit is contained in:
committed by
Copybara-Service
parent
7ac30a39fe
commit
d9b3faf8f4
@@ -526,6 +526,7 @@ void mj_xfrcAccumulate(const mjModel* m, mjData* d, mjtNum* qfrc) {
|
||||
// returns the smallest distance between two geoms (using nativeccd)
|
||||
static mjtNum mj_geomDistanceCCD(const mjModel* m, mjData* d, int g1, int g2,
|
||||
mjtNum distmax, mjtNum fromto[6]) {
|
||||
mj_markStack(d);
|
||||
mjCCDConfig config;
|
||||
mjCCDStatus status;
|
||||
|
||||
@@ -534,12 +535,14 @@ static mjtNum mj_geomDistanceCCD(const mjModel* m, mjData* d, int g1, int g2,
|
||||
config.tolerance = m->opt.ccd_tolerance;
|
||||
config.max_contacts = 1; // want contacts
|
||||
config.dist_cutoff = distmax; // want geom distances
|
||||
config.buffer = mj_stackAllocByte(d, mjc_ccdSize(config.max_iterations), sizeof(mjtNum));
|
||||
|
||||
mjCCDObj obj1, obj2;
|
||||
mjc_initCCDObj(&obj1, m, d, g1, 0);
|
||||
mjc_initCCDObj(&obj2, m, d, g2, 0);
|
||||
|
||||
mjtNum dist = mjc_ccd(&config, &status, &obj1, &obj2);
|
||||
mj_freeStack(d);
|
||||
|
||||
// witness points are only computed if dist <= distmax
|
||||
if (fromto && status.nx > 0) {
|
||||
|
||||
Reference in New Issue
Block a user