From 98a233da43acfa1bd1144d5b0236783beef30785 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 12 May 2020 16:27:12 +0200 Subject: [PATCH] little fixes to CClouds; disabled object clipping for SA cam --- src/core/Cam.cpp | 4 ++-- src/core/main.cpp | 3 +++ src/render/Clouds.cpp | 11 +++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp index 21569647..8cd44f6f 100644 --- a/src/core/Cam.cpp +++ b/src/core/Cam.cpp @@ -5099,7 +5099,7 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, CColPoint foundCol; CEntity* foundEnt; CWorld::pIgnoreEntity = CamTargetEntity; - if (CWorld::ProcessLineOfSight(TargetCoors, Source, foundCol, foundEnt, true, dontCollideWithCars < 0.1f, false, true, false, true, false)) { + if (CWorld::ProcessLineOfSight(TargetCoors, Source, foundCol, foundEnt, true, dontCollideWithCars < 0.1f, false, false, false, true, false)) { float obstacleTargetDist = (TargetCoors - foundCol.point).Magnitude(); float obstacleCamDist = newDistance - obstacleTargetDist; if (!foundEnt->IsPed() || obstacleCamDist <= 1.0f) { @@ -5108,7 +5108,7 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, RwCameraSetNearClipPlane(Scene.camera, Max(0.05f, obstacleTargetDist - 0.3f)); } } else { - if (!CWorld::ProcessLineOfSight(foundCol.point, Source, foundCol, foundEnt, true, dontCollideWithCars < 0.1f, false, true, false, true, false)) { + if (!CWorld::ProcessLineOfSight(foundCol.point, Source, foundCol, foundEnt, true, dontCollideWithCars < 0.1f, false, false, false, true, false)) { float lessClip = obstacleCamDist - 0.35f; if (lessClip <= DEFAULT_NEAR) RwCameraSetNearClipPlane(Scene.camera, lessClip); diff --git a/src/core/main.cpp b/src/core/main.cpp index d6af0b2a..bcd6202e 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -263,6 +263,9 @@ DoFade(void) void DoRWStuffEndOfFrame(void) { +char buf[100]; +sprintf(buf, "timestep: %f %f", CTimer::GetTimeStep(), CTimer::GetTimeStepInMilliseconds()); +CDebug::PrintAt(buf, 10, 10); CDebug::DisplayScreenStrings(); // custom CDebug::DebugDisplayTextBuffer(); FlushObrsPrintfs(); diff --git a/src/render/Clouds.cpp b/src/render/Clouds.cpp index 07688491..9c0fde0f 100644 --- a/src/render/Clouds.cpp +++ b/src/render/Clouds.cpp @@ -93,7 +93,7 @@ CClouds::Render(void) int minute = CClock::GetHours()*60 + CClock::GetMinutes(); RwV3d campos = *(RwV3d*)&TheCamera.GetPosition(); - float coverage = CWeather::CloudCoverage <= CWeather::Foggyness ? CWeather::Foggyness : CWeather::CloudCoverage; + float coverage = Max(CWeather::Foggyness, CWeather::Foggyness); // Moon int moonfadeout = Abs(minute - 180); // fully visible at 3AM @@ -308,20 +308,19 @@ CClouds::Render(void) bool UseDarkBackground(void) { - return RwFrameGetLTM(RwCameraGetFrame(TheCamera.m_pRwCamera))->up.z < -0.9f || - gbShowCollisionPolys; + return TheCamera.GetForward().z < -0.9f || gbShowCollisionPolys; } void CClouds::RenderBackground(int16 topred, int16 topgreen, int16 topblue, int16 botred, int16 botgreen, int16 botblue, int16 alpha) { - RwMatrix *mat = RwFrameGetLTM(RwCameraGetFrame(TheCamera.m_pRwCamera)); - float c = Sqrt(mat->right.x * mat->right.x + mat->right.y * mat->right.y); + CVector left = TheCamera.GetRight(); + float c = left.Magnitude2D(); if(c > 1.0f) c = 1.0f; ms_cameraRoll = Acos(c); - if(mat->right.z < 0.0f) + if(left.z < 0.0f) ms_cameraRoll = -ms_cameraRoll; if(UseDarkBackground()){