mirror of https://github.com/PrimeDecomp/prime.git
52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
#ifndef _CAREAFOG_HPP
|
|
#define _CAREAFOG_HPP
|
|
|
|
#include "types.h"
|
|
|
|
#include "Kyoto/Graphics/CColor.hpp"
|
|
#include "Kyoto/Math/CVector2f.hpp"
|
|
|
|
enum ERglFogMode {
|
|
kRFM_None = GX_FOG_NONE,
|
|
|
|
kRFM_PerspLin = GX_FOG_PERSP_LIN,
|
|
kRFM_PerspExp = GX_FOG_PERSP_EXP,
|
|
kRFM_PerspExp2 = GX_FOG_ORTHO_EXP2,
|
|
kRFM_PerspRevExp = GX_FOG_PERSP_REVEXP,
|
|
kRFM_PerspRevExp2 = GX_FOG_PERSP_REVEXP2,
|
|
|
|
kRFM_OrthoLin = GX_FOG_ORTHO_LIN,
|
|
kRFM_OrthoExp = GX_FOG_ORTHO_EXP,
|
|
kRFM_OrthoExp2 = GX_FOG_ORTHO_EXP2,
|
|
kRFM_OrthoRevExp = GX_FOG_ORTHO_REVEXP,
|
|
kRFM_OrthoRevExp2 = GX_FOG_ORTHO_REVEXP2,
|
|
};
|
|
|
|
class CAreaFog {
|
|
private:
|
|
ERglFogMode x0_fogMode;
|
|
CVector2f x4_rangeCur;
|
|
CVector2f xc_rangeTarget;
|
|
CVector2f x14_rangeDelta;
|
|
CColor x1c_colorCur;
|
|
unkptr x20_;
|
|
unkptr x24_;
|
|
CColor x28_colorTarget;
|
|
unkptr x2c_;
|
|
unkptr x30_;
|
|
float x34_colorDelta;
|
|
|
|
public:
|
|
void SetCurrent() const;
|
|
void Update(float dt);
|
|
void RollFogOut(float rangeDelta, float colorDelta, const CColor& color);
|
|
void FadeFog(ERglFogMode, const CColor& color, const CVector2f& vec1, float,
|
|
const CVector2f& vec2);
|
|
void SetFogExplicit(ERglFogMode mode, const CColor& color, const CVector2f& range);
|
|
bool IsFogDisabled() const;
|
|
void DisableFog();
|
|
};
|
|
CHECK_SIZEOF(CAreaFog, 0x38)
|
|
|
|
#endif
|