diff options
Diffstat (limited to 'src/GameTick.cpp')
-rw-r--r-- | src/GameTick.cpp | 80 |
1 files changed, 35 insertions, 45 deletions
diff --git a/src/GameTick.cpp b/src/GameTick.cpp index 5cd11b8..dd23dc9 100644 --- a/src/GameTick.cpp +++ b/src/GameTick.cpp @@ -2184,53 +2184,43 @@ void Game::Tick(){ } //Tackle - - if(person[0].currentanimation==diveanim&&visions==0){ - - for(int i=1;i<numpeople;i++){ - - if(person[i].skeleton.free<1&&findDistancefast(person[i].playercoords,person[0].playercoords+flatfacing)<22){ - - float gLoc[3]; - - gLoc[0]=(camera.position.x+((person[0].playercoords.x+flatfacing.x)-camera.position.x)/2)/soundscalefactor; - - gLoc[1]=(camera.position.y+((person[0].playercoords.y+flatfacing.y)-camera.position.y)/2)/soundscalefactor; - - gLoc[2]=(camera.position.z+((person[0].playercoords.z+flatfacing.z)-camera.position.z)/2)/soundscalefactor; - - alSourcefv(gSourceID[headwhacksound], AL_POSITION, gLoc); - - alSourcePlay(gSourceID[headwhacksound]); - - person[i].skeleton.free=1; - - person[i].longdead=1; - - for(int j=0;j<person[i].skeleton.num_joints;j++){ - - person[i].skeleton.joints[j].position=DoRotation(person[i].skeleton.joints[j].position,0,person[i].playerrotation,0); - - person[i].skeleton.joints[j].position+=person[i].playercoords; - - person[i].skeleton.joints[j].realoldposition=person[i].skeleton.joints[j].position; - - person[i].skeleton.joints[j].velocity=person[0].velocity; - - person[i].skeleton.joints[j].velocity.y=-10; - - person[i].skeleton.joints[j].velocity.x+=abs(Random()%10)-5; - - person[i].skeleton.joints[j].velocity.y+=abs(Random()%10)-5; - - person[i].skeleton.joints[j].velocity.z+=abs(Random()%10)-5; - - } - + if (person[0].currentanimation == diveanim && visions == 0) { + for (int i = 1; i < numpeople; i++) { + if (person[i].skeleton.free > 0 + || findDistancefast(person[i].playercoords, + person[0].playercoords + + flatfacing) > 22) + continue; + + float gLoc[3] { + (camera.position.x + + person[0].playercoords.x + + flatfacing.x) / soundscalefactor / 2, + (camera.position.y + + person[0].playercoords.y + + flatfacing.y) / soundscalefactor / 2, + (camera.position.z + + person[0].playercoords.z + + flatfacing.z) / soundscalefactor / 2, + }; + + alSourcefv(gSourceID[headwhacksound], + AL_POSITION, gLoc); + alSourcePlay(gSourceID[headwhacksound]); + person[i].skeleton.free = 1; + person[i].longdead = 1; + + for (auto& joint : person[i].skeleton.joints) { + joint.position = DoRotation(joint.position, 0, person[i].playerrotation, 0); + joint.position += person[i].playercoords; + joint.realoldposition = joint.position; + joint.velocity = person[0].velocity; + joint.velocity.y = -10; + joint.velocity.x += abs(Random() % 10) - 5; + joint.velocity.y += abs(Random() % 10) - 5; + joint.velocity.z += abs(Random() % 10) - 5; } - } - } //Fire/wing |