| |||||||||
| 
                             
  | 
                                 
  | 
                                     
  | |||||||
| 
                                             
  | 
                                                        
  | ||||||||
| 
                                                                                 
  | |||||||||
| 
             
 #include <stdlib.h> // definition of exit #include "vg.h" // main include file for Vega #include "pf.h" // main include file for Performer #include "assert.h" // definition of assert 
 #define UNTIL_THE_COWS_COME_HOME 1 
 vgPicker *picker = NULL; vgObserver *mainObs = NULL; vgChannel *mainChan = NULL; vgEnv *mainEnv = NULL; vgWindow *mainWin = NULL; vgGfx *mainGfx = NULL; vgScene *mainScn = NULL; 
 
 void setSystemPointers(); void createPicker(); void userUpdates(); void updateGFX( vgGfx *gfx, int what ); void doPick(); 
 
 void setSystemPointers(){ // #################################################### // # Local Function // # // # Set soem convinience pointers to the Vage sytems // # components defined in the ADF this function must // # be called after vgConfigSys() has been called // # // #################################################### 
 
 mainWin = vgGetWin( 0 ); assert(mainWin); 
 mainObs = vgGetObserv( 0 ); assert(mainObs ); 
 mainChan = vgGetObservChan( mainObs, 0 ); assert(mainChan); 
 mainGfx = vgGetObservGfx( mainObs ); assert(mainEnv); 
 mainEnv = vgGetEnv( 0 ); assert(mainEnv); 
 mainScn = vgGetScene(0); assert(mainScn); 
 } // setSystemPointers() 
 
 void updateGFX( vgGfx *gfx, int what ){ // ############################################ // # Local Function // # // # Simply toggle the GFX passed property // # // ############################################ int state = 0; 
 // // Sanity check // if( gfx == NULL ) return; 
 state = (int)vgGetProp( gfx, what ); 
 if( state ) vgProp( gfx, what, VG_OFF ); else vgProp( gfx, what, VG_ON ); 
 } // updateGFX() 
 
 
 void userUpdates( ) { // ############################################ // # Local Function // # // # To process user keyboard input // # // ############################################ int key = 0; static int stats = 0; static float tod = 1.0; static float first = 1; 
 
 // // First time through we need to // retrieve the current time of day // if (first) { first = 0; tod = vgGetProp( mainEnv, VGENV_TOD ); } 
 
 // // Note that in windows the Queue is // contains only one character // while( (key = vgGetWinKey( mainWin )) != 0 ) { 
 switch( key ) { 
 case '<': tod -= 0.01f; if( tod < 0.0 ) tod = 0.0; vgProp( mainEnv, VGENV_TOD, tod ); break; 
 case '>': tod += 0.01f; if( tod > 1.0 ) tod = 1.0; vgProp( mainEnv, VGENV_TOD, tod ); break; 
 
 case 's': stats += 1; if( stats > VGCHAN_FILL + 1 ) stats = VGCHAN_STATSOFF; 
 vgProp( mainChan, VGCHAN_STATSSEL, stats ); break; 
 case 'f': updateGFX( mainGfx, VGGFX_FOG ); break; 
 case 't': updateGFX( mainGfx, VGGFX_TEXTURE ); break; 
 case 'w': updateGFX( mainGfx, VGGFX_WIREFRAME ); break; 
 
 case 'p' : doPick(); break; 
 default: break; 
 } // switch } // while 
 } // userUpdates() 
 void doPick(){ // ################################################### // # Local Function // # // # Perform the a pick action if we are already // # have a valid pick picking it will unpick it // # // ################################################### static vgPosition *pos = NULL; pfGeode *geode = NULL; float range,x,y,z; 
 
 if( pos == NULL ){ pos = vgNewPos(); assert( pos ); } 
 // // We need to get the observers position // vgGetPos( mainObs, pos ); 
 
 // // Do the interection test if we have a valid hit with // the an item then process it otherwise do nothing // This takes the Eye ( mainObs ) position and fires a // LOS isector throught the Eye and mouse position // if( vgPerformPickProcessing( picker, pos) ){ 
         // // (vgPart *) vgGetPickerPickedPart ( picker ); // (pfGeode *) vgGetPickerPickedGeode ( picker ); // (pfGeoSet *) vgGetPickerPickedGeoSet( picker ); // // set with vgProp( picker, VGPICK_HL_LEVEL, VGPICK_GEODE ); //         geode = (pfGeode*) vgGetPickerPickedGeode ( picker ); // // Get the intersection positionand range to the pick point // vgGetPickerIntersection( picker, &range, &x,&y, &z); 
 } 
 } // doPick() 
 void createPicker(){ // ######################################## // # Local Function // # // # Create an instance of vgPicker // # // ######################################## 
 // // Create the new Terrain picker // picker = vgNewPicker(); assert( picker ); 
 vgName( picker, "example_picker" ); 
 
 // // we use the default scene 0 and channel 0 // vgPickerScene( picker, mainScn ); vgPickerChannel( picker, mainChan ); 
 // // Set the Pick highlight to Red // vgPickerHighLightColor( picker, 1.0f, 0.0f, 0.0f ); 
 // // Set the default for the vgPicker instance // vgProp( picker, VGPICK_TRANSFORM, VGPICK_TRANSLATE ); vgProp( picker, VGPICK_TRANSCOORDS, VGPICK_OBJECT_AXES ); vgProp( picker, VGPICK_HL_LEVEL, VGPICK_GEODE ); vgProp( picker, VGPICK_HL_STYLE, VGPICK_HL_FILL ); vgProp( picker, VGPICK_CLAMP, VGPICK_CLAMP_Z ); vgProp( picker, VGPICK_TERRAIN_CLAMP, VG_OFF ); vgProp( picker, VGPICK_TRANSOVERRIDE, VG_OFF ); vgProp( picker, VGPICK_DISPLAY_STDOUT, VG_OFF ); vgProp( picker, VGPICK_MULTIPLE_PICKS, VG_OFF ); vgProp( picker, VGPICK_AUTOTRANSFORM, VG_OFF ); vgProp( picker, VGPICK_TRACKPLANE, VGPICK_TRACK_XY ); vgProp( picker, VGPICK_AUTOTRACKPLANE, VG_OFF ); vgProp( picker, VGPICK_DRAG_FACTOR, 0.0f ); vgProp( picker, VGPICK_RENDER_ISECT, VG_OFF ); 
 // // Set the Internal isector mask to ALL // vgPickerClampIsector( picker, 0xffffffff ); vgPickerIsector( picker, 0xffffffff ); 
 // // We need to turn the vgPicker ON // vgProp( picker, VGCOMMON_ENABLED, VG_ON ); 
 } // createPicker() 
 
 
 int main(int argc, char* argv[]) { 
 
 
 // // This simple example requires that ADF configuration // is passed on the command line     //  
 // // Vega must be first initialise // vgInitSys(); 
 // // Next we defined the major Vega class instances by // passing the name of an ADF file from the command line // vgDefineSys( argv[1] ); 
 // // Now create the class instance defined in the ADF // vgConfigSys(); 
 
 // // Grab some pointers to the classes created // setSystemPointers(); 
 // // Create and initialise our picker // createPicker(); 
 // // Keep drawing until the default exit // key is pressed (ESC) or the windo closed // while( true ) { 
 vgSyncFrame(); vgFrame(); userUpdates(); } 
 
 return 0; }  |         ||
| 
             
 
 © Copyright 2004 Gordon Tomlinson All Rights Reserved. All logos, trademarks and copyrights in this site are property of their respective owner.  | 
        ||