summaryrefslogtreecommitdiff
path: root/gaunt01/src/bird.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gaunt01/src/bird.cpp')
-rw-r--r--gaunt01/src/bird.cpp71
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);
}