mirror of
https://github.com/halpz/re3.git
synced 2025-07-03 04:20:46 +00:00
Sync matrix with master
This commit is contained in:
@ -4055,9 +4055,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;
|
||||
@ -4070,9 +4078,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;
|
||||
@ -4090,11 +4106,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]++;
|
||||
|
@ -633,7 +633,11 @@ public:
|
||||
bool IsPointVisible(const CVector ¢er, const CMatrix *mat);
|
||||
bool IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat);
|
||||
bool IsSphereVisible(const CVector ¢er, float radius);
|
||||
bool IsBoxVisible(RwV3d *box, const CMatrix *mat);
|
||||
#ifdef GTA_PS2
|
||||
bool IsBoxVisible(CVuVector *box, const CMatrix *mat);
|
||||
#else
|
||||
bool IsBoxVisible(CVector *box, const CMatrix *mat);
|
||||
#endif
|
||||
};
|
||||
|
||||
VALIDATE_SIZE(CCamera, 0xE9D8);
|
||||
|
Reference in New Issue
Block a user