26        FLAG_MTX_INHERIT_SCALE = (1 << 0),
 
   27        FLAG_MTX_INHERIT_ROT = (1 << 1),
 
   31        enum SimpleLightType {
 
 
   70    static s32 smMtxInvId;
 
   76    virtual void SendClosing(); 
 
   77    virtual void DestroyFunc(); 
 
   79    virtual bool Initialize(
Emitter* pParent,
 
   89    virtual void Draw(
const DrawInfo& rInfo); 
 
   93    int RetireParticle(
Particle* pParticle);
 
   94    int RetireParticleAll();
 
   98    void BeginCalc(
bool remainOnly);
 
  106    void Draw_ModifyColor(
Particle* pParticle, GXColor* pColorPri,
 
  109    f32 Draw_ModifyScaleX(
Particle* , f32 sx) {
 
  110        return sx * mModifier.mScale.x;
 
  112    f32 Draw_ModifyScaleY(
Particle* , f32 sy) {
 
  113        return sy * mModifier.mScale.y;
 
  116    void Draw_ModifyRotate(Particle* , 
math::VEC3* pRot) {
 
  117        pRot->x += mModifier.mRotate.x;
 
  118        pRot->y += mModifier.mRotate.y;
 
  119        pRot->z += mModifier.mRotate.z;
 
  122    void Modifier_SetSimpleLightParameter(
const EmitterDrawSetting& rSetting) {
 
  123        Modifier_SetSimpleLightParameter(
 
  124            rSetting.mLighting.mType, rSetting.mLighting.mAmbient,
 
  125            rSetting.mLighting.mDiffuse, rSetting.mLighting.mRadius,
 
  126            rSetting.mLighting.mPosition);
 
  129    void Modifier_SetSimpleLightParameter(u8 type, 
const GXColor& rAmbient,
 
  130                                          const GXColor& rDiffuse, f32 radius,
 
  131                                          const math::VEC3& rPos) {
 
  132        mModifier.mLight.mType = type;
 
  133        mModifier.mLight.mAmbient = rAmbient;
 
  134        mModifier.mLight.mDiffuse = rDiffuse;
 
  135        mModifier.mLight.mRadius = radius;
 
  136        mModifier.mLight.mPosition = rPos;
 
  139    ActivityList* GetParticleList() {
 
  140        return &mActivityList;
 
  143    void ParticleToFree(Particle* pParticle) {
 
  144        mActivityList.ToFree(pParticle);
 
  151    static void ModifierTravFunc_SetSimpleLightType(
void* pObject,
 
  152                                                    ForEachParam param) {
 
  154        static_cast<ParticleManager*
>(pObject)->mModifier.mLight.mType =
 
  155            static_cast<u8
>(param);
 
  158    static void ModifierTravFunc_SetSimpleLightAmbient(
void* pObject,
 
  159                                                       ForEachParam param) {
 
  161        static_cast<ParticleManager*
>(pObject)->mModifier.mLight.mAmbient =
 
  162            *
reinterpret_cast<GXColor*
>(param);
 
  165    static void ModifierTravFunc_SetScale(
void* pObject, ForEachParam param) {
 
  166        static_cast<ParticleManager*
>(pObject)->mModifier.mScale =
 
  167            *
reinterpret_cast<math::VEC2*
>(param);
 
  170    static void ModifierTravFunc_SetRotate(
void* pObject, ForEachParam param) {
 
  171        static_cast<ParticleManager*
>(pObject)->mModifier.mRotate =
 
  172            *
reinterpret_cast<math::VEC3*
>(param);