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.cpp34
1 files changed, 32 insertions, 2 deletions
diff --git a/gaunt01/src/bird.cpp b/gaunt01/src/bird.cpp
index 9af751e..7d9fb02 100644
--- a/gaunt01/src/bird.cpp
+++ b/gaunt01/src/bird.cpp
@@ -18,7 +18,9 @@ bird::bird()
else printf("animation XML file not parsed\n");
model.sequences["flap"].start();
- currentseq="hover";
+
+ //how to track state/ bring animation in and out
+ state=SCANNING;
texture.loadImage("TextureBird.jpg");
@@ -204,6 +206,28 @@ void bird::update(map<int,player>& players, float angle){
else diveRate*=0.9f;
}
+ switch (state) {
+ case SCANNING:
+ if (diveRate>0.5f) {
+ model.sequences["flap"].fadeout(0.5);
+ model.sequences["swoop"].start();
+ state=SWOOPING;
+ }
+ break;
+ case SWOOPING:
+ if (diveRate<0.5f) {
+ model.sequences["swoop"].fadeout(0.5);
+ model.sequences["flap"].start();
+ state=SWOOPING;
+ }
+ break;
+ case ATTACKING:
+ break;
+ }
+
+ if (diveRate<0.0f) setSpeed(1.0f-diveRate);
+ else setSpeed(1.0f);
+
//if (sign(turnRate)) turnRate=min(2.0f,turnRate);
//else turnRate=max(-2.0f,turnRate);
@@ -224,7 +248,7 @@ void bird::update(map<int,player>& players, float angle){
while (heading <-180) heading=heading+360;
position-=direction.rotated(heading,ofVec3f(0,0,-1))*(velocity*ofGetHeight()*(1.0f+diveRate))*timeSeg; //.rotate(heading,ofVec3f(0,1,0))
- position +=ofVec3f(0,0,1)*diveRate*timeSeg;
+ position +=ofVec3f(0,0,5)*diveRate*timeSeg;
}
void bird::draw(){
glEnable(GL_DEPTH_TEST);
@@ -271,4 +295,10 @@ void bird::drawDebug(){
}
+void bird::setSpeed(float speed){
+ model.speed=speed;
+}
+float bird::getSpeed(){
+ return model.speed;
+}