Improvements to simulate:
- Add '[' and ']' to cycle through fixed cameras. - Remove options to step backwards or step 100 steps forwards or back. - Add missing elements from built-in help. - Reorder help strings. PiperOrigin-RevId: 436497103 Change-Id: I9f910ea328c859239b46c9d7a47e4ee16a43f1ad
This commit is contained in:
committed by
Saran Tunyasuvunakool
parent
edd00714ee
commit
ed775c8f04
+59
-63
@@ -197,44 +197,50 @@ const mjuiDef defWatch[] = {
|
|||||||
|
|
||||||
// help strings
|
// help strings
|
||||||
const char help_content[] =
|
const char help_content[] =
|
||||||
"Alt mouse button\n"
|
|
||||||
"UI right hold\n"
|
|
||||||
"UI title double-click\n"
|
|
||||||
"Space\n"
|
"Space\n"
|
||||||
"Esc\n"
|
"+ -\n"
|
||||||
"Right arrow\n"
|
"Right arrow\n"
|
||||||
"Left arrow\n"
|
"[ ]\n"
|
||||||
"Down arrow\n"
|
"Esc\n"
|
||||||
"Up arrow\n"
|
|
||||||
"Page Up\n"
|
|
||||||
"Double-click\n"
|
"Double-click\n"
|
||||||
|
"Page Up\n"
|
||||||
"Right double-click\n"
|
"Right double-click\n"
|
||||||
"Ctrl Right double-click\n"
|
"Ctrl Right double-click\n"
|
||||||
"Scroll, middle drag\n"
|
"Scroll, middle drag\n"
|
||||||
"Left drag\n"
|
"Left drag\n"
|
||||||
"[Shift] right drag\n"
|
"[Shift] right drag\n"
|
||||||
"Ctrl [Shift] drag\n"
|
"Ctrl [Shift] drag\n"
|
||||||
"Ctrl [Shift] right drag";
|
"Ctrl [Shift] right drag\n"
|
||||||
|
"F1\n"
|
||||||
|
"F2\n"
|
||||||
|
"F3\n"
|
||||||
|
"F4\n"
|
||||||
|
"F5\n"
|
||||||
|
"UI right hold\n"
|
||||||
|
"UI title double-click";
|
||||||
|
|
||||||
const char help_title[] =
|
const char help_title[] =
|
||||||
"Swap left-right\n"
|
"Play / Pause\n"
|
||||||
"Show UI shortcuts\n"
|
"Speed up / down\n"
|
||||||
"Expand/collapse all \n"
|
"Step\n"
|
||||||
"Pause\n"
|
"Cycle cameras\n"
|
||||||
"Free camera\n"
|
"Free camera\n"
|
||||||
"Step forward\n"
|
|
||||||
"Step back\n"
|
|
||||||
"Step forward 100\n"
|
|
||||||
"Step back 100\n"
|
|
||||||
"Select parent\n"
|
|
||||||
"Select\n"
|
"Select\n"
|
||||||
|
"Select parent\n"
|
||||||
"Center\n"
|
"Center\n"
|
||||||
"Track camera\n"
|
"Tracking camera\n"
|
||||||
"Zoom\n"
|
"Zoom\n"
|
||||||
"View rotate\n"
|
"View rotate\n"
|
||||||
"View translate\n"
|
"View translate\n"
|
||||||
"Object rotate\n"
|
"Object rotate\n"
|
||||||
"Object translate";
|
"Object translate\n"
|
||||||
|
"Help\n"
|
||||||
|
"Info\n"
|
||||||
|
"Profiler\n"
|
||||||
|
"Sensors\n"
|
||||||
|
"Full screen\n"
|
||||||
|
"Show UI shortcuts\n"
|
||||||
|
"Expand/collapse all";
|
||||||
|
|
||||||
|
|
||||||
// info strings
|
// info strings
|
||||||
@@ -1070,7 +1076,7 @@ void cleartimers(void) {
|
|||||||
|
|
||||||
|
|
||||||
// copy current camera to clipboard as MJCF specification
|
// copy current camera to clipboard as MJCF specification
|
||||||
void printcamera(mjvGLCamera* camera) {
|
void copycamera(mjvGLCamera* camera) {
|
||||||
char clipboard[500];
|
char clipboard[500];
|
||||||
mjtNum cam_right[3];
|
mjtNum cam_right[3];
|
||||||
mjtNum cam_forward[3];
|
mjtNum cam_forward[3];
|
||||||
@@ -1460,9 +1466,9 @@ void uiEvent(mjuiState* state) {
|
|||||||
cam.type = mjCAMERA_FIXED;
|
cam.type = mjCAMERA_FIXED;
|
||||||
cam.fixedcamid = settings.camera - 2;
|
cam.fixedcamid = settings.camera - 2;
|
||||||
}
|
}
|
||||||
// print floating camera as MJCF element
|
// copy camera spec to clipboard (as MJCF element)
|
||||||
if (it->itemid == 3) {
|
if (it->itemid == 3) {
|
||||||
printcamera(scn.camera);
|
copycamera(scn.camera);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1534,44 +1540,6 @@ void uiEvent(mjuiState* state) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case mjKEY_LEFT: // step back
|
|
||||||
if (m && !settings.run) {
|
|
||||||
m->opt.timestep = -m->opt.timestep;
|
|
||||||
cleartimers();
|
|
||||||
mj_step(m, d);
|
|
||||||
m->opt.timestep = -m->opt.timestep;
|
|
||||||
profilerupdate();
|
|
||||||
sensorupdate();
|
|
||||||
updatesettings();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case mjKEY_DOWN: // step forward 100
|
|
||||||
if (m && !settings.run) {
|
|
||||||
cleartimers();
|
|
||||||
for (i=0; i<100; i++) {
|
|
||||||
mj_step(m, d);
|
|
||||||
}
|
|
||||||
profilerupdate();
|
|
||||||
sensorupdate();
|
|
||||||
updatesettings();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case mjKEY_UP: // step back 100
|
|
||||||
if (m && !settings.run) {
|
|
||||||
m->opt.timestep = -m->opt.timestep;
|
|
||||||
cleartimers();
|
|
||||||
for (i=0; i<100; i++) {
|
|
||||||
mj_step(m, d);
|
|
||||||
}
|
|
||||||
m->opt.timestep = -m->opt.timestep;
|
|
||||||
profilerupdate();
|
|
||||||
sensorupdate();
|
|
||||||
updatesettings();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case mjKEY_PAGE_UP: // select parent body
|
case mjKEY_PAGE_UP: // select parent body
|
||||||
if (m && pert.select>0) {
|
if (m && pert.select>0) {
|
||||||
pert.select = m->body_parentid[pert.select];
|
pert.select = m->body_parentid[pert.select];
|
||||||
@@ -1585,20 +1553,48 @@ void uiEvent(mjuiState* state) {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ']': // cycle up fixed cameras
|
||||||
|
if (m->ncam) {
|
||||||
|
cam.type = mjCAMERA_FIXED;
|
||||||
|
// settings.camera = {0 or 1} are reserved for the free and tracking cameras
|
||||||
|
if (settings.camera < 2 || settings.camera == 2 + m->ncam-1) {
|
||||||
|
settings.camera = 2;
|
||||||
|
} else {
|
||||||
|
settings.camera += 1;
|
||||||
|
}
|
||||||
|
cam.fixedcamid = settings.camera - 2;
|
||||||
|
mjui_update(SECT_RENDERING, -1, &ui0, &uistate, &con);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '[': // cycle down fixed cameras
|
||||||
|
if (m->ncam) {
|
||||||
|
cam.type = mjCAMERA_FIXED;
|
||||||
|
// settings.camera = {0 or 1} are reserved for the free and tracking cameras
|
||||||
|
if (settings.camera <= 2) {
|
||||||
|
settings.camera = 2 + m->ncam-1;
|
||||||
|
} else {
|
||||||
|
settings.camera -= 1;
|
||||||
|
}
|
||||||
|
cam.fixedcamid = settings.camera - 2;
|
||||||
|
mjui_update(SECT_RENDERING, -1, &ui0, &uistate, &con);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case mjKEY_ESCAPE: // free camera
|
case mjKEY_ESCAPE: // free camera
|
||||||
cam.type = mjCAMERA_FREE;
|
cam.type = mjCAMERA_FREE;
|
||||||
settings.camera = 0;
|
settings.camera = 0;
|
||||||
mjui_update(SECT_RENDERING, -1, &ui0, &uistate, &con);
|
mjui_update(SECT_RENDERING, -1, &ui0, &uistate, &con);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '-': // slow down
|
case '-': // slow down
|
||||||
if (settings.slow_down < max_slow_down && !state->shift) {
|
if (settings.slow_down < max_slow_down && !state->shift) {
|
||||||
settings.slow_down *= 2;
|
settings.slow_down *= 2;
|
||||||
settings.speed_changed = true;
|
settings.speed_changed = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '=': // speed up
|
case '=': // speed up
|
||||||
if (settings.slow_down > 1 && !state->shift) {
|
if (settings.slow_down > 1 && !state->shift) {
|
||||||
settings.slow_down /= 2;
|
settings.slow_down /= 2;
|
||||||
settings.speed_changed = true;
|
settings.speed_changed = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user