diff options
Diffstat (limited to 'gaunt01/src/bird.cpp')
| -rw-r--r-- | gaunt01/src/bird.cpp | 71 |
1 files changed, 47 insertions, 24 deletions
diff --git a/gaunt01/src/bird.cpp b/gaunt01/src/bird.cpp index 9418b65..e27a2a2 100644 --- a/gaunt01/src/bird.cpp +++ b/gaunt01/src/bird.cpp @@ -11,19 +11,27 @@ finally drawAnimated() bird::bird() { - model.loadMesh("Bird-test.xml"); - texture.loadImage("TextureBird.jpg"); + if (model.loadMesh("Bird-poses.xml")) printf("mesh loaded with %i vertices, %i face indices, %i targets\n",model.getNumVertices(),model.getNumIndices(),model.getNumTargets()); + else printf("mesh XML file not parsed\n"); - //starting pos - position=ofVec3f(ofGetWidth()/2,ofGetHeight()/3,ofGetHeight()/2); - heading=ofVec3f(-1,0,0); - direction=ofVec3f(-1,0,0); - velocity=ofGetWidth()/100; + if (model.loadSeqs("Bird-anim.xml")) printf("animation loaded with %i sequences\n",model.getNumSequences()); + else printf("animation XML file not parsed\n"); - turnAngle=0; - diveAngle=0; + model.sequences["flap"].start(); + currentseq="hover"; - lastTime=ofGetElapsedTimef(); + texture.loadImage("TextureBird.jpg"); + + //starting pos + position=ofVec3f(ofGetWidth()/2,ofGetHeight(),-ofGetHeight()/4); + heading=-90; + direction=ofVec3f(0,-1,0); //director for a heading of 0, level + velocity=ofGetWidth()/50; + + turnRate=20; + diveRate=0; + + lastTime=ofGetElapsedTimef(); } bird::~bird() @@ -32,23 +40,38 @@ bird::~bird() } void bird::update(const vector<ofVec3f>& players){ - float time=ofGetElapsedTimef(); - float timeSeg=time-lastTime; - lastTime=time; - position+=direction*velocity*timeSeg; + float time=ofGetElapsedTimef(); + float timeSeg=time-lastTime; + lastTime=time; + heading+=turnRate*timeSeg; + + position-=direction.rotated(heading,ofVec3f(0,0,-1))*velocity*timeSeg; //.rotate(heading,ofVec3f(0,1,0)) } void bird::draw(){ - glEnable(GL_DEPTH_TEST); + glEnable(GL_DEPTH_TEST); + ofPushMatrix(); + ofTranslate(position); + ofRotate(90,0,0,1); + ofRotate(90,-1,0,0); + ofRotate(heading+90,0,1,0); + ofSetHexColor(0xffffff); + ofScale(.15,.15,.15); + bindTexture(texture); + model.drawAnimated(); + unbindTexture(texture); + ofPopMatrix(); + glDisable(GL_DEPTH_TEST); +} +void bird::drawShadow(){ ofPushMatrix(); - ofTranslate(position); - //ofRotate(direction); - ofRotate(90,0,0,1); - ofRotate(90,-1,0,0); - //ofRotate(180,1,0,0); - bindTexture(texture); - model.draw(); - unbindTexture(texture); + ofTranslate(position); + ofRotate(90,0,0,1); + ofRotate(90,-1,0,0); + ofRotate(heading+90,0,1,0); + ofSetHexColor(0x000000); + ofTranslate(0,(-ofGetHeight()/4)+5,0); + ofScale(.15,0,.15); + model.drawAnimated(); ofPopMatrix(); - glDisable(GL_DEPTH_TEST); } |
