the great reorganization
This commit is contained in:
94
src/core/ZoneCull.h
Normal file
94
src/core/ZoneCull.h
Normal file
@@ -0,0 +1,94 @@
|
||||
class CCullZone
|
||||
{
|
||||
public:
|
||||
CVector position;
|
||||
float minx;
|
||||
float maxx;
|
||||
float miny;
|
||||
float maxy;
|
||||
float minz;
|
||||
float maxz;
|
||||
|
||||
// TODO: figure these out:
|
||||
int32 m_indexStart;
|
||||
int16 unk2;
|
||||
int16 unk3;
|
||||
int16 unk4;
|
||||
int16 m_numBuildings;
|
||||
int16 m_numTreadablesPlus10m;
|
||||
int16 m_numTreadables;
|
||||
|
||||
void DoStuffLeavingZone(void);
|
||||
static void DoStuffLeavingZone_OneBuilding(uint16 i);
|
||||
static void DoStuffLeavingZone_OneTreadableBoth(uint16 i);
|
||||
void DoStuffEnteringZone(void);
|
||||
static void DoStuffEnteringZone_OneBuilding(uint16 i);
|
||||
static void DoStuffEnteringZone_OneTreadablePlus10m(uint16 i);
|
||||
static void DoStuffEnteringZone_OneTreadable(uint16 i);
|
||||
};
|
||||
|
||||
enum eZoneAttribs
|
||||
{
|
||||
ATTRZONE_CAMCLOSEIN = 1,
|
||||
ATTRZONE_STAIRS = 2,
|
||||
ATTRZONE_1STPERSON = 4,
|
||||
ATTRZONE_NORAIN = 8,
|
||||
ATTRZONE_NOPOLICE = 0x10,
|
||||
ATTRZONE_NOTCULLZONE = 0x20,
|
||||
ATTRZONE_DOINEEDCOLLISION = 0x40,
|
||||
ATTRZONE_SUBWAYVISIBLE = 0x80,
|
||||
};
|
||||
|
||||
struct CAttributeZone
|
||||
{
|
||||
float minx;
|
||||
float maxx;
|
||||
float miny;
|
||||
float maxy;
|
||||
float minz;
|
||||
float maxz;
|
||||
int16 attributes;
|
||||
int16 wantedLevel;
|
||||
};
|
||||
|
||||
class CCullZones
|
||||
{
|
||||
public:
|
||||
static int32 &NumCullZones;
|
||||
static CCullZone *aZones; // [NUMCULLZONES];
|
||||
static int32 &NumAttributeZones;
|
||||
static CAttributeZone *aAttributeZones; // [NUMATTRIBZONES];
|
||||
static uint16 *aIndices; // [NUMZONEINDICES];
|
||||
static int16 *aPointersToBigBuildingsForBuildings; // [NUMBUILDINGS];
|
||||
static int16 *aPointersToBigBuildingsForTreadables; // [NUMTREADABLES];
|
||||
|
||||
static int32 &CurrentWantedLevelDrop_Player;
|
||||
static int32 &CurrentFlags_Camera;
|
||||
static int32 &CurrentFlags_Player;
|
||||
static int32 &OldCullZone;
|
||||
static int32 &EntityIndicesUsed;
|
||||
static bool &bCurrentSubwayIsInvisible;
|
||||
static bool &bCullZonesDisabled;
|
||||
|
||||
static void Init(void);
|
||||
static void ResolveVisibilities(void);
|
||||
static void Update(void);
|
||||
static void ForceCullZoneCoors(CVector coors);
|
||||
static int32 FindCullZoneForCoors(CVector coors);
|
||||
static int32 FindAttributesForCoors(CVector coors, int32 *wantedLevel);
|
||||
static CAttributeZone *FindZoneWithStairsAttributeForPlayer(void);
|
||||
static void MarkSubwayAsInvisible(bool visible);
|
||||
static void AddCullZone(CVector const &position,
|
||||
float minx, float maxx,
|
||||
float miny, float maxy,
|
||||
float minz, float maxz,
|
||||
uint16 flag, int16 wantedLevel);
|
||||
static bool CamCloseInForPlayer(void) { return (CurrentFlags_Player & ATTRZONE_CAMCLOSEIN) != 0; }
|
||||
static bool CamStairsForPlayer(void) { return (CurrentFlags_Player & ATTRZONE_STAIRS) != 0; }
|
||||
static bool Cam1stPersonForPlayer(void) { return (CurrentFlags_Player & ATTRZONE_1STPERSON) != 0; }
|
||||
static bool NoPolice(void) { return (CurrentFlags_Player & ATTRZONE_NOPOLICE) != 0; }
|
||||
static bool DoINeedToLoadCollision(void) { return (CurrentFlags_Player & ATTRZONE_DOINEEDCOLLISION) != 0; }
|
||||
static bool PlayerNoRain(void) { return (CurrentFlags_Player & ATTRZONE_NORAIN) != 0; }
|
||||
static bool CamNoRain(void) { return (CurrentFlags_Camera & ATTRZONE_NORAIN) != 0; }
|
||||
static int32 GetWantedLevelDrop(void) { return CurrentWantedLevelDrop_Player; }
|
||||
};
|
||||
Reference in New Issue
Block a user