re3-wiiu/src/render/Renderer.h

106 lines
3.1 KiB
C
Raw Normal View History

2019-05-15 16:52:37 +02:00
#pragma once
class CEntity;
2020-12-13 12:53:19 +01:00
#ifdef FIX_BUGS
#define LOD_DISTANCE (300.0f*TheCamera.LODDistMultiplier)
#else
#define LOD_DISTANCE 300.0f
#endif
#define FADE_DISTANCE 20.0f
#define STREAM_DISTANCE 30.0f
2019-05-15 16:52:37 +02:00
extern bool gbShowPedRoadGroups;
extern bool gbShowCarRoadGroups;
extern bool gbShowCollisionPolys;
2019-07-19 13:58:19 +02:00
extern bool gbShowCollisionLines;
extern bool gbBigWhiteDebugLightSwitchedOn;
2019-05-15 16:52:37 +02:00
extern bool gbDontRenderBuildings;
extern bool gbDontRenderBigBuildings;
extern bool gbDontRenderPeds;
extern bool gbDontRenderObjects;
2019-07-19 13:58:19 +02:00
extern bool gbDontRenderVehicles;
2019-05-15 16:52:37 +02:00
class CVehicle;
class CPtrList;
2020-11-22 00:13:07 +01:00
// unused
struct BlockedRange
{
float a, b; // unknown
BlockedRange *prev, *next;
};
2019-05-15 16:52:37 +02:00
class CRenderer
{
2020-04-15 18:19:45 +02:00
static int32 ms_nNoOfVisibleEntities;
static CEntity *ms_aVisibleEntityPtrs[NUMVISIBLEENTITIES];
static int32 ms_nNoOfInVisibleEntities;
static CEntity *ms_aInVisibleEntityPtrs[NUMINVISIBLEENTITIES];
2020-11-03 20:33:07 +01:00
#ifdef NEW_RENDERER
static int32 ms_nNoOfVisibleVehicles;
static CEntity *ms_aVisibleVehiclePtrs[NUMVISIBLEENTITIES];
// for cWorldStream emulation
static int32 ms_nNoOfVisibleBuildings;
static CEntity *ms_aVisibleBuildingPtrs[NUMVISIBLEENTITIES];
#endif
2019-05-15 16:52:37 +02:00
2020-04-15 18:19:45 +02:00
static CVector ms_vecCameraPosition;
static CVehicle *m_pFirstPersonVehicle;
2020-11-22 00:13:07 +01:00
// unused
static BlockedRange aBlockedRanges[16];
static BlockedRange *pFullBlockedRanges;
static BlockedRange *pEmptyBlockedRanges;
2019-05-15 16:52:37 +02:00
public:
2020-04-15 18:19:45 +02:00
static float ms_lodDistScale;
static bool m_loadingPriority;
2019-06-27 00:12:58 +02:00
2019-05-15 16:52:37 +02:00
static void Init(void);
2019-07-06 12:27:21 +02:00
static void Shutdown(void);
2019-05-31 11:44:43 +02:00
static void PreRender(void);
2019-05-15 16:52:37 +02:00
static void RenderRoads(void);
static void RenderFadingInEntities(void);
2020-05-11 17:03:32 +02:00
static void RenderFadingInUnderwaterEntities(void);
2019-05-15 16:52:37 +02:00
static void RenderEverythingBarRoads(void);
static void RenderBoats(void);
static void RenderOneRoad(CEntity *);
static void RenderOneNonRoad(CEntity *);
static void RenderFirstPersonVehicle(void);
2019-07-19 13:58:19 +02:00
static void RenderCollisionLines(void);
2019-05-15 16:52:37 +02:00
static int32 SetupEntityVisibility(CEntity *ent);
static int32 SetupBigBuildingVisibility(CEntity *ent);
static void ConstructRenderList(void);
static void ScanWorld(void);
static void RequestObjectsInFrustum(void);
static void ScanSectorPoly(RwV2d *poly, int32 numVertices, void (*scanfunc)(CPtrList *));
static void ScanBigBuildingList(CPtrList &list);
static void ScanSectorList(CPtrList *lists);
static void ScanSectorList_Priority(CPtrList *lists);
static void ScanSectorList_Subway(CPtrList *lists);
static void ScanSectorList_RequestModels(CPtrList *lists);
static void SortBIGBuildings(void);
static void SortBIGBuildingsForSectorList(CPtrList *list);
2020-05-11 17:03:32 +02:00
static bool ShouldModelBeStreamed(CEntity *ent, const CVector &campos);
static void RemoveVehiclePedLights(CEntity *ent, bool reset);
2020-11-03 20:33:07 +01:00
#ifdef NEW_RENDERER
static void ClearForFrame(void);
2020-11-04 23:11:27 +01:00
static void RenderPeds(void);
static void RenderVehicles(void); // also renders peds in LCS
2020-11-03 20:33:07 +01:00
static void RenderOneBuilding(CEntity *ent, float camdist = 0.0f);
static void RenderWorld(int pass); // like cWorldStream::Render(int)
2020-11-04 16:22:15 +01:00
static void RenderTransparentWater(void); // keep-out polys and transparent water
2020-11-03 20:33:07 +01:00
#endif
2020-11-04 16:22:15 +01:00
static void InsertEntityIntoList(CEntity *ent);
2019-05-15 16:52:37 +02:00
};