mirror of
https://github.com/halpz/re3.git
synced 2025-07-23 02:29:46 +00:00
Merge pull request #650 from majesticCoding/miami
COcclusion done, I hope
This commit is contained in:
@ -16,6 +16,7 @@
|
||||
#include "VisibilityPlugins.h"
|
||||
#include "World.h"
|
||||
#include "Zones.h"
|
||||
#include "Occlusion.h"
|
||||
|
||||
uint8 CTheCarGenerators::ProcessCounter;
|
||||
uint32 CTheCarGenerators::NumOfCarGenerators;
|
||||
@ -151,7 +152,7 @@ void CCarGenerator::Process()
|
||||
{
|
||||
if (m_nVehicleHandle == -1 &&
|
||||
(CTheCarGenerators::GenerateEvenIfPlayerIsCloseCounter || CTimer::GetTimeInMilliseconds() >= m_nTimer) &&
|
||||
m_nUsesRemaining != 0 && CheckIfWithinRangeOfAnyPlayer())
|
||||
m_nUsesRemaining != 0 && CheckIfWithinRangeOfAnyPlayers())
|
||||
DoInternalProcessing();
|
||||
if (m_nVehicleHandle == -1)
|
||||
return;
|
||||
@ -203,14 +204,14 @@ bool CCarGenerator::CheckForBlockage(int32 mi)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CCarGenerator::CheckIfWithinRangeOfAnyPlayer()
|
||||
bool CCarGenerator::CheckIfWithinRangeOfAnyPlayers()
|
||||
{
|
||||
CVector2D direction = FindPlayerCentreOfWorld(CWorld::PlayerInFocus) - m_vecPos;
|
||||
float distance = direction.Magnitude();
|
||||
float farclip = 110.0f * TheCamera.GenerationDistMultiplier;
|
||||
float nearclip = farclip - 20.0f;
|
||||
bool canBeRemoved = (m_nModelIndex > 0 && CModelInfo::IsBoatModel(m_nModelIndex) && 165.0f * TheCamera.GenerationDistMultiplier > distance &&
|
||||
TheCamera.IsSphereVisible(m_vecPos, 0.0f)); // TODO(MIAMI) COcclision::IsPositionOccluded(m_vecPos, 0.0f)
|
||||
TheCamera.IsSphereVisible(m_vecPos, 0.0f) && COcclusion::IsPositionOccluded(m_vecPos, 0.0f));
|
||||
if (distance >= farclip || canBeRemoved){
|
||||
if (m_bIsBlocking)
|
||||
m_bIsBlocking = false;
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
void Process();
|
||||
void Setup(float x, float y, float z, float angle, int32 mi, int16 color1, int16 color2, uint8 force, uint8 alarm, uint8 lock, uint16 min_delay, uint16 max_delay);
|
||||
bool CheckForBlockage(int32 mi);
|
||||
bool CheckIfWithinRangeOfAnyPlayer();
|
||||
bool CheckIfWithinRangeOfAnyPlayers();
|
||||
void SetUsesRemaining(uint16 uses) { m_nUsesRemaining = uses; }
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user