Braun, Tom (tom.braun++at++lmco.com)
Wed, 18 Aug 1999 10:21:14 -0400
Thanks in advance for the help.
Here is a snippet of the code:
// Update the Texture coordinate info for ceiling bump mapping
void UpdateWaveState(void)
{
gstate->setAttr(PFSTATE_TEXTURE, TiTex[frame_count]);
frame_count ++;
if(frame_count >= NUM_FRAMES)
frame_count = 0;
}
pfNode *MakeWaveState(void)
{
int i, j;
// Set up geoset
int *lengths = (int *) new(NUM_PRIMS*sizeof(int)) pfMemory;
pfTexEnv *tev = new pfTexEnv;
tev->setMode(PFTE_MODULATE);
tev->apply();
frame_count = 0;
for(i=0; i<NUM_FRAMES; i++)
{
char fname[80];
TiTex[i] = new pfTexture;
TiTex[i]->setFilter(PFTEX_MINFILTER, PFTEX_MIPMAP_TRILINEAR);
TiTex[i]->setFilter(PFTEX_MAGFILTER, PFTEX_BILINEAR);
TiTex[i]->setRepeat(PFTEX_WRAP_S, PFTEX_REPEAT);
TiTex[i]->setRepeat(PFTEX_WRAP_T, PFTEX_REPEAT);
if(i < 10)
sprintf(fname, "Animations/Wave0%1d.bw", i);
else
sprintf(fname, "Animations/Wave%2d.bw", i);
TiTex[i]->loadFile(fname);
TiTex[i]->setFilter(PFTEX_MAGFILTER, PFTEX_BILINEAR);
cout << "LOADING ANIMATION FILE : " << fname << endl;
}
gstate = new pfGeoState;
gstate->setAttr(PFSTATE_TEXTURE, TiTex[frame_count]);
gstate->setMode(PFSTATE_TRANSPARENCY, PFTR_OFF);
gstate->setMode(PFSTATE_ENTEXTURE, PF_ON);
gstate->setMode(PFSTATE_ENLIGHTING,0);
gstate->setMode(PFSTATE_CULLFACE,PFCF_OFF);
gstate->setAttr(PFSTATE_TEXENV, tev);
pfGeode *geode = new pfGeode;
pfVec3 *coords3 = (pfVec3*) new(4*sizeof(pfVec3) ) pfMemory;
pfVec2 *Tcoords = (pfVec2*) new(4*sizeof(pfVec2), pfGetSharedArena())
pfMemory; // TB changed from 8 to 4
coords3[0].set( -30.0f, -30.0f, 0.0f); // box verticies for text
coords3[1].set( -30.0f, 30.0f, 0.0f );
coords3[2].set( 30.0f, 30.0f, 0.0f );
coords3[3].set( 30.0f, -30.0f, 0.0f );
Tcoords[0].set( 0.0f, 0.0f);
Tcoords[1].set( 0.0f, 1.0f);
Tcoords[2].set( 1.0f, 1.0f);
Tcoords[3].set( 1.0f, 0.0f);
pfGeoSet *gset = new pfGeoSet;
gset->setAttr(PFGS_COORD3, PFGS_PER_VERTEX, coords3, 0);
gset->setAttr(PFGS_TEXCOORD2, PFGS_PER_VERTEX, Tcoords, 0);
gset->setPrimLengths(lengths);
gset->setPrimType(PFGS_QUADS);
gset->setNumPrims(NUM_PRIMS);
gset->setGState(gstate);
/* Draw textured gset */
gset->draw();
geode->addGSet(gset);
geode->setTravFuncs(PFTRAV_DRAW, PreDrawPass, PostDrawPass);
pfGroup *group = new pfGroup;
group->addChild(geode);
return (pfNode *) group;
}
static int PreDrawPass(pfTraverser *, void *)
{
pfDisable(PFEN_TEXTURE);
pfOverride(PFSTATE_ENTEXTURE, PF_ON);
return PFTRAV_CONT;
}
static int PostDrawPass(pfTraverser *, void *)
{
pfOverride(PFSTATE_ENTEXTURE, PF_OFF);
pfEnable(PFEN_TEXTURE);
return PFTRAV_CONT;
}
This archive was generated by hypermail 2.0b2 on Wed Aug 18 1999 - 11:25:41 PDT