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);