Files
dusklight/libs/JSystem/include/JSystem/JParticle/JPAEmitterManager.h
T
Luke Street 9649319ec4 Reorganize library code into libs/ (#3119)
* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN}

* Update configure.py and project.py for new libs structure

* Refactor `#include <dolphin/x.h>` -> `<x.h>`

* Remove `__REVOLUTION_SDK__` forwards from dolphin

* Fix dolphin/ references in revolution

* Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__`

* Always build TRK against dolphin headers

* Resolve revolution SDK header resolution issues
2026-03-01 14:35:36 -08:00

57 lines
1.8 KiB
C++

#ifndef JPAEMITTERMANAGER_H
#define JPAEMITTERMANAGER_H
#include <types.h>
#include "JSystem/JParticle/JPAList.h"
#include "JSystem/JParticle/JPADrawInfo.h"
#include "JSystem/JSupport/JSUList.h"
#include "JSystem/JGeometry.h"
#include "JSystem/JUtility/JUTAssert.h"
class JPAEmitterCallBack;
class JPAParticleCallBack;
class JPABaseEmitter;
class JPAResourceManager;
class JPABaseParticle;
class JKRHeap;
struct JPAEmitterWorkData;
/**
* @ingroup jsystem-jparticle
*
*/
class JPAEmitterManager {
public:
JPAEmitterManager(u32, u32, JKRHeap*, u8, u8);
JPABaseEmitter* createSimpleEmitterID(JGeometry::TVec3<f32> const&, u16, u8, u8,
JPAEmitterCallBack*, JPAParticleCallBack*);
void calc(u8);
void draw(JPADrawInfo const*, u8);
void forceDeleteAllEmitter();
void forceDeleteGroupEmitter(u8);
void forceDeleteEmitter(JPABaseEmitter*);
void entryResourceManager(JPAResourceManager*, u8);
void clearResourceManager(u8);
void calcYBBCam();
JPAResourceManager* getResourceManager(u16 idx) const { return pResMgrAry[idx]; }
JPAResourceManager* getResourceManager(u8 res_mgr_id) const {
JUT_ASSERT(147, res_mgr_id < ridMax);
return pResMgrAry[res_mgr_id];
}
int getEmitterNumber() const { return emtrNum - mFreeEmtrList.getNumLinks(); }
int getParticleNumber() const { return ptclNum - mPtclPool.getNum(); }
public:
/* 0x00 */ JSUList<JPABaseEmitter>* pEmtrUseList;
/* 0x04 */ JSUList<JPABaseEmitter> mFreeEmtrList;
/* 0x10 */ JPAList<JPABaseParticle> mPtclPool;
/* 0x1C */ JPAResourceManager** pResMgrAry;
/* 0x20 */ JPAEmitterWorkData* pWd;
/* 0x24 */ u32 emtrNum;
/* 0x28 */ u32 ptclNum;
/* 0x2C */ u8 gidMax;
/* 0x2D */ u8 ridMax;
};
#endif /* JPAEMITTERMANAGER_H */