From e0b3418e65a81ed986507c186ba5f2e2eae1cb30 Mon Sep 17 00:00:00 2001
From: Sergeanur <s.anureev@yandex.ua>
Date: Fri, 8 May 2020 14:34:21 +0300
Subject: [PATCH] Fix water UV on high FPS and inverted free camera

---
 src/core/Cam.cpp          | 2 +-
 src/core/Timer.h          | 5 +++++
 src/render/WaterLevel.cpp | 5 +++++
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp
index e33e6bb0..76d8d22b 100644
--- a/src/core/Cam.cpp
+++ b/src/core/Cam.cpp
@@ -4489,7 +4489,7 @@ CCam::Process_FollowPed_Rotation(const CVector &CameraTarget, float TargetOrient
 */
 	{
 		LookLeftRight = -CPad::GetPad(0)->LookAroundLeftRight();
-		LookUpDown = CPad::GetPad(0)->LookAroundUpDown();
+		LookUpDown = -CPad::GetPad(0)->LookAroundUpDown();
 	}
 	float AlphaOffset, BetaOffset;
 	if(UseMouse){
diff --git a/src/core/Timer.h b/src/core/Timer.h
index 00a11409..004cda4d 100644
--- a/src/core/Timer.h
+++ b/src/core/Timer.h
@@ -56,6 +56,11 @@ public:
 
 	friend bool GenericLoad(void);
 	friend bool GenericSave(int file);
+
+#ifdef FIX_BUGS
+	static float GetDefaultTimeStep(void) { return 5.0f / 3.0f; }
+	static float GetTimeStepFix(void) { return GetTimeStep() / GetDefaultTimeStep(); }
+#endif
 };
 
 #ifdef FIX_BUGS
diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp
index d7035ab1..e8e79f96 100644
--- a/src/render/WaterLevel.cpp
+++ b/src/render/WaterLevel.cpp
@@ -351,8 +351,13 @@ CWaterLevel::RenderWater()
 	
 	if ( !CTimer::GetIsPaused() )
 	{
+#ifdef FIX_BUGS
+		TEXTURE_ADDU += (CGeneral::GetRandomNumberInRange(-0.0005f, 0.0005f) + windAddUV) * CTimer::GetTimeStepFix();
+		TEXTURE_ADDV += (CGeneral::GetRandomNumberInRange(-0.0005f, 0.0005f) + windAddUV) * CTimer::GetTimeStepFix();
+#else
 		TEXTURE_ADDU += CGeneral::GetRandomNumberInRange(-0.0005f, 0.0005f) + windAddUV;
 		TEXTURE_ADDV += CGeneral::GetRandomNumberInRange(-0.0005f, 0.0005f) + windAddUV;
+#endif
 	}
 	
 	if ( TEXTURE_ADDU >= 1.0f )