#include #include #include #include #include #include #include #include #include #include "walkNavigator.h" static void createScene(pfChannel *chan,int argc,char **argv); static void loadObjects(int argc,char **argv,pfGroup *parent); int main(int argc,char **argv) { pfInit(); walkNavigator::init(); pfCAVEConfig(&argc,argv,NULL); CAVEFar = 1000; CAVENear = 1; pfConfig(); pfCAVEInitChannels(); if (CAVEConfig->Simulator) pfCAVEMasterChan()->getFStats()->setClass( PFSTATS_ALL^PFSTATSHW_ENGFXPIPE_FILL, PFSTATS_ON); else pfCAVEMasterChan()->getFStats()->setClass(PFSTATS_ALL, PFSTATS_OFF); createScene(pfCAVEMasterChan(),argc,argv); while (!CAVEgetbutton(CAVE_ESCKEY)) { pfSync(); pfCAVEPreFrame(); pfFrame(); pfCAVEPostFrame(); } pfCAVEHalt(); pfExit(); return 0; } static void createScene(pfChannel *chan,int argc,char **argv) { pfScene *scene; pfGeoState *gstate; walkNavigator *nav; pfLightSource *light; scene = new pfScene; gstate = new pfGeoState; gstate->setMode(PFSTATE_ENLIGHTING, PF_ON); gstate->setMode(PFSTATE_CULLFACE, PFCF_OFF); scene->setGState(gstate); scene->addChild(new pfLightSource); light = new pfLightSource; light->setPos(0.5,-1.0,1.0,0.0); light->setColor(PFLT_DIFFUSE,0.5,0.5,0.5); light->setAmbient(0.3,0.3,0.3); scene->addChild(light); nav = new walkNavigator; scene->addChild(nav); loadObjects(argc,argv,nav); nav->setGround(nav->getChild(0)); nav->setTravMask(PFTRAV_ISECT, 0xffffffff, PFTRAV_SELF|PFTRAV_DESCEND|PFTRAV_IS_CACHE, PF_OR); chan->setScene(scene); } static void loadObjects(int argc,char **argv,pfGroup *parent) { int i; pfNode *obj; for (i=1; iaddChild(obj); else pfExit(); } }