diff options
author | withmorten <morten.with@gmail.com> | 2021-01-21 03:20:31 +0100 |
---|---|---|
committer | withmorten <morten.with@gmail.com> | 2021-01-21 03:20:31 +0100 |
commit | f2596b3759e11098e27f440b129293adab1f4c07 (patch) | |
tree | 9157c19ae9a5c7c7fbfd3ec43ce6663297d050a1 /src/core/Camera.cpp | |
parent | make building with Codewarrior 7 possible (diff) | |
parent | fixed saving (diff) | |
download | re3-f2596b3759e11098e27f440b129293adab1f4c07.tar re3-f2596b3759e11098e27f440b129293adab1f4c07.tar.gz re3-f2596b3759e11098e27f440b129293adab1f4c07.tar.bz2 re3-f2596b3759e11098e27f440b129293adab1f4c07.tar.lz re3-f2596b3759e11098e27f440b129293adab1f4c07.tar.xz re3-f2596b3759e11098e27f440b129293adab1f4c07.tar.zst re3-f2596b3759e11098e27f440b129293adab1f4c07.zip |
Diffstat (limited to 'src/core/Camera.cpp')
-rw-r--r-- | src/core/Camera.cpp | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 7a831068..9d169716 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -3629,9 +3629,17 @@ CCamera::CalculateDerivedValues(void) bool CCamera::IsPointVisible(const CVector ¢er, const CMatrix *mat) { - RwV3d c; - c = center; - RwV3dTransformPoints(&c, &c, 1, &mat->m_matrix); +#ifdef GTA_PS2 + CVuVector c; + TransformPoint(c, *mat, center); +#else + CVector c = center; + #ifdef FIX_BUGS + c = *mat * center; + #else + RwV3dTransformPoints(&c, &c, 1, (RwMatrix*)mat); + #endif +#endif if(c.y < CDraw::GetNearClipZ()) return false; if(c.y > CDraw::GetFarClipZ()) return false; if(c.x*m_vecFrustumNormals[0].x + c.y*m_vecFrustumNormals[0].y > 0.0f) return false; @@ -3644,9 +3652,17 @@ CCamera::IsPointVisible(const CVector ¢er, const CMatrix *mat) bool CCamera::IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat) { - RwV3d c; - c = center; - RwV3dTransformPoints(&c, &c, 1, &mat->m_matrix); +#ifdef GTA_PS2 + CVuVector c; + TransformPoint(c, *mat, center); +#else + CVector c = center; + #ifdef FIX_BUGS + c = *mat * center; + #else + RwV3dTransformPoints(&c, &c, 1, (RwMatrix*)mat); + #endif +#endif if(c.y + radius < CDraw::GetNearClipZ()) return false; if(c.y - radius > CDraw::GetFarClipZ()) return false; if(c.x*m_vecFrustumNormals[0].x + c.y*m_vecFrustumNormals[0].y > radius) return false; @@ -3664,11 +3680,24 @@ CCamera::IsSphereVisible(const CVector ¢er, float radius) } bool -CCamera::IsBoxVisible(RwV3d *box, const CMatrix *mat) +#ifdef GTA_PS2 +CCamera::IsBoxVisible(CVuVector *box, const CMatrix *mat) +#else +CCamera::IsBoxVisible(CVector *box, const CMatrix *mat) +#endif { int i; int frustumTests[6] = { 0 }; - RwV3dTransformPoints(box, box, 8, &mat->m_matrix); +#ifdef GTA_PS2 + TransformPoints(box, 8, *mat, box); +#else + #ifdef FIX_BUGS + for (i = 0; i < 8; i++) + box[i] = *mat * box[i]; + #else + RwV3dTransformPoints(box, box, 8, (RwMatrix*)mat); + #endif +#endif for(i = 0; i < 8; i++){ if(box[i].y < CDraw::GetNearClipZ()) frustumTests[0]++; |