diff options
author | aap <aap@papnet.eu> | 2020-07-20 19:56:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-20 19:56:18 +0200 |
commit | ee2d0ffc145ae3443584b20f3bba11fa596e775f (patch) | |
tree | edd47c08cadd57fdb40d4e70ee7fc410e107631a /src/render/Occlusion.h | |
parent | Merge pull request #655 from aap/miami (diff) | |
parent | cosmetic fixes (diff) | |
download | re3-ee2d0ffc145ae3443584b20f3bba11fa596e775f.tar re3-ee2d0ffc145ae3443584b20f3bba11fa596e775f.tar.gz re3-ee2d0ffc145ae3443584b20f3bba11fa596e775f.tar.bz2 re3-ee2d0ffc145ae3443584b20f3bba11fa596e775f.tar.lz re3-ee2d0ffc145ae3443584b20f3bba11fa596e775f.tar.xz re3-ee2d0ffc145ae3443584b20f3bba11fa596e775f.tar.zst re3-ee2d0ffc145ae3443584b20f3bba11fa596e775f.zip |
Diffstat (limited to '')
-rw-r--r-- | src/render/Occlusion.h | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/src/render/Occlusion.h b/src/render/Occlusion.h index 0d3e26e9..9b7ba34f 100644 --- a/src/render/Occlusion.h +++ b/src/render/Occlusion.h @@ -1,5 +1,21 @@ #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: @@ -7,6 +23,10 @@ public: int16 x, y, z; uint16 angle; int16 listIndex; + + bool NearCamera(); + bool ProcessOneOccluder(CActiveOccluder *occl); + bool ProcessLineSegment(int corner1, int corner2, CActiveOccluder* occl); }; class COcclusion @@ -17,13 +37,19 @@ public: 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); - - //TODO: - static bool IsAABoxOccluded(CVector pos, float, float, float) { return false; } + 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);
\ No newline at end of file |