/* bareVR.c - A bare-bones VR program to be used as a starting point for Eng 591, Virtual Reality Programming. Written August 1999 by John T. Bell Last modified _________ by __________ */ #include #include #include "wt.h" /* Function Prototypes */ void UserActions( void ); /* Global Variables - Use only when NECESSARY */ WTnode *Root = NULL; WTviewpoint *Viewpoint = NULL; WTsensor *Mouse = NULL; int main ( int argc, char **argv ) { /* Intialize the Universe */ WTuniverse_new( WTDISPLAY_DEFAULT, WTWINDOW_DEFAULT ); /* Set some global variables */ Root = WTuniverse_getrootnodes(); Viewpoint = WTuniverse_getviewpoints(); /* Set up devices */ WTkeyboard_open(); Mouse = WTmouse_new(); if( !Mouse ) WTerror( "Sorry; A mouse is required to run" " this program.\n" ); else { WTmotionlink_new( Mouse, Viewpoint, WTSOURCE_SENSOR, WTTARGET_VIEWPOINT ); } /* Build the scene graph */ WTlightnode_newdirected( Root ); WTnode_load( Root, "oplan.nff", 1.0 ); WTnode_load( Root, "clown.dxf", 1.0 ); WTnode_load( Root, "lunchbox.3ds", 1.0 ); WTnode_load( Root, "snail.wrl", 1.0 ); /* Initialize the viewpoint */ WTwindow_zoomviewpoint( WTuniverse_getcurrwindow() ); /* Setup the action function */ WTuniverse_setactions( UserActions ); /* The "go" function runs the simulation. It doesn't return until we quit. */ WTuniverse_ready(); WTuniverse_go(); /* And now to clean up our toys and go home. */ WTuniverse_delete(); return 0; } /* End of Main Routine */ /********************************************************************************/ void UserActions( void ) { short key; /* Process Keyboard Input */ key = WTkeyboard_getlastkey(); if( key ) { switch( key ) { case 'q': case 'Q': WTuniverse_stop(); break; case 'p': case 'P': WTnode_print( Root ); break; case 'h': /* Help - Fall through to default */ case 'H': case '?': default: WTmessage( "\nThe following keys are active:\n\n" ); WTmessage( "Q or q: Quit.\n" ); WTmessage( "P or p: Print scene graph.\n" ); break; } } return; } /* End of UserActions */