Reduce internal names hash map from factor of 1 to 0.5.
PiperOrigin-RevId: 499762072 Change-Id: Id4ea606b5c534c55665485c9f71412523164d2ed
This commit is contained in:
committed by
Copybara-Service
parent
928eb7a067
commit
0c463366a0
@@ -438,9 +438,11 @@ mjModel* mj_makeModel(int nq, int nv, int nu, int na, int nbody, int njnt,
|
|||||||
m->nuser_actuator = nuser_actuator;
|
m->nuser_actuator = nuser_actuator;
|
||||||
m->nuser_sensor = nuser_sensor;
|
m->nuser_sensor = nuser_sensor;
|
||||||
m->nnames = nnames;
|
m->nnames = nnames;
|
||||||
m->nnames_map = nbody + njnt + ngeom + nsite + ncam + nlight + nmesh + nskin
|
m->nnames_map = mjLOAD_MULTIPLE
|
||||||
+ nhfield + ntex + nmat + npair + nexclude + neq + ntendon
|
* (nbody + njnt + ngeom + nsite + ncam + nlight + nmesh
|
||||||
+ nu + nsensor + nnumeric + ntext + ntuple + nkey + nplugin;
|
+ nskin + nhfield + ntex + nmat + npair + nexclude + neq
|
||||||
|
+ ntendon + nu + nsensor + nnumeric + ntext + ntuple
|
||||||
|
+ nkey + nplugin);
|
||||||
|
|
||||||
#define X(name) \
|
#define X(name) \
|
||||||
if ((m->name) < 0) { \
|
if ((m->name) < 0) { \
|
||||||
|
|||||||
@@ -23,6 +23,9 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// internal hash map size factor (2 corresponds to a load factor of 0.5)
|
||||||
|
#define mjLOAD_MULTIPLE 2
|
||||||
|
|
||||||
//------------------------------- initialization ---------------------------------------------------
|
//------------------------------- initialization ---------------------------------------------------
|
||||||
|
|
||||||
// Set default options for length range computation.
|
// Set default options for length range computation.
|
||||||
|
|||||||
+25
-25
@@ -443,13 +443,13 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case mjOBJ_BODY:
|
case mjOBJ_BODY:
|
||||||
case mjOBJ_XBODY:
|
case mjOBJ_XBODY:
|
||||||
*mapadr -= m->nbody;
|
*mapadr -= mjLOAD_MULTIPLE*m->nbody;
|
||||||
*padr = m->name_bodyadr;
|
*padr = m->name_bodyadr;
|
||||||
num = m->nbody;
|
num = m->nbody;
|
||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_JOINT:
|
case mjOBJ_JOINT:
|
||||||
*mapadr -= m->njnt;
|
*mapadr -= mjLOAD_MULTIPLE*m->njnt;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_jntadr;
|
*padr = m->name_jntadr;
|
||||||
num = m->njnt;
|
num = m->njnt;
|
||||||
@@ -457,7 +457,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_GEOM:
|
case mjOBJ_GEOM:
|
||||||
*mapadr -= m->ngeom;
|
*mapadr -= mjLOAD_MULTIPLE*m->ngeom;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_geomadr;
|
*padr = m->name_geomadr;
|
||||||
num = m->ngeom;
|
num = m->ngeom;
|
||||||
@@ -465,7 +465,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_SITE:
|
case mjOBJ_SITE:
|
||||||
*mapadr -= m->nsite;
|
*mapadr -= mjLOAD_MULTIPLE*m->nsite;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_siteadr;
|
*padr = m->name_siteadr;
|
||||||
num = m->nsite;
|
num = m->nsite;
|
||||||
@@ -473,7 +473,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_CAMERA:
|
case mjOBJ_CAMERA:
|
||||||
*mapadr -= m->ncam;
|
*mapadr -= mjLOAD_MULTIPLE*m->ncam;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_camadr;
|
*padr = m->name_camadr;
|
||||||
num = m->ncam;
|
num = m->ncam;
|
||||||
@@ -481,7 +481,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_LIGHT:
|
case mjOBJ_LIGHT:
|
||||||
*mapadr -= m->nlight;
|
*mapadr -= mjLOAD_MULTIPLE*m->nlight;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_lightadr;
|
*padr = m->name_lightadr;
|
||||||
num = m->nlight;
|
num = m->nlight;
|
||||||
@@ -489,7 +489,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_MESH:
|
case mjOBJ_MESH:
|
||||||
*mapadr -= m->nmesh;
|
*mapadr -= mjLOAD_MULTIPLE*m->nmesh;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_meshadr;
|
*padr = m->name_meshadr;
|
||||||
num = m->nmesh;
|
num = m->nmesh;
|
||||||
@@ -497,7 +497,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_SKIN:
|
case mjOBJ_SKIN:
|
||||||
*mapadr -= m->nskin;
|
*mapadr -= mjLOAD_MULTIPLE*m->nskin;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_skinadr;
|
*padr = m->name_skinadr;
|
||||||
num = m->nskin;
|
num = m->nskin;
|
||||||
@@ -505,7 +505,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_HFIELD:
|
case mjOBJ_HFIELD:
|
||||||
*mapadr -= m->nhfield;
|
*mapadr -= mjLOAD_MULTIPLE*m->nhfield;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_hfieldadr;
|
*padr = m->name_hfieldadr;
|
||||||
num = m->nhfield;
|
num = m->nhfield;
|
||||||
@@ -513,7 +513,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_TEXTURE:
|
case mjOBJ_TEXTURE:
|
||||||
*mapadr -= m->ntex;
|
*mapadr -= mjLOAD_MULTIPLE*m->ntex;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_texadr;
|
*padr = m->name_texadr;
|
||||||
num = m->ntex;
|
num = m->ntex;
|
||||||
@@ -521,7 +521,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_MATERIAL:
|
case mjOBJ_MATERIAL:
|
||||||
*mapadr -= m->nmat;
|
*mapadr -= mjLOAD_MULTIPLE*m->nmat;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_matadr;
|
*padr = m->name_matadr;
|
||||||
num = m->nmat;
|
num = m->nmat;
|
||||||
@@ -529,7 +529,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_PAIR:
|
case mjOBJ_PAIR:
|
||||||
*mapadr -= m->npair;
|
*mapadr -= mjLOAD_MULTIPLE*m->npair;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_pairadr;
|
*padr = m->name_pairadr;
|
||||||
num = m->npair;
|
num = m->npair;
|
||||||
@@ -537,7 +537,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_EXCLUDE:
|
case mjOBJ_EXCLUDE:
|
||||||
*mapadr -= m->nexclude;
|
*mapadr -= mjLOAD_MULTIPLE*m->nexclude;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_excludeadr;
|
*padr = m->name_excludeadr;
|
||||||
num = m->nexclude;
|
num = m->nexclude;
|
||||||
@@ -545,7 +545,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_EQUALITY:
|
case mjOBJ_EQUALITY:
|
||||||
*mapadr -= m->neq;
|
*mapadr -= mjLOAD_MULTIPLE*m->neq;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_eqadr;
|
*padr = m->name_eqadr;
|
||||||
num = m->neq;
|
num = m->neq;
|
||||||
@@ -553,7 +553,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_TENDON:
|
case mjOBJ_TENDON:
|
||||||
*mapadr -= m->ntendon;
|
*mapadr -= mjLOAD_MULTIPLE*m->ntendon;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_tendonadr;
|
*padr = m->name_tendonadr;
|
||||||
num = m->ntendon;
|
num = m->ntendon;
|
||||||
@@ -561,7 +561,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_ACTUATOR:
|
case mjOBJ_ACTUATOR:
|
||||||
*mapadr -= m->nu;
|
*mapadr -= mjLOAD_MULTIPLE*m->nu;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_actuatoradr;
|
*padr = m->name_actuatoradr;
|
||||||
num = m->nu;
|
num = m->nu;
|
||||||
@@ -569,7 +569,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_SENSOR:
|
case mjOBJ_SENSOR:
|
||||||
*mapadr -= m->nsensor;
|
*mapadr -= mjLOAD_MULTIPLE*m->nsensor;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_sensoradr;
|
*padr = m->name_sensoradr;
|
||||||
num = m->nsensor;
|
num = m->nsensor;
|
||||||
@@ -577,7 +577,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_NUMERIC:
|
case mjOBJ_NUMERIC:
|
||||||
*mapadr -= m->nnumeric;
|
*mapadr -= mjLOAD_MULTIPLE*m->nnumeric;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_numericadr;
|
*padr = m->name_numericadr;
|
||||||
num = m->nnumeric;
|
num = m->nnumeric;
|
||||||
@@ -585,7 +585,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_TEXT:
|
case mjOBJ_TEXT:
|
||||||
*mapadr -= m->ntext;
|
*mapadr -= mjLOAD_MULTIPLE*m->ntext;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_textadr;
|
*padr = m->name_textadr;
|
||||||
num = m->ntext;
|
num = m->ntext;
|
||||||
@@ -593,7 +593,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_TUPLE:
|
case mjOBJ_TUPLE:
|
||||||
*mapadr -= m->ntuple;
|
*mapadr -= mjLOAD_MULTIPLE*m->ntuple;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_tupleadr;
|
*padr = m->name_tupleadr;
|
||||||
num = m->ntuple;
|
num = m->ntuple;
|
||||||
@@ -601,7 +601,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_KEY:
|
case mjOBJ_KEY:
|
||||||
*mapadr -= m->nkey;
|
*mapadr -= mjLOAD_MULTIPLE*m->nkey;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_keyadr;
|
*padr = m->name_keyadr;
|
||||||
num = m->nkey;
|
num = m->nkey;
|
||||||
@@ -609,7 +609,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
mjFALLTHROUGH;
|
mjFALLTHROUGH;
|
||||||
|
|
||||||
case mjOBJ_PLUGIN:
|
case mjOBJ_PLUGIN:
|
||||||
*mapadr -= m->nplugin;
|
*mapadr -= mjLOAD_MULTIPLE*m->nplugin;
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
*padr = m->name_pluginadr;
|
*padr = m->name_pluginadr;
|
||||||
num = m->nplugin;
|
num = m->nplugin;
|
||||||
@@ -622,6 +622,7 @@ static int _getnumadr(const mjModel* m, mjtObj type, int** padr, int* mapadr) {
|
|||||||
num = 0;
|
num = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -642,11 +643,10 @@ int mj_name2id(const mjModel* m, int type, const char* name) {
|
|||||||
int* adr = 0;
|
int* adr = 0;
|
||||||
|
|
||||||
// get number of objects and name addresses
|
// get number of objects and name addresses
|
||||||
int num = _getnumadr(m, type, &adr, &mapadr);
|
int num = mjLOAD_MULTIPLE*_getnumadr(m, type, &adr, &mapadr);
|
||||||
|
|
||||||
// search
|
// search
|
||||||
if (num) {
|
if (num) { // look up at hash address
|
||||||
// look up at hash address
|
|
||||||
uint64_t hash = mj_hashdjb2(name, num);
|
uint64_t hash = mj_hashdjb2(name, num);
|
||||||
uint64_t i = hash;
|
uint64_t i = hash;
|
||||||
|
|
||||||
|
|||||||
+24
-23
@@ -1203,16 +1203,17 @@ void mjCModel::LengthRange(mjModel* m, mjData* data) {
|
|||||||
template <class T>
|
template <class T>
|
||||||
static int namelist(vector<T*>& list, int adr, int* name_adr, char* names, int* map) {
|
static int namelist(vector<T*>& list, int adr, int* name_adr, char* names, int* map) {
|
||||||
// compute hash map addresses
|
// compute hash map addresses
|
||||||
|
int map_size = mjLOAD_MULTIPLE*list.size();
|
||||||
for (unsigned int i=0; i<list.size(); i++) {
|
for (unsigned int i=0; i<list.size(); i++) {
|
||||||
// ignore empty strings
|
// ignore empty strings
|
||||||
if (list[i]->name.empty()) {
|
if (list[i]->name.empty()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t j = mj_hashdjb2(list[i]->name.c_str(), list.size());
|
uint64_t j = mj_hashdjb2(list[i]->name.c_str(), map_size);
|
||||||
|
|
||||||
// find first empty slot using linear probing
|
// find first empty slot using linear probing
|
||||||
for (; map[j]!=-1; j=(j+1) % list.size()) {}
|
for (; map[j]!=-1; j=(j+1) % map_size) {}
|
||||||
map[j] = i;
|
map[j] = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1242,67 +1243,67 @@ void mjCModel::CopyNames(mjModel* m) {
|
|||||||
|
|
||||||
// process all lists
|
// process all lists
|
||||||
adr = namelist(bodies, adr, m->name_bodyadr, m->names, map_adr);
|
adr = namelist(bodies, adr, m->name_bodyadr, m->names, map_adr);
|
||||||
map_adr += bodies.size();
|
map_adr += mjLOAD_MULTIPLE*bodies.size();
|
||||||
|
|
||||||
adr = namelist(joints, adr, m->name_jntadr, m->names, map_adr);
|
adr = namelist(joints, adr, m->name_jntadr, m->names, map_adr);
|
||||||
map_adr += joints.size();
|
map_adr += mjLOAD_MULTIPLE*joints.size();
|
||||||
|
|
||||||
adr = namelist(geoms, adr, m->name_geomadr, m->names, map_adr);
|
adr = namelist(geoms, adr, m->name_geomadr, m->names, map_adr);
|
||||||
map_adr += geoms.size();
|
map_adr += mjLOAD_MULTIPLE*geoms.size();
|
||||||
|
|
||||||
adr = namelist(sites, adr, m->name_siteadr, m->names, map_adr);
|
adr = namelist(sites, adr, m->name_siteadr, m->names, map_adr);
|
||||||
map_adr += sites.size();
|
map_adr += mjLOAD_MULTIPLE*sites.size();
|
||||||
|
|
||||||
adr = namelist(cameras, adr, m->name_camadr, m->names, map_adr);
|
adr = namelist(cameras, adr, m->name_camadr, m->names, map_adr);
|
||||||
map_adr += cameras.size();
|
map_adr += mjLOAD_MULTIPLE*cameras.size();
|
||||||
|
|
||||||
adr = namelist(lights, adr, m->name_lightadr, m->names, map_adr);
|
adr = namelist(lights, adr, m->name_lightadr, m->names, map_adr);
|
||||||
map_adr += lights.size();
|
map_adr += mjLOAD_MULTIPLE*lights.size();
|
||||||
|
|
||||||
adr = namelist(meshes, adr, m->name_meshadr, m->names, map_adr);
|
adr = namelist(meshes, adr, m->name_meshadr, m->names, map_adr);
|
||||||
map_adr += meshes.size();
|
map_adr += mjLOAD_MULTIPLE*meshes.size();
|
||||||
|
|
||||||
adr = namelist(skins, adr, m->name_skinadr, m->names, map_adr);
|
adr = namelist(skins, adr, m->name_skinadr, m->names, map_adr);
|
||||||
map_adr += skins.size();
|
map_adr += mjLOAD_MULTIPLE*skins.size();
|
||||||
|
|
||||||
adr = namelist(hfields, adr, m->name_hfieldadr, m->names, map_adr);
|
adr = namelist(hfields, adr, m->name_hfieldadr, m->names, map_adr);
|
||||||
map_adr += hfields.size();
|
map_adr += mjLOAD_MULTIPLE*hfields.size();
|
||||||
|
|
||||||
adr = namelist(textures, adr, m->name_texadr, m->names, map_adr);
|
adr = namelist(textures, adr, m->name_texadr, m->names, map_adr);
|
||||||
map_adr += textures.size();
|
map_adr += mjLOAD_MULTIPLE*textures.size();
|
||||||
|
|
||||||
adr = namelist(materials, adr, m->name_matadr, m->names, map_adr);
|
adr = namelist(materials, adr, m->name_matadr, m->names, map_adr);
|
||||||
map_adr += materials.size();
|
map_adr += mjLOAD_MULTIPLE*materials.size();
|
||||||
|
|
||||||
adr = namelist(pairs, adr, m->name_pairadr, m->names, map_adr);
|
adr = namelist(pairs, adr, m->name_pairadr, m->names, map_adr);
|
||||||
map_adr += pairs.size();
|
map_adr += mjLOAD_MULTIPLE*pairs.size();
|
||||||
|
|
||||||
adr = namelist(excludes, adr, m->name_excludeadr, m->names, map_adr);
|
adr = namelist(excludes, adr, m->name_excludeadr, m->names, map_adr);
|
||||||
map_adr += excludes.size();
|
map_adr += mjLOAD_MULTIPLE*excludes.size();
|
||||||
|
|
||||||
adr = namelist(equalities, adr, m->name_eqadr, m->names, map_adr);
|
adr = namelist(equalities, adr, m->name_eqadr, m->names, map_adr);
|
||||||
map_adr += equalities.size();
|
map_adr += mjLOAD_MULTIPLE*equalities.size();
|
||||||
|
|
||||||
adr = namelist(tendons, adr, m->name_tendonadr, m->names, map_adr);
|
adr = namelist(tendons, adr, m->name_tendonadr, m->names, map_adr);
|
||||||
map_adr += tendons.size();
|
map_adr += mjLOAD_MULTIPLE*tendons.size();
|
||||||
|
|
||||||
adr = namelist(actuators, adr, m->name_actuatoradr, m->names, map_adr);
|
adr = namelist(actuators, adr, m->name_actuatoradr, m->names, map_adr);
|
||||||
map_adr += actuators.size();
|
map_adr += mjLOAD_MULTIPLE*actuators.size();
|
||||||
|
|
||||||
adr = namelist(sensors, adr, m->name_sensoradr, m->names, map_adr);
|
adr = namelist(sensors, adr, m->name_sensoradr, m->names, map_adr);
|
||||||
map_adr += sensors.size();
|
map_adr += mjLOAD_MULTIPLE*sensors.size();
|
||||||
|
|
||||||
adr = namelist(numerics, adr, m->name_numericadr, m->names, map_adr);
|
adr = namelist(numerics, adr, m->name_numericadr, m->names, map_adr);
|
||||||
map_adr += numerics.size();
|
map_adr += mjLOAD_MULTIPLE*numerics.size();
|
||||||
|
|
||||||
adr = namelist(texts, adr, m->name_textadr, m->names, map_adr);
|
adr = namelist(texts, adr, m->name_textadr, m->names, map_adr);
|
||||||
map_adr += texts.size();
|
map_adr += mjLOAD_MULTIPLE*texts.size();
|
||||||
|
|
||||||
adr = namelist(tuples, adr, m->name_tupleadr, m->names, map_adr);
|
adr = namelist(tuples, adr, m->name_tupleadr, m->names, map_adr);
|
||||||
map_adr += tuples.size();
|
map_adr += mjLOAD_MULTIPLE*tuples.size();
|
||||||
|
|
||||||
adr = namelist(keys, adr, m->name_keyadr, m->names, map_adr);
|
adr = namelist(keys, adr, m->name_keyadr, m->names, map_adr);
|
||||||
map_adr += keys.size();
|
map_adr += mjLOAD_MULTIPLE*keys.size();
|
||||||
|
|
||||||
adr = namelist(plugins, adr, m->name_pluginadr, m->names, map_adr);
|
adr = namelist(plugins, adr, m->name_pluginadr, m->names, map_adr);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user