diff options
Diffstat (limited to 'gaunt01/src/bird.cpp')
| -rw-r--r-- | gaunt01/src/bird.cpp | 34 |
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; +} |
