1#ifndef EFT_EMITTER_SET_H_
2#define EFT_EMITTER_SET_H_
4#include <nw/eft/eft_typeDef.h>
5#include <nw/eft/eft_Data.h>
6#include <nw/eft/eft_System.h>
7#include <nw/eft/eft_Resource.h>
8#include <nw/eft/eft_Emitter.h>
10namespace nw {
namespace eft {
26 mEmissionRatio = 1.0f;
27 mEmissionInterval = 1.0f;
34 mEmissionRatio =
static_cast<f32>(ratio) /
static_cast<f32>(EFT_EMT_CTRLR_SCALE_ONE);
39 mEmissionRatio = ratio;
44 mEmissionInterval =
static_cast<f32>(ratio) /
static_cast<f32>(EFT_EMT_CTRLR_SCALE_ONE);
49 mEmissionInterval = ratio;
54 mLife =
static_cast<f32>(ratio) /
static_cast<f32>(EFT_EMT_CTRLR_SCALE_ONE);
98 return (s32)(val * (f32)EFT_EMT_CTRLR_SCALE_ONE);
117static_assert(
sizeof(
EmitterController) == 0x14,
"nw::eft::EmitterController size mismatch");
135 for (u32 i = 0; i < EFT_EMITTER_INSET_NUM; i++)
156 return mEmitterSetID;
161 return mEmitterCreateID;
166 return mSystem->SearchEmitterSetName( mEmitterSetID, mResourceID );
183 return mNumEmitterFirst;
192 return static_cast<u8>(mGroupID);
204 return mNumEmitter > 0;
224 mDrawPriority = priority;
229 return mDrawPriority;
234 return mSystem->GetResource(mResourceID)->GetUserData(mEmitterSetID);
239 return mSystem->GetResource(mResourceID)->GetUserDataNum1(mEmitterSetID);
244 return mSystem->GetResource(mResourceID)->GetUserDataNum2(mEmitterSetID);
249 return mSystem->GetResource(mResourceID)->GetUserDataBit(mEmitterSetID);
252 void SetMtx(
const nw::math::MTX34& mtx);
257 mAutoCalcScale = nw::math::VEC3(1.0f, 1.0f, 1.0f);
263 mSRT.m[0][0] = mtx.m[0][0] * scale;
264 mSRT.m[1][0] = mtx.m[1][0] * scale;
265 mSRT.m[2][0] = mtx.m[2][0] * scale;
267 mSRT.m[0][1] = mtx.m[0][1] * scale;
268 mSRT.m[1][1] = mtx.m[1][1] * scale;
269 mSRT.m[2][1] = mtx.m[2][1] * scale;
271 mSRT.m[0][2] = mtx.m[0][2] * scale;
272 mSRT.m[1][2] = mtx.m[1][2] * scale;
273 mSRT.m[2][2] = mtx.m[2][2] * scale;
275 mSRT.m[0][3] = mtx.m[0][3];
276 mSRT.m[1][3] = mtx.m[1][3];
277 mSRT.m[2][3] = mtx.m[2][3];
280 mAutoCalcScale.x = scale;
281 mAutoCalcScale.y = scale;
282 mAutoCalcScale.z = scale;
286 void SetMtxFast(
const nw::math::MTX34& mtx,
const nw::math::VEC3& scale)
288 mSRT.m[0][0] = mtx.m[0][0] * scale.x;
289 mSRT.m[1][0] = mtx.m[1][0] * scale.x;
290 mSRT.m[2][0] = mtx.m[2][0] * scale.x;
292 mSRT.m[0][1] = mtx.m[0][1] * scale.y;
293 mSRT.m[1][1] = mtx.m[1][1] * scale.y;
294 mSRT.m[2][1] = mtx.m[2][1] * scale.y;
296 mSRT.m[0][2] = mtx.m[0][2] * scale.z;
297 mSRT.m[1][2] = mtx.m[1][2] * scale.z;
298 mSRT.m[2][2] = mtx.m[2][2] * scale.z;
300 mSRT.m[0][3] = mtx.m[0][3];
301 mSRT.m[1][3] = mtx.m[1][3];
302 mSRT.m[2][3] = mtx.m[2][3];
305 mAutoCalcScale = scale;
312 mSRT.SetTranslate(pos);
317 void SetPos(
const nw::math::VEC3& pos, f32 scale)
320 mRT.SetTranslate(pos);
322 mSRT.m[0][0] *= scale;
323 mSRT.m[1][1] *= scale;
324 mSRT.m[2][2] *= scale;
325 mAutoCalcScale.x = scale;
326 mAutoCalcScale.y = scale;
327 mAutoCalcScale.z = scale;
331 void SetPos(
const nw::math::VEC3& pos,
const nw::math::VEC3& scale)
334 mRT.SetTranslate(pos);
336 mSRT.m[0][0] *= scale.x;
337 mSRT.m[1][1] *= scale.y;
338 mSRT.m[2][2] *= scale.z;
339 mAutoCalcScale = scale;
345 pos.x = mSRT.m[0][3];
346 pos.y = mSRT.m[1][3];
347 pos.z = mSRT.m[2][3];
353 void Reset(
const nw::math::MTX34& matLW)
357 mAutoCalcScale = nw::math::VEC3(1.0f, 1.0f, 1.0f);
358 mEmitterScale = nw::math::VEC3(1.0f, 1.0f, 1.0f);
359 mEmissionParticleScale = nw::math::VEC2(1.0f, 1.0f);
360 mParticlScaleForCalc.x = 1.0f;
361 mParticlScaleForCalc.y = 1.0f;
364 mParticlScale.x = mParticlScale.y = 1.0f;
365 mColor.r = mColor.g = mColor.b = mColor.a = 1.0f;
366 mFigureVel = mDirectionalVel = mRandomVel = 1.0f;
367 mVelAdd.x = mVelAdd.y = mVelAdd.z = 0.0f;
373 mNumParticleEmissionPoint = 0;
375 mDrawPriority = EFT_DEFAULT_DRAW_PRIORITY;
378 mInitialRoate.Set(0.0f, 0.0f, 0.0f);
380 for (u32 i = 0; i < EFT_EMITTER_INSET_NUM; ++i)
401 mParticlScale.x = mParticlScale.y = scale;
407 mParticlScale.x = scaleX;
408 mParticlScale.y = scaleY;
414 mParticlScale = scale;
420 return mParticlScale;
425 mEmissionParticleScale.x = mEmissionParticleScale.y = scale;
430 mEmissionParticleScale.x = scaleX;
431 mEmissionParticleScale.y = scaleY;
436 mEmissionParticleScale = scale;
441 return mEmissionParticleScale;
446 mEmitterScale = scale;
451 return mEmitterScale;
456 return mParticlScaleForCalc;
483 mFigureVel = velScale;
493 mDirectionalVel = velScale;
498 return mDirectionalVel;
503 mRandomVel = velScale;
538
539
540
541
542
566 return &mController[ix];
573 mNumParticleEmissionPoint = numPoint;
574 mParticleEmissionPoints = points;
579 mStartFrame = isManual ? 0x7fffffff : 0;
613 mController[emitterID].SetStopDraw(isStopDraw);
620 return mRuntimeUserData;
625 mRuntimeUserData = data;
677 mParticlScaleForCalc.x = mParticlScale.x * mAutoCalcScale.x;
678 mParticlScaleForCalc.y = mParticlScale.y * mAutoCalcScale.y;
687static_assert(
sizeof(
EmitterSet) == 0x294,
"nw::eft::EmitterSet size mismatch");
Definition eft_Emitter.h:222
Definition eft_EmitterComplex.h:10
Definition eft_EmitterSet.h:15
void SetFollowType(PtclFollowType followType)
Definition eft_EmitterSet.cpp:7
f32 mEmissionRatio
Definition eft_EmitterSet.h:106
void Reset()
Definition eft_EmitterSet.h:24
void SetEmitterColor0(const nw::ut::FloatColor &color)
Definition eft_EmitterSet.cpp:12
EmitterInstance * mEmitter
Definition eft_EmitterSet.h:110
void SetEmissionRatio(s32 ratio)
Definition eft_EmitterSet.h:32
@ EFT_EMT_CTRLR_SCALE_ONE
Definition eft_EmitterSet.h:20
@ EFT_EMT_CTRLR_SCALE_BIT
Definition eft_EmitterSet.h:19
DrawViewFlag mDrawViewFlag
Definition eft_EmitterSet.h:109
void SetLife(s32 ratio)
Definition eft_EmitterSet.h:52
DrawViewFlag GetDrawViewFlag() const
Definition eft_EmitterSet.h:91
static s32 F32ToScale(f32 val)
Definition eft_EmitterSet.h:96
void SetEmissionInterval(s32 ratio)
Definition eft_EmitterSet.h:42
f32 mLife
Definition eft_EmitterSet.h:108
f32 mEmissionInterval
Definition eft_EmitterSet.h:107
void SetVisible(bool isVisible)
Definition eft_EmitterSet.h:62
void SetViewFlag(DrawViewFlag flag)
Definition eft_EmitterSet.h:70
bool IsStopDraw() const
Definition eft_EmitterSet.h:83
void SetStopDraw(bool isStopDraw)
Definition eft_EmitterSet.h:75
void SetEmitterColor1(const nw::ut::FloatColor &color)
Definition eft_EmitterSet.cpp:19
Definition eft_EmitterSet.h:122
void SetParticleScale(const nw::math::VEC2 &scale)
Definition eft_EmitterSet.h:412
void SetInitRotate(const nw::math::VEC3 &rot)
Definition eft_EmitterSet.h:532
s32 GetEmitterSetID() const
Definition eft_EmitterSet.h:154
void UpdateEmitterFromResInfo()
void SetSystem(System *sys)
Definition eft_EmitterSet.h:139
EmitterController * GetEmitterController(s32 ix)
Definition eft_EmitterSet.h:564
void SetStopCalc(bool isStopCalc)
Definition eft_EmitterSet.cpp:139
bool IsFadeRequest() const
Definition eft_EmitterSet.h:389
void SetEmissionParticleScale(f32 scaleX, f32 scaleY)
Definition eft_EmitterSet.h:428
void SetMtx(const nw::math::MTX34 &mtx)
Definition eft_EmitterSet.cpp:44
u8 _28e[EFT_CPU_CORE_MAX]
Definition eft_EmitterSet.h:673
const EmitterController * GetAliveEmitterController(s32 ix)
u8 GetUserDataNum1() const
Definition eft_EmitterSet.h:237
nw::math::VEC3 mAutoCalcScale
Definition eft_EmitterSet.h:645
void SetStopDraw(bool isStopDraw)
Definition eft_EmitterSet.cpp:144
s32 GetStartFrame() const
Definition eft_EmitterSet.h:559
nw::math::MTX34 & GetSRTMatrix()
Definition eft_EmitterSet.h:212
void SetColor(f32 r, f32 g, f32 b)
Definition eft_EmitterSet.h:464
s32 GetNumAliveEmitter() const
Definition eft_EmitterSet.h:174
f32 GetRandomVel() const
Definition eft_EmitterSet.h:506
f32 mDirectionalVel
Definition eft_EmitterSet.h:654
void Kill()
Definition eft_EmitterSet.cpp:102
nw::math::VEC3 mDirectional
Definition eft_EmitterSet.h:657
f32 GetDirectionalVel() const
Definition eft_EmitterSet.h:496
System * mSystem
Definition eft_EmitterSet.h:631
f32 GetAllDirectionalVel() const
Definition eft_EmitterSet.h:486
nw::math::VEC2 mEmissionParticleScale
Definition eft_EmitterSet.h:648
u32 mDrawPathFlag
Definition eft_EmitterSet.h:641
u16 GetUserDataBit() const
Definition eft_EmitterSet.h:247
nw::math::MTX34 mSRT
Definition eft_EmitterSet.h:643
bool mIsStopCalc
Definition eft_EmitterSet.h:668
EmitterSet()
Definition eft_EmitterSet.h:124
s32 GetEmitterCounter(s32 emitterID)
const char * GetEmitterSetName() const
Definition eft_EmitterSet.h:164
void SetEmissionParticleScale(const nw::math::VEC2 &scale)
Definition eft_EmitterSet.h:434
nw::math::VEC2 mParticlScaleForCalc
Definition eft_EmitterSet.h:649
bool mIsSetDirectional
Definition eft_EmitterSet.h:667
s32 mNumParticleEmissionPoint
Definition eft_EmitterSet.h:660
void SetColor(const nw::ut::FloatColor &color)
Definition eft_EmitterSet.h:471
void CancelFade()
Definition eft_EmitterSet.h:394
EmitterController mController[EFT_EMITTER_INSET_NUM]
Definition eft_EmitterSet.h:636
s32 mNumEmitterFirst
Definition eft_EmitterSet.h:633
void SetStartFrame(s32 frame)
Definition eft_EmitterSet.h:554
void SetRandomSeed(u32 seed)
Definition eft_EmitterSet.cpp:149
const EmitterInstance * GetAliveEmitter(u32 idx)
Definition eft_EmitterSet.cpp:26
const nw::math::VEC3 & GetEmitterScale() const
Definition eft_EmitterSet.h:449
void SetPos(const nw::math::VEC3 &pos)
Definition eft_EmitterSet.h:309
void SetParticleEmissionPoints(s32 numPoint, nw::math::VEC3 *points)
Definition eft_EmitterSet.h:571
void SetParticleScale(f32 scale)
Definition eft_EmitterSet.h:399
void SetEmissionParticleScale(f32 scale)
Definition eft_EmitterSet.h:423
bool mIsStopDraw
Definition eft_EmitterSet.h:669
s32 GetEmitterCounter(const char *emitterName)
EmitterSet * mNext
Definition eft_EmitterSet.h:663
bool IsHaveInfinityEmitter() const
Definition eft_EmitterSet.h:207
u32 mRuntimeUserData
Definition eft_EmitterSet.h:639
void Reset(const nw::math::MTX34 &matLW)
Definition eft_EmitterSet.h:353
nw::ut::FloatColor mColor
Definition eft_EmitterSet.h:652
void GetPos(nw::math::VEC3 &pos) const
Definition eft_EmitterSet.h:343
nw::math::VEC3 * mParticleEmissionPoints
Definition eft_EmitterSet.h:661
void SetManualParticleEmission(bool isManual)
Definition eft_EmitterSet.h:577
EmitterInstance * mInstance[EFT_EMITTER_INSET_NUM]
Definition eft_EmitterSet.h:635
s32 mResourceID
Definition eft_EmitterSet.h:637
bool IsStopCalc() const
Definition eft_EmitterSet.h:599
const nw::math::VEC2 & GetEmissionParticleScale() const
Definition eft_EmitterSet.h:439
bool IsStopDraw() const
Definition eft_EmitterSet.h:606
bool IsStopCalcAndDraw() const
Definition eft_EmitterSet.h:592
u32 mEmitterCreateID
Definition eft_EmitterSet.h:634
void SetStopCalcAndDraw(bool isStopCalcAndDraw)
Definition eft_EmitterSet.h:586
s32 GetResourceID() const
Definition eft_EmitterSet.h:149
void SetPos(const nw::math::VEC3 &pos, const nw::math::VEC3 &scale)
Definition eft_EmitterSet.h:331
void KillInfinityEmitter()
void SetDirectionalVel(f32 velScale)
Definition eft_EmitterSet.h:491
u32 GetCreateID() const
Definition eft_EmitterSet.h:159
bool mIsHaveInfinityEmitter
Definition eft_EmitterSet.h:670
u8 GetUserDataNum2() const
Definition eft_EmitterSet.h:242
void DisableDirectional()
Definition eft_EmitterSet.h:544
u8 GetGroupID() const
Definition eft_EmitterSet.h:190
nw::math::VEC2 mParticlScale
Definition eft_EmitterSet.h:647
void SetAddVel(const nw::math::VEC3 &velAdd)
Definition eft_EmitterSet.h:511
void SetMtxFast(const nw::math::MTX34 &mtx, f32 scale)
Definition eft_EmitterSet.h:261
void SetPos(const nw::math::VEC3 &pos, f32 scale)
Definition eft_EmitterSet.h:317
System * GetSystem()
Definition eft_EmitterSet.h:144
void SetRuntimeUserData(u32 data)
Definition eft_EmitterSet.h:623
const nw::ut::FloatColor & GetColor() const
Definition eft_EmitterSet.h:476
void ForceCalc(s32 numLoop)
Definition eft_EmitterSet.cpp:107
void SetDrawPriority(u8 priority)
Definition eft_EmitterSet.h:222
void SetMtxFast(const nw::math::MTX34 &mtx, const nw::math::VEC3 &scale)
Definition eft_EmitterSet.h:286
void SetStopDraw(u32 emitterID, bool isStopDraw)
Definition eft_EmitterSet.h:611
void Fade()
Definition eft_EmitterSet.h:384
void SetAlpha(f32 alpha)
Definition eft_EmitterSet.h:459
void updateParticleScale_()
Definition eft_EmitterSet.h:675
s32 mGroupID
Definition eft_EmitterSet.h:640
void EmitParticle(const nw::math::VEC3 &pos)
void SetRandomVel(f32 velScale)
Definition eft_EmitterSet.h:501
nw::math::VEC3 mInitialRoate
Definition eft_EmitterSet.h:659
EmitterSet * mPrev
Definition eft_EmitterSet.h:664
s32 mStartFrame
Definition eft_EmitterSet.h:658
s32 GetNumEmitter() const
Definition eft_EmitterSet.h:169
void SetDirectional(const nw::math::VEC3 &dir)
Definition eft_EmitterSet.h:521
const nw::math::VEC3 & GetVelAdd() const
Definition eft_EmitterSet.h:516
nw::math::MTX34 mRT
Definition eft_EmitterSet.h:644
bool IsLoopEffect() const
f32 mFigureVel
Definition eft_EmitterSet.h:653
void SetEmitterScale(const nw::math::VEC3 &scale)
Definition eft_EmitterSet.h:444
bool IsSetDirectional() const
Definition eft_EmitterSet.h:549
s32 mNumEmitter
Definition eft_EmitterSet.h:632
bool IsAlive() const
Definition eft_EmitterSet.h:202
const nw::math::VEC2 & GetParticleScale() const
Definition eft_EmitterSet.h:418
nw::math::VEC3 mVelAdd
Definition eft_EmitterSet.h:656
void SetAllDirectionalVel(f32 velScale)
Definition eft_EmitterSet.h:481
u8 mDrawPriority
Definition eft_EmitterSet.h:672
bool mFadeRequest
Definition eft_EmitterSet.h:666
const nw::math::VEC3 & GetDirectional() const
Definition eft_EmitterSet.h:527
s32 GetNumCreatedEmitter() const
Definition eft_EmitterSet.h:181
u32 GetUserData() const
Definition eft_EmitterSet.h:232
nw::math::MTX34 & GetRTMatrix()
Definition eft_EmitterSet.h:217
const nw::math::VEC2 & GetParticleScaleForCalc() const
Definition eft_EmitterSet.h:454
u32 GetRuntimeUserData() const
Definition eft_EmitterSet.h:618
f32 mRandomVel
Definition eft_EmitterSet.h:655
EmitterSet * GetNext() const
Definition eft_EmitterSet.h:195
void SetParticleScale(f32 scaleX, f32 scaleY)
Definition eft_EmitterSet.h:405
s32 mEmitterSetID
Definition eft_EmitterSet.h:638
void SetMtxFast(const nw::math::MTX34 &mtx)
Definition eft_EmitterSet.h:254
u8 GetDrawPriority() const
Definition eft_EmitterSet.h:227
nw::math::VEC3 mEmitterScale
Definition eft_EmitterSet.h:650
Definition eft_EmitterSimple.h:10
Definition eft_Renderer.h:23
Definition eft_System.h:24
Definition eft_CafeWrapper.cpp:117
@ EFT_EMITTER_INSET_NUM
Definition eft_Data.h:13
PtclFollowType
Definition eft_Data.h:53
@ EFT_CPU_CORE_MAX
Definition eft_Data.h:28
DrawViewFlag
Definition eft_Data.h:179
@ EFT_DRAW_VIEW_FLAG_NONE
Definition eft_Data.h:192
@ EFT_DRAW_VIEW_FLAG_ALL
Definition eft_Data.h:186
Definition eft_Emitter.h:23