Merge pull request #650 from majesticCoding/miami

COcclusion done, I hope
This commit is contained in:
aap 2020-07-20 19:56:18 +02:00 committed by GitHub
commit ee2d0ffc14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 494 additions and 10 deletions

View file

@ -31,6 +31,7 @@
#include "Ped.h"
#include "Dummy.h"
#include "WindModifiers.h"
#include "Occlusion.h"
//--MIAMI: file almost done (see TODO)
@ -1157,3 +1158,37 @@ bool IsEntityPointerValid(CEntity* pEntity)
}
return false;
}
bool CEntity::IsEntityOccluded(void) {
return false;
CVector coors;
float width, height;
if (!COcclusion::NumActiveOccluders || !CalcScreenCoors(GetBoundCentre(), &coors, &width, &height))
return false;
float area = Max(width, height) * GetBoundRadius() * 0.9f;
for (int i = 0; i < COcclusion::NumActiveOccluders; i++) {
if (coors.z - (GetBoundRadius() * 0.85f) > COcclusion::aActiveOccluders[i].radius) {
if (COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, area)) {
return true;
}
if (COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) {
CVector min = m_matrix * CModelInfo::GetModelInfo(GetModelIndex())->GetColModel()->boundingBox.min;
CVector max = m_matrix * CModelInfo::GetModelInfo(GetModelIndex())->GetColModel()->boundingBox.max;
if (CalcScreenCoors(min, &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
if (CalcScreenCoors(CVector(max.x, max.y, min.z), &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
if (CalcScreenCoors(CVector(max.x, min.y, max.z), &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
if (CalcScreenCoors(CVector(min.x, max.y, max.z), &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
return true;
}
}
}
return false;
}