mirror of
https://github.com/halpz/re3.git
synced 2025-07-20 19:09:48 +00:00
CParticleObject done, cDMAudio done
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "Placeable.h"
|
||||
#include "AudioManager.h"
|
||||
|
||||
#define MAX_PARTICLEOBJECTS 100
|
||||
#define MAX_AUDIOHYDRANTS 8
|
||||
|
||||
enum eParticleObjectType
|
||||
{
|
||||
@ -26,13 +29,79 @@ enum eParticleObjectType
|
||||
POBJECT_CATALINAS_SHOTGUNFLASH,
|
||||
};
|
||||
|
||||
enum eParticleObjectState
|
||||
{
|
||||
POBJECTSTATE_INITIALISED = 0,
|
||||
POBJECTSTATE_UPDATE_CLOSE,
|
||||
POBJECTSTATE_UPDATE_FAR,
|
||||
POBJECTSTATE_FREE,
|
||||
};
|
||||
|
||||
enum tParticleType;
|
||||
class CParticle;
|
||||
|
||||
class CParticleObject : CPlaceable
|
||||
{
|
||||
public:
|
||||
static void AddObject(uint16 type, const CVector &pos, uint8 remove);
|
||||
static void AddObject(uint16 type, const CVector &pos, float size, uint8 remove);
|
||||
static void AddObject(uint16 type, const CVector &pos, const CVector &dir, float size, uint8 remove);
|
||||
static void AddObject(uint16 type, const CVector &pos, const CVector &dir, float size, uint32, const RwRGBA &col, uint8 remove);
|
||||
static void Initialise();
|
||||
static void UpdateAll();
|
||||
CParticleObject *m_pNext;
|
||||
CParticleObject *m_pPrev;
|
||||
CParticle *m_pParticle;
|
||||
uint32 m_nRemoveTimer;
|
||||
eParticleObjectType m_Type;
|
||||
tParticleType m_ParticleType;
|
||||
uint8 m_nNumEffectCycles;
|
||||
uint8 m_nSkipFrames;
|
||||
uint16 m_nFrameCounter;
|
||||
uint16 m_nState;
|
||||
char _pad0[2];
|
||||
CVector m_vecTarget;
|
||||
float m_fRandVal;
|
||||
float m_fSize;
|
||||
CRGBA m_Color;
|
||||
uint8 m_bRemove;
|
||||
int8 m_nCreationChance;
|
||||
char _pad1[2];
|
||||
|
||||
static CParticleObject *&pCloseListHead;
|
||||
static CParticleObject *&pFarListHead;
|
||||
static CParticleObject *&pUnusedListHead;
|
||||
|
||||
CParticleObject();
|
||||
~CParticleObject();
|
||||
|
||||
static void Initialise(void);
|
||||
|
||||
static CParticleObject *AddObject(uint16 type, CVector const &pos, uint8 remove);
|
||||
static CParticleObject *AddObject(uint16 type, CVector const &pos, float size, uint8 remove);
|
||||
static CParticleObject *AddObject(uint16 type, CVector const &pos, CVector const &target, float size, uint8 remove);
|
||||
static CParticleObject *AddObject(uint16 type, CVector const &pos, CVector const &target, float size, uint32 lifeTime, RwRGBA const &color, uint8 remove);
|
||||
|
||||
void RemoveObject(void);
|
||||
|
||||
static void UpdateAll(void);
|
||||
void UpdateClose(void);
|
||||
void UpdateFar(void);
|
||||
|
||||
static bool SaveParticle(uint8 *buffer, uint32 *length);
|
||||
static bool LoadParticle(uint8 *buffer, uint32 length);
|
||||
|
||||
static void RemoveAllParticleObjects(void);
|
||||
static void MoveToList(CParticleObject **from, CParticleObject **to, CParticleObject *obj);
|
||||
};
|
||||
|
||||
extern CParticleObject (&gPObjectArray)[MAX_PARTICLEOBJECTS];
|
||||
|
||||
class CAudioHydrant
|
||||
{
|
||||
public:
|
||||
int32 AudioEntity;
|
||||
CParticleObject *pParticleObject;
|
||||
|
||||
CAudioHydrant() :
|
||||
AudioEntity(AEHANDLE_NONE),
|
||||
pParticleObject(NULL)
|
||||
{ }
|
||||
|
||||
static bool Add (CParticleObject *particleobject);
|
||||
static void Remove(CParticleObject *particleobject);
|
||||
};
|
Reference in New Issue
Block a user