aboutsummaryrefslogtreecommitdiff
path: root/src/GameTick.cpp
diff options
context:
space:
mode:
authorNguyễn Gia Phong <cnx@loang.net>2023-11-26 02:58:31 +0900
committerNguyễn Gia Phong <cnx@loang.net>2023-11-26 02:58:31 +0900
commit54dd99f9df13974201c7a9eee694e17676d2302e (patch)
treece1535884a85afc07efa3abc05fee25066b2a88f /src/GameTick.cpp
parent91197fe7275f1902f3e4efa916e4c58f80282412 (diff)
downloadblackshades-54dd99f9df13974201c7a9eee694e17676d2302e.tar.gz
Fix recoil lag while sniping
Diffstat (limited to 'src/GameTick.cpp')
-rw-r--r--src/GameTick.cpp57
1 files changed, 25 insertions, 32 deletions
diff --git a/src/GameTick.cpp b/src/GameTick.cpp
index 21d7858..b0615e0 100644
--- a/src/GameTick.cpp
+++ b/src/GameTick.cpp
@@ -329,19 +329,6 @@ void look(Game* game, double xpos, double ypos)
camera.rotation2 = camera.rotation2 * 0.7 + camera.oldrotation2 * 0.3;
camera.rotation2 = std::min(std::max(camera.rotation2, -89.0f), 89.0f);
camera.oldrotation2 = camera.rotation2;
-
- if (game->zoom || visions || player.aimamount <= 0
- || player.whichgun == nogun
- || player.whichgun == grenade
- || player.whichgun == knife) {
- camera.visrotation = camera.rotation;
- camera.visrotation2 = camera.rotation2;
- } else {
- camera.visrotation = std::min(camera.rotation + 7,
- std::max(camera.rotation - 7, camera.visrotation));
- camera.visrotation2 = std::min(camera.rotation2 + 15,
- std::max(camera.rotation2 - 15, camera.visrotation2));
- }
}
void setListener(Game* game, XYZ facing)
@@ -2356,25 +2343,31 @@ hit_terrain:
camerashake-=multiplier;
if(camerashake<0)camerashake=0;
- // camera position
- XYZ average;
- if (this->zoom)
- average = person[0].skeleton.joints[righthand].position;
- else
- average = person[0].skeleton.joints[head].position * (0.5f + person[0].aimamount * 0.5f)
- + person[0].skeleton.joints[neck].position * (0.5f - person[0].aimamount * 0.5f);
-
- if(person[0].skeleton.free==0&&thirdperson!=2)camera.position=person[0].playercoords+rotate(average,0,person[0].playerrotation,0);
-
- if(person[0].skeleton.free==1&&thirdperson!=2)camera.position=average;
-
- //Restraints
-
- if(camera.position.y<.1)camera.position.y=.1;
-
- if(thirdperson!=2){
- oldrot=camera.visrotation;
- oldrot2=camera.visrotation2;
+ // Camera position and angle
+ const auto& average = this->zoom
+ ? this->person[0].skeleton.joints[righthand].position
+ : (this->person[0].skeleton.joints[head].position
+ * (0.5f + this->person[0].aimamount * 0.5f))
+ + (this->person[0].skeleton.joints[neck].position
+ * (0.5f - this->person[0].aimamount * 0.5f));
+ if (thirdperson != 2) {
+ camera.position = person[0].skeleton.free ? average
+ : person[0].playercoords
+ + rotate(average, 0, person[0].playerrotation, 0);
+ }
+ if (camera.position.y < 0.1f)
+ camera.position.y = 0.1f;
+ if (this->zoom || visions || this->person[0].aimamount <= 0
+ || this->person[0].whichgun == nogun
+ || this->person[0].whichgun == grenade
+ || this->person[0].whichgun == knife) {
+ camera.visrotation = camera.rotation;
+ camera.visrotation2 = camera.rotation2;
+ } else {
+ camera.visrotation = std::min(camera.rotation + 7,
+ std::max(camera.rotation - 7, camera.visrotation));
+ camera.visrotation2 = std::min(camera.rotation2 + 15,
+ std::max(camera.rotation2 - 15, camera.visrotation2));
}
//Kill count