// ******************************************************* // init_keys(): Define any extra keyboard shortcuts here virtual void init_keys() { keys.addHandler ( 'w', 0, Callback<Animation>( &Animation::forward , this ) ); keys.addHandler ( 'a', 0, Callback<Animation>( &Animation::left , this ) ); keys.addHandler ( 's', 0, Callback<Animation>( &Animation::back , this ) ); keys.addHandler ( 'd', 0, Callback<Animation>( &Animation::right , this ) ); keys.addHandler ( ' ', 0, Callback<Animation>( &Animation::up , this ) ); keys.addHandler ( 'z', 0, Callback<Animation>( &Animation::down , this ) ); keys.addHandler ( 'w', GLUT_Port::RELEASE, Callback<Animation>( &Animation::stopZ , this ) ); keys.addHandler ( 'a', GLUT_Port::RELEASE, Callback<Animation>( &Animation::stopX , this ) ); keys.addHandler ( 's', GLUT_Port::RELEASE, Callback<Animation>( &Animation::stopZ , this ) ); keys.addHandler ( 'd', GLUT_Port::RELEASE, Callback<Animation>( &Animation::stopX , this ) ); keys.addHandler ( ' ', GLUT_Port::RELEASE, Callback<Animation>( &Animation::stopY , this ) ); keys.addHandler ( 'z', GLUT_Port::RELEASE, Callback<Animation>( &Animation::stopY , this ) ); keys.addHandler ( '.', 0, Callback<Animation>( &Animation::roll_left , this ) ); keys.addHandler ( ',', 0, Callback<Animation>( &Animation::roll_right , this ) ); keys.addHandler ( 'r', 0, Callback<Animation>( &Animation::reset , this ) ); keys.addHandler ( 'f', 0, Callback<Animation>( &Animation::toggleLooking , this ) ); keys.addHandler ( 'n', GLUT_Port::ALT, Callback<Animation>( &Animation::toggleColorNormals , this ) ); keys.addHandler ( 'g', GLUT_Port::ALT, Callback<Animation>( &Animation::toggleGouraud , this ) ); keys.addHandler ( 's', GLUT_Port::ALT, Callback<Animation>( &Animation::toggleSolid , this ) ); keys.addHandler ( 'a', GLUT_Port::ALT, Callback<Animation>( &Animation::toggleAnimate , this ) ); update_controls< Animation >( keys ); }