summaryrefslogtreecommitdiffstats
path: root/src/objects/ParticleObject.h
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2019-08-15 14:39:30 +0200
committerGitHub <noreply@github.com>2019-08-15 14:39:30 +0200
commit88fcac85d32e5bef978a3a1e4d3ace0fcce09815 (patch)
tree53c3fb8df01552a4742ef96f418d469677409a9c /src/objects/ParticleObject.h
parentMerge pull request #189 from Nick007J/master (diff)
parentfix (diff)
downloadre3-88fcac85d32e5bef978a3a1e4d3ace0fcce09815.tar
re3-88fcac85d32e5bef978a3a1e4d3ace0fcce09815.tar.gz
re3-88fcac85d32e5bef978a3a1e4d3ace0fcce09815.tar.bz2
re3-88fcac85d32e5bef978a3a1e4d3ace0fcce09815.tar.lz
re3-88fcac85d32e5bef978a3a1e4d3ace0fcce09815.tar.xz
re3-88fcac85d32e5bef978a3a1e4d3ace0fcce09815.tar.zst
re3-88fcac85d32e5bef978a3a1e4d3ace0fcce09815.zip
Diffstat (limited to 'src/objects/ParticleObject.h')
-rw-r--r--src/objects/ParticleObject.h83
1 files changed, 76 insertions, 7 deletions
diff --git a/src/objects/ParticleObject.h b/src/objects/ParticleObject.h
index 192d3703..a0d99b69 100644
--- a/src/objects/ParticleObject.h
+++ b/src/objects/ParticleObject.h
@@ -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);
+}; \ No newline at end of file