summaryrefslogtreecommitdiffstats
path: root/src/render
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2019-11-09 14:44:36 +0100
committerNikolay Korolev <nickvnuk@gmail.com>2019-11-09 14:44:36 +0100
commit5ef291ddf27aed2c27b39c3c30a9d5d27f7548b9 (patch)
tree710f5904ec705a30d64a568ce5f3ede0e2d91690 /src/render
parentscript stubs (diff)
parentFix link to config.h in readme (diff)
downloadre3-5ef291ddf27aed2c27b39c3c30a9d5d27f7548b9.tar
re3-5ef291ddf27aed2c27b39c3c30a9d5d27f7548b9.tar.gz
re3-5ef291ddf27aed2c27b39c3c30a9d5d27f7548b9.tar.bz2
re3-5ef291ddf27aed2c27b39c3c30a9d5d27f7548b9.tar.lz
re3-5ef291ddf27aed2c27b39c3c30a9d5d27f7548b9.tar.xz
re3-5ef291ddf27aed2c27b39c3c30a9d5d27f7548b9.tar.zst
re3-5ef291ddf27aed2c27b39c3c30a9d5d27f7548b9.zip
Diffstat (limited to 'src/render')
-rw-r--r--src/render/Credits.cpp5
-rw-r--r--src/render/Credits.h2
-rw-r--r--src/render/Renderer.cpp24
-rw-r--r--src/render/Renderer.h4
4 files changed, 22 insertions, 13 deletions
diff --git a/src/render/Credits.cpp b/src/render/Credits.cpp
index 6d20c1ff..8f4e2270 100644
--- a/src/render/Credits.cpp
+++ b/src/render/Credits.cpp
@@ -493,6 +493,11 @@ CCredits::Render(void)
bCreditsGoing = false;
}
+bool CCredits::AreCreditsDone(void)
+{
+ return !bCreditsGoing;
+}
+
STARTPATCHES
InjectHook(0x4FE7A0, CCredits::Init, PATCH_JUMP);
InjectHook(0x4FE760, CCredits::Start, PATCH_JUMP);
diff --git a/src/render/Credits.h b/src/render/Credits.h
index cbe63172..c39fb035 100644
--- a/src/render/Credits.h
+++ b/src/render/Credits.h
@@ -8,7 +8,7 @@ public:
static void Init(void);
static void Start(void);
static void Stop(void);
- static bool AreCreditsDone(void) { return bCreditsGoing; }
+ static bool AreCreditsDone(void);
static void Render(void);
static void PrintCreditSpace(float space, uint32 &line);
static void PrintCreditText(float scaleX, float scaleY, wchar *text, uint32 &lineoffset, float scrolloffset);
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 562d5882..8322c22a 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -40,9 +40,9 @@ struct EntityInfo
CLinkList<EntityInfo> &gSortedVehiclesAndPeds = *(CLinkList<EntityInfo>*)0x629AC0;
int32 &CRenderer::ms_nNoOfVisibleEntities = *(int32*)0x940730;
-CEntity **CRenderer::ms_aVisibleEntityPtrs = (CEntity**)0x6E9920;
+CEntity *(&CRenderer::ms_aVisibleEntityPtrs)[NUMVISIBLEENTITIES] = *(CEntity * (*)[NUMVISIBLEENTITIES]) * (uintptr*)0x6E9920;
+CEntity *(&CRenderer::ms_aInVisibleEntityPtrs)[NUMINVISIBLEENTITIES] = *(CEntity * (*)[NUMINVISIBLEENTITIES]) * (uintptr*)0x880B50;
int32 &CRenderer::ms_nNoOfInVisibleEntities = *(int32*)0x8F1B78;
-CEntity **CRenderer::ms_aInVisibleEntityPtrs = (CEntity**)0x880B50;
CVector &CRenderer::ms_vecCameraPosition = *(CVector*)0x8E2C3C;
CVehicle *&CRenderer::m_pFirstPersonVehicle = *(CVehicle**)0x885B80;
@@ -73,9 +73,9 @@ CRenderer::PreRender(void)
for(i = 0; i < ms_nNoOfInVisibleEntities; i++)
ms_aInVisibleEntityPtrs[i]->PreRender();
- for(node = CVisibilityPlugins::m_alphaEntityList.tail.prev;
- node != &CVisibilityPlugins::m_alphaEntityList.head;
- node = node->prev)
+ for(node = CVisibilityPlugins::m_alphaEntityList.head.next;
+ node != &CVisibilityPlugins::m_alphaEntityList.tail;
+ node = node->next)
((CEntity*)node->item.entity)->PreRender();
CHeli::SpecialHeliPreRender();
@@ -983,7 +983,7 @@ CRenderer::ScanSectorList(CPtrList *lists)
dy = ms_vecCameraPosition.y - ent->GetPosition().y;
if(dx > -65.0f && dx < 65.0f &&
dy > -65.0f && dy < 65.0f &&
- ms_nNoOfInVisibleEntities < 150)
+ ms_nNoOfInVisibleEntities < NUMINVISIBLEENTITIES - 1)
ms_aInVisibleEntityPtrs[ms_nNoOfInVisibleEntities++] = ent;
break;
case VIS_STREAMME:
@@ -1033,7 +1033,7 @@ CRenderer::ScanSectorList_Priority(CPtrList *lists)
dy = ms_vecCameraPosition.y - ent->GetPosition().y;
if(dx > -65.0f && dx < 65.0f &&
dy > -65.0f && dy < 65.0f &&
- ms_nNoOfInVisibleEntities < 150)
+ ms_nNoOfInVisibleEntities < NUMINVISIBLEENTITIES - 1)
ms_aInVisibleEntityPtrs[ms_nNoOfInVisibleEntities++] = ent;
break;
case VIS_STREAMME:
@@ -1078,7 +1078,7 @@ CRenderer::ScanSectorList_Subway(CPtrList *lists)
dy = ms_vecCameraPosition.y - ent->GetPosition().y;
if(dx > -65.0f && dx < 65.0f &&
dy > -65.0f && dy < 65.0f &&
- ms_nNoOfInVisibleEntities < 150)
+ ms_nNoOfInVisibleEntities < NUMINVISIBLEENTITIES - 1)
ms_aInVisibleEntityPtrs[ms_nNoOfInVisibleEntities++] = ent;
break;
}
@@ -1160,8 +1160,12 @@ CRenderer::IsEntityCullZoneVisible(CEntity *ent)
return IsVehicleCullZoneVisible(ent);
case ENTITY_TYPE_PED:
ped = (CPed*)ent;
- if(ped->bInVehicle)
- return ped->m_pMyVehicle && IsVehicleCullZoneVisible(ped->m_pMyVehicle);
+ if (ped->bInVehicle) {
+ if (ped->m_pMyVehicle)
+ return IsVehicleCullZoneVisible(ped->m_pMyVehicle);
+ else
+ return true;
+ }
return !(ped->m_pCurSurface && ped->m_pCurSurface->bZoneCulled2);
case ENTITY_TYPE_OBJECT:
obj = (CObject*)ent;
diff --git a/src/render/Renderer.h b/src/render/Renderer.h
index 817cdaae..ea49ed4e 100644
--- a/src/render/Renderer.h
+++ b/src/render/Renderer.h
@@ -19,9 +19,9 @@ class CPtrList;
class CRenderer
{
static int32 &ms_nNoOfVisibleEntities;
- static CEntity **ms_aVisibleEntityPtrs; // [2000];
+ static CEntity *(&ms_aVisibleEntityPtrs)[NUMVISIBLEENTITIES];
static int32 &ms_nNoOfInVisibleEntities;
- static CEntity **ms_aInVisibleEntityPtrs; // [150];
+ static CEntity *(&ms_aInVisibleEntityPtrs)[NUMINVISIBLEENTITIES];
static CVector &ms_vecCameraPosition;
static CVehicle *&m_pFirstPersonVehicle;