re3/src/render/SpecialFX.h

250 lines
5 KiB
C
Raw Normal View History

#pragma once
2020-10-12 10:41:57 +00:00
//file done
class CSpecialFX
{
public:
2020-10-09 17:29:38 +00:00
static bool bVideoCam;
static bool bLiftCam;
2020-05-24 13:14:27 +00:00
static bool bSnapShotActive;
2020-08-27 16:52:43 +00:00
static int32 SnapShotFrames;
2020-05-24 13:14:27 +00:00
2020-10-12 10:41:57 +00:00
static void Render(void);
static void Update(void);
static void Init(void);
static void Shutdown(void);
static void AddWeaponStreak(int type);
static void Render2DFXs();
};
2019-06-30 19:06:55 +00:00
2020-10-12 10:41:57 +00:00
class CRegisteredMotionBlurStreak
{
public:
2020-04-09 18:50:24 +00:00
uintptr m_id;
uint8 m_red;
uint8 m_green;
uint8 m_blue;
CVector m_pos1[3];
CVector m_pos2[3];
bool m_isValid[3];
2020-10-12 10:41:57 +00:00
void Update(void);
void Render(void);
};
2020-10-12 10:41:57 +00:00
2019-06-30 19:06:55 +00:00
class CMotionBlurStreaks
{
static CRegisteredMotionBlurStreak aStreaks[NUMMBLURSTREAKS];
2019-06-30 19:06:55 +00:00
public:
2020-10-12 10:41:57 +00:00
static void Init(void);
static void Update(void);
static void RegisterStreak(uintptr id, uint8 r, uint8 g, uint8 b, CVector p1, CVector p2);
static void Render(void);
2019-06-30 19:06:55 +00:00
};
2019-06-30 20:55:48 +00:00
2020-10-12 10:41:57 +00:00
2019-06-30 20:55:48 +00:00
struct CBulletTrace
{
CVector m_vecStartPos;
CVector m_vecEndPos;
2019-06-30 20:55:48 +00:00
bool m_bInUse;
2020-10-09 17:29:38 +00:00
uint32 m_nCreationTime;
uint32 m_nLifeTime;
2020-10-11 18:40:11 +00:00
float m_fThicknes;
uint8 m_fVisibility;
2020-03-21 17:14:29 +00:00
2020-10-12 10:41:57 +00:00
void Update(void);
2019-06-30 20:55:48 +00:00
};
2020-10-12 10:41:57 +00:00
2019-06-30 20:55:48 +00:00
class CBulletTraces
{
public:
static CBulletTrace aTraces[NUMBULLETTRACES];
2019-06-30 20:55:48 +00:00
2020-10-12 10:41:57 +00:00
static void Init(void);
static void Render(void);
static void Update(void);
static void AddTrace(CVector* start, CVector* end, float thickness, uint32 lifeTime, uint8 visibility);
static void AddTrace(CVector* start, CVector* end, int32 weaponType, class CEntity* shooter);
2019-06-30 20:55:48 +00:00
};
2019-07-24 16:55:43 +00:00
2019-10-16 23:22:39 +00:00
enum
{
MARKERTYPE_0 = 0,
MARKERTYPE_ARROW,
MARKERTYPE_2,
MARKERTYPE_3,
MARKERTYPE_CYLINDER,
NUMMARKERTYPES,
MARKERTYPE_INVALID = 0x101
};
2020-10-12 10:41:57 +00:00
2019-10-16 23:22:39 +00:00
class C3dMarker
2020-04-07 10:33:14 +00:00
{
public:
CMatrix m_Matrix;
RpAtomic *m_pAtomic;
RpMaterial *m_pMaterial;
uint16 m_nType;
bool m_bIsUsed;
bool m_bFindZOnNextPlacement;
2020-04-07 10:33:14 +00:00
uint32 m_nIdentifier;
RwRGBA m_Color;
uint16 m_nPulsePeriod;
int16 m_nRotateRate;
uint32 m_nStartTime;
float m_fPulseFraction;
float m_fStdSize;
float m_fSize;
float m_fBrightness;
float m_fCameraRange;
2020-10-12 10:41:57 +00:00
bool AddMarker(uint32 identifier, uint16 type, float fSize, uint8 r, uint8 g, uint8 b, uint8 a, uint16 pulsePeriod, float pulseFraction, int16 rotateRate);
void DeleteMarkerObject();
void Render();
2019-10-16 23:22:39 +00:00
};
2020-10-12 10:41:57 +00:00
2019-07-24 16:55:43 +00:00
class C3dMarkers
{
public:
2020-10-12 10:41:57 +00:00
static void Init();
static void Shutdown();
static C3dMarker *PlaceMarker(uint32 id, uint16 type, CVector &pos, float size, uint8 r, uint8 g, uint8 b, uint8 a, uint16 pulsePeriod, float pulseFraction, int16 rotateRate);
static void PlaceMarkerSet(uint32 id, uint16 type, CVector &pos, float size, uint8 r, uint8 g, uint8 b, uint8 a, uint16 pulsePeriod, float pulseFraction, int16 rotateRate);
static void Render();
static void Update();
2019-10-16 23:22:39 +00:00
static C3dMarker m_aMarkerArray[NUM3DMARKERS];
static int32 NumActiveMarkers;
static RpClump* m_pRpClumpArray[NUMMARKERTYPES];
2020-04-07 10:33:14 +00:00
};
2020-04-07 14:48:49 +00:00
enum
{
BRIGHTLIGHT_INVALID,
BRIGHTLIGHT_TRAFFIC_GREEN,
BRIGHTLIGHT_TRAFFIC_YELLOW,
BRIGHTLIGHT_TRAFFIC_RED,
// white
BRIGHTLIGHT_FRONT_LONG,
BRIGHTLIGHT_FRONT_SMALL,
BRIGHTLIGHT_FRONT_BIG,
BRIGHTLIGHT_FRONT_TALL,
// red
BRIGHTLIGHT_REAR_LONG,
BRIGHTLIGHT_REAR_SMALL,
BRIGHTLIGHT_REAR_BIG,
BRIGHTLIGHT_REAR_TALL,
BRIGHTLIGHT_SIREN, // unused
BRIGHTLIGHT_FRONT = BRIGHTLIGHT_FRONT_LONG,
BRIGHTLIGHT_REAR = BRIGHTLIGHT_REAR_LONG,
};
2020-10-12 10:41:57 +00:00
2020-04-09 18:50:24 +00:00
class CBrightLight
{
public:
CVector m_pos;
CVector m_up;
CVector m_side;
CVector m_front;
float m_camDist;
uint8 m_type;
uint8 m_red;
uint8 m_green;
uint8 m_blue;
2020-04-07 14:48:49 +00:00
};
2020-10-12 10:41:57 +00:00
2020-04-07 14:48:49 +00:00
class CBrightLights
{
static int NumBrightLights;
static CBrightLight aBrightLights[NUMBRIGHTLIGHTS];
public:
2020-10-12 10:41:57 +00:00
static void Init(void);
2020-04-07 14:48:49 +00:00
static void RegisterOne(CVector pos, CVector up, CVector side, CVector front,
2020-10-12 10:41:57 +00:00
uint8 type, uint8 red = 0, uint8 green = 0, uint8 blue = 0);
static void Render(void);
static void RenderOutGeometryBuffer(void);
2020-04-07 14:48:49 +00:00
};
2020-04-07 10:33:14 +00:00
enum
{
SHINYTEXT_WALK = 1,
SHINYTEXT_FLAT
};
2020-10-12 10:41:57 +00:00
2020-04-07 10:33:14 +00:00
class CShinyText
{
public:
2020-04-09 18:50:24 +00:00
CVector m_verts[4];
CVector2D m_texCoords[4];
float m_camDist;
uint8 m_type;
uint8 m_red;
uint8 m_green;
2020-04-07 10:33:14 +00:00
uint8 m_blue;
};
2020-10-12 10:41:57 +00:00
2020-10-11 18:40:11 +00:00
class CShinyTexts
2020-04-07 10:33:14 +00:00
{
static int NumShinyTexts;
static CShinyText aShinyTexts[NUMSHINYTEXTS];
public:
2020-10-12 10:41:57 +00:00
static void Init(void);
2020-04-07 10:33:14 +00:00
static void RegisterOne(CVector p0, CVector p1, CVector p2, CVector p3,
float u0, float v0, float u1, float v1, float u2, float v2, float u3, float v3,
2020-10-12 10:41:57 +00:00
uint8 type, uint8 red, uint8 green, uint8 blue, float maxDist); //not used
static void Render(void);
static void RenderOutGeometryBuffer(void);
2020-04-07 10:33:14 +00:00
};
2020-10-12 10:41:57 +00:00
2020-04-07 10:33:14 +00:00
class CMoneyMessage
{
friend class CMoneyMessages;
uint32 m_nTimeRegistered;
CVector m_vecPosition;
wchar m_aText[16];
CRGBA m_Colour;
float m_fSize;
float m_fOpacity;
public:
2020-10-12 10:41:57 +00:00
void Render();
2020-04-07 10:33:14 +00:00
};
2020-10-12 10:41:57 +00:00
2020-04-07 10:33:14 +00:00
class CMoneyMessages
{
static CMoneyMessage aMoneyMessages[NUMMONEYMESSAGES];
public:
2020-10-12 10:41:57 +00:00
static void Init();
static void Render();
static void RegisterOne(CVector vecPos, const char *pText, uint8 bRed, uint8 bGreen, uint8 bBlue, float fSize, float fOpacity);
2020-04-07 10:33:14 +00:00
};
2020-10-12 10:41:57 +00:00
2020-04-07 10:33:14 +00:00
class CSpecialParticleStuff
{
static uint32 BoatFromStart;
public:
2020-10-12 10:41:57 +00:00
static void CreateFoamAroundObject(CMatrix*, float, float, float, int32); //not used
static void StartBoatFoamAnimation(); //not used
static void UpdateBoatFoamAnimation(CMatrix*); //not used
2020-04-07 10:33:14 +00:00
};