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 {