From 6d61f678e22d46af166a0b81eb4a405ff8e076df Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 27 Oct 2019 16:05:47 +0200 Subject: Fixed credits not working --- src/render/Credits.cpp | 5 +++++ src/render/Credits.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src/render') 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); -- cgit v1.2.3 From 1b8533f256fac4fecf644efaae1491e6b8dafc25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Sun, 3 Nov 2019 02:13:29 +0300 Subject: Renderer fixes --- src/render/Renderer.cpp | 24 ++++++++++++++---------- src/render/Renderer.h | 4 ++-- 2 files changed, 16 insertions(+), 12 deletions(-) (limited to 'src/render') 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 &gSortedVehiclesAndPeds = *(CLinkList*)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; -- cgit v1.2.3