diff options
author | Nikolay Korolev <nickvnuk@gmail.com> | 2020-04-05 11:45:30 +0200 |
---|---|---|
committer | Nikolay Korolev <nickvnuk@gmail.com> | 2020-04-05 11:45:30 +0200 |
commit | 5cbcaa57d7160fc4e20254fcedfec3609e8521ef (patch) | |
tree | 000c9de98a1a8c06c0dfb08d355310dc73753cb9 /src/render/Glass.h | |
parent | shoreside garage fix (diff) | |
parent | Merge pull request #377 from Fire-Head/master (diff) | |
download | re3-5cbcaa57d7160fc4e20254fcedfec3609e8521ef.tar re3-5cbcaa57d7160fc4e20254fcedfec3609e8521ef.tar.gz re3-5cbcaa57d7160fc4e20254fcedfec3609e8521ef.tar.bz2 re3-5cbcaa57d7160fc4e20254fcedfec3609e8521ef.tar.lz re3-5cbcaa57d7160fc4e20254fcedfec3609e8521ef.tar.xz re3-5cbcaa57d7160fc4e20254fcedfec3609e8521ef.tar.zst re3-5cbcaa57d7160fc4e20254fcedfec3609e8521ef.zip |
Diffstat (limited to 'src/render/Glass.h')
-rw-r--r-- | src/render/Glass.h | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/src/render/Glass.h b/src/render/Glass.h index ad4d50f2..dccd9d3d 100644 --- a/src/render/Glass.h +++ b/src/render/Glass.h @@ -2,13 +2,52 @@ class CEntity; +class CFallingGlassPane : public CMatrix +{ +public: + CVector m_vecMoveSpeed; + CVector m_vecTurn; + uint32 m_nTimer; + float m_fGroundZ; + float m_fStep; + uint8 m_nTriIndex; + bool m_bActive; + bool m_bShattered; + char _pad0[1]; + + CFallingGlassPane() { } + ~CFallingGlassPane() { } + + void Update(void); + void Render(void); +}; + +VALIDATE_SIZE(CFallingGlassPane, 0x70); + +enum +{ + NUM_GLASSTRIANGLES = 5, +}; + class CGlass { + static uint32 NumGlassEntities; + static CEntity *apEntitiesToBeRendered[NUM_GLASSENTITIES]; + static CFallingGlassPane aGlassPanes[NUM_GLASSPANES]; public: - static void AskForObjectToBeRenderedInGlass(CEntity *ent); - static void WindowRespondsToCollision(CEntity *ent, float amount, CVector speed, CVector point, bool foo); - static void WindowRespondsToSoftCollision(CEntity *ent, float amount); - static void Render(void); - static void Update(void); static void Init(void); -}; + static void Update(void); + static void Render(void); + static CFallingGlassPane *FindFreePane(void); + static void GeneratePanesForWindow(uint32 type, CVector pos, CVector up, CVector right, CVector speed, CVector point, float moveSpeed, bool cracked, bool explosion); + static void AskForObjectToBeRenderedInGlass(CEntity *entity); + static void RenderEntityInGlass(CEntity *entity); + static int32 CalcAlphaWithNormal(CVector *normal); + static void RenderHiLightPolys(void); + static void RenderShatteredPolys(void); + static void RenderReflectionPolys(void); + static void WindowRespondsToCollision(CEntity *entity, float amount, CVector speed, CVector point, bool explosion); + static void WindowRespondsToSoftCollision(CEntity *entity, float amount); + static void WasGlassHitByBullet(CEntity *entity, CVector point); + static void WindowRespondsToExplosion(CEntity *entity, CVector point); +};
\ No newline at end of file |