26 friend class EffectSystem;
27 friend class DrawOrderBase;
31 FLAG_DISABLE_CALC = (1 << 0),
32 FLAG_DISABLE_DRAW = (1 << 1),
33 FLAG_EXIST_CALC_REMAIN = (1 << 16),
37 typedef void (*PrevEmissionFunc)(
Emitter* pEmitter,
40 f32 (*pParams)[NUM_PARAMS], u16* pLife,
46 PrevEmissionFunc mPrevEmission;
47 PtclCalcFunc mPrevPtclCalc;
48 PtclCalcFunc mPostPtclCalc;
52 EffectSystem* mManagerES;
62 DrawOrderBase* mDrawOrderFunc;
68 virtual void SendClosing();
69 virtual void DestroyFunc();
71 virtual bool Initialize(EffectSystem* pSystem,
EmitterResource* pResource,
75 return CreateEmitter(res.ptr(), drawWeight, calcRemain);
78 virtual void Calc(
bool onlyBillboard);
79 virtual void Draw(
const DrawInfo& rInfo);
81 bool Closing(
Emitter* pEmitter);
85 ulong RetireEmitter(
Emitter* pEmitter);
87 ulong RetireEmitterAll();
88 ulong RetireParticleAll();
90 u16 GetNumEmitter()
const;
93 ulong ForeachParticleManager(ForEachFunc pFunc, ForEachParam param,
94 bool ignoreLifeStatus);
95 ulong ForeachEmitterFrom(ForEachFunc pFunc, ForEachParam param,
96 bool ignoreLifeStatus,
Emitter* pEmitter);
99 mDrawOrderFunc->Add(
this, pManager);
101 void ParticleManagerRemove(ParticleManager* pManager) {
102 mDrawOrderFunc->Remove(
this, pManager);
105 void Modifier_SetSimpleLightType(u8 type,
bool ignoreLifeStatus) {
106 ForeachParticleManager(
107 ParticleManager::ModifierTravFunc_SetSimpleLightType,
108 static_cast<ulong
>(type), ignoreLifeStatus);
111 void Modifier_SetSimpleLightAmbient(
const GXColor& rColor,
112 bool ignoreLifeStatus) {
113 ForeachParticleManager(
114 ParticleManager::ModifierTravFunc_SetSimpleLightAmbient,
115 reinterpret_cast<ulong
>(&rColor), ignoreLifeStatus);
119 void Modifier_SetScale(math::VEC2& rScale,
bool ignoreLifeStatus) {
120 ForeachParticleManager(ParticleManager::ModifierTravFunc_SetScale,
121 reinterpret_cast<ulong
>(&rScale),
125 void Modifier_SetRotate(
const math::VEC3& rRot,
bool ignoreLifeStatus) {
126 ForeachParticleManager(ParticleManager::ModifierTravFunc_SetRotate,
127 reinterpret_cast<ulong
>(&rRot), ignoreLifeStatus);
130 bool GetFlagDisableCalc()
const {
131 return mFlags & FLAG_DISABLE_CALC;
133 void SetFlagDisableCalc(
bool disable) {
135 mFlags |= FLAG_DISABLE_CALC;
137 mFlags &= ~FLAG_DISABLE_CALC;
141 bool GetFlagDisableDraw()
const {
142 return mFlags & FLAG_DISABLE_DRAW;
144 void SetFlagDisableDraw(
bool disable) {
146 mFlags |= FLAG_DISABLE_DRAW;
148 mFlags &= ~FLAG_DISABLE_DRAW;
152 bool GetFlagExistCalcRemain()
const {
153 return mFlags & FLAG_EXIST_CALC_REMAIN;
155 void SetFlagExistCalcRemain(
bool exist) {
157 mFlags |= FLAG_EXIST_CALC_REMAIN;
159 mFlags &= ~FLAG_EXIST_CALC_REMAIN;
163 const math::MTX34* GetRootMtx()
const {
167 void SetRootMtx(
const math::MTX34& rMtx);
169 const math::VEC3* GetVelocity()
const {