void visible(int v) { if (v == GLUT_VISIBLE) { if (Rotating) { glutIdleFunc(rotatethering); agvSetAllowIdle(0); } else { glutIdleFunc(NULL); agvSetAllowIdle(1); } } else { glutIdleFunc(NULL); agvSetAllowIdle(0); } }
/* ARGSUSED2 */ void CurveHandleButton(int button, int state, int x, int y) { if (button == GLUT_RIGHT_BUTTON ) return; if (state == GLUT_DOWN && CurveDownBtn == -1) { if (button == GLUT_MIDDLE_BUTTON) CurveHandleMenu(CMENU_WALK); else fStep = Step = (int)((float)x/glutGet(GLUT_WINDOW_WIDTH) * CYCLE_SIZE); CurveDownBtn = button; WasWalking = Walking; StopWalking(); RedisplayBoth(); } else if (button == CurveDownBtn) { CurveDownBtn = -1; if (WasWalking) { Walking = 1; agvSetAllowIdle(0); glutIdleFunc(IncrementStep); } } }
void StopWalking(void) { if (Walking) { Walking = 0; agvSetAllowIdle(1); } }
void CurveHandleMenu(int value) { switch (value) { case CMENU_QUIT: exit(0); break; case CMENU_CURVE: CurveAsPoints = !CurveAsPoints; glutPostRedisplay(); break; case CMENU_HORIZ: DrawHorizontals = !DrawHorizontals; glutPostRedisplay(); break; case CMENU_WALK: if (EditingCurve != -1) break; Walking = !Walking; if (Walking) { agvSetAllowIdle(0); glutIdleFunc(IncrementStep); } else { agvSetAllowIdle(1); } break; case CMENU_DONEEDIT: glutMouseFunc(CurveHandleButton); EditingCurve = -1; CurvePickedPoint = -1; Walking = WasWalking; if (Walking) glutIdleFunc(IncrementStep); else agvSetAllowIdle(1); glutPostRedisplay(); break; case CMENU_RESET: FlatCSet(); ComputeCSetAndMakeLists(); glutPostRedisplay(); break; case CMENU_MIRROR: MirrorLegs = !MirrorLegs; ComputeCSetAndMakeLists(); glutPostRedisplay(); } }
void agvInit(int window) { glutMouseFunc(agvHandleButton); glutMotionFunc(agvHandleMotion); glutKeyboardFunc(agvHandleKeys); RedisplayWindow = glutGetWindow(); agvSetAllowIdle(window); }
void handlemenu(int value) { switch (value) { case MENU_AXES: DrawAxes = !DrawAxes; break; case MENU_QUIT: exit(0); break; case MENU_RING: Rotating = !Rotating; if (Rotating) { glutIdleFunc(rotatethering); /* install our idle function */ agvSetAllowIdle(0); /* and tell AGV to not */ } else { glutIdleFunc(NULL); /* uninstall our idle function */ agvSetAllowIdle(1); /* and tell AGV it can mess with it */ } break; } glutPostRedisplay(); }
void CurveHandleEditMenu(int curve) { if (curve >= NUM_JOINTS) return; if (EditingCurve == -1) { WasWalking = Walking; Walking = 0; agvSetAllowIdle(0); /* don't allow spinning, just slows us down */ glutIdleFunc(NULL); glutMouseFunc(CurveEditHandleButton); } EditingCurve = curve; glutPostRedisplay(); }