#include "bird.h" /* keep track of the high-level properties of the bird here activate and control sequences of targets in the morphmesh finally drawAnimated() */ bird::bird() { 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"); if (model.loadSeqs("Bird-anim.xml")) printf("animation loaded with %i sequences\n",model.getNumSequences()); else printf("animation XML file not parsed\n"); model.sequences["flap"].start(); currentseq="hover"; 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() { //dtor } void bird::update(const map& players){ 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); 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(90,0,0,1); ofRotate(90,-1,0,0); ofRotate(heading+90,0,1,0); ofSetHexColor(0x303030); ofTranslate(0,(-ofGetHeight()/4)+5,0); ofScale(.15,0,.15); model.drawAnimated(); ofPopMatrix(); }