mirror of
https://github.com/halpz/re3.git
synced 2024-12-27 18:25:28 +00:00
59 lines
1.5 KiB
C++
59 lines
1.5 KiB
C++
#pragma once
|
|
|
|
struct ActiveOccluderLine {
|
|
CVector2D origin;
|
|
CVector2D direction;
|
|
float length;
|
|
};
|
|
|
|
class CActiveOccluder {
|
|
|
|
public:
|
|
ActiveOccluderLine lines[6];
|
|
int32 linesCount;
|
|
float radius;
|
|
|
|
bool IsPointWithinOcclusionArea(float x, float y, float area);
|
|
};
|
|
|
|
class COccluder
|
|
{
|
|
public:
|
|
int16 length, width, height;
|
|
int16 x, y, z;
|
|
uint16 angle;
|
|
int16 listIndex;
|
|
|
|
bool NearCamera();
|
|
bool ProcessOneOccluder(CActiveOccluder *occl);
|
|
bool ProcessLineSegment(int corner1, int corner2, CActiveOccluder* occl);
|
|
float GetAngle(void) { return angle*TWOPI/UINT16_MAX; }
|
|
};
|
|
|
|
class COcclusion
|
|
{
|
|
public:
|
|
static int32 NumOccludersOnMap;
|
|
static int16 FarAwayList;
|
|
static int16 NearbyList;
|
|
static int16 ListWalkThroughFA;
|
|
static int16 PreviousListWalkThroughFA;
|
|
static int16 NumActiveOccluders;
|
|
|
|
static COccluder aOccluders[NUMOCCLUSIONVOLUMES];
|
|
static CActiveOccluder aActiveOccluders[NUMACTIVEOCCLUDERS];
|
|
|
|
static void Init(void);
|
|
static void AddOne(float x, float y, float z, float width, float length, float height, float angle);
|
|
static void ProcessBeforeRendering(void);
|
|
static bool OccluderHidesBehind(CActiveOccluder *occl1, CActiveOccluder *occl2);
|
|
static bool IsAABoxOccluded(CVector pos, float width, float length, float height);
|
|
static bool IsPositionOccluded(CVector pos, float side);
|
|
static void Render();
|
|
};
|
|
|
|
bool CalcScreenCoors(CVector const &in, CVector *out, float *outw, float *outh);
|
|
bool CalcScreenCoors(CVector const &in, CVector *out);
|
|
|
|
extern bool bDisplayOccDebugStuff;
|