4#include <nw/eft/eft_typeDef.h>
5#include <nw/eft/eft_Data.h>
6#include <nw/eft/eft_Callback.h>
8namespace nw {
namespace eft {
33 bool CreateEmitterSetID(
Handle* handle,
const nw::math::VEC3& pos, s32 emitterSetID, s32 resourceID = 0, u8 groupID = 0, u32 emitterMask = 0xffffffff)
35 nw::math::MTX34 matrix;
40 return CreateEmitterSetID(handle, matrix, emitterSetID, resourceID, groupID, emitterMask);
43 bool CreateEmitterSetID(
Handle* handle,
const nw::math::MTX34& mtx, s32 emitterSetID, s32 resourceID = 0, u8 groupID = 0, u32 emitterMask = 0xffffffff);
64 void Calc(
bool cacheFlush =
true);
71 void BeginRender(
const nw::math::MTX44& proj,
const nw::math::MTX34& view,
const nw::math::VEC3& camPos, f32 nearClip, f32 farClip);
113 return mStripeHead[groupID] != NULL;
125 return mNumFreeEmitter;
130 return mNumEmitterCalc;
140 return mNumEmitterSetCalc;
145 return mNumStripeCalc;
150 return mNumEmittedPtcl;
190 if (mEnableRenderPath[core][groupID] & drawPath)
198 return mEnableGroupID;
237 void ReCreateEmitter(
void** resList, s32 numResList, s32 resId, s32 setId,
bool killOnly);
254 static_assert(
sizeof(
sortEmitterSets) == 8,
"nw::eft::System::sortEmitterSets size mismatch");
350static_assert(
sizeof(
System) == 0xA28,
"nw::eft::System size mismatch");
Definition eft_Config.h:11
Definition eft_Emitter.h:222
Definition eft_EmitterSet.h:122
Definition eft_Handle.h:11
Definition eft_Renderer.h:23
Definition eft_Resource.h:59
Definition eft_System.h:24
void SetUserDataEmitterPreCalcCallback(UserDataCallBackID id, UserDataEmitterPreCalcCallback callback)
Definition eft_SystemCallback.cpp:7
const PtclStripe * GetStripeBuf() const
Definition eft_System.h:213
void EntryResource(Heap *heap, void *resource, s32 resId)
Definition eft_SystemPublic.cpp:30
void RemovePtcl()
Definition eft_System.cpp:336
u32 GetPtclBufSize() const
void AddPtclAdditionList(PtclInstance *ptcl, CpuCore core)
Definition eft_System.cpp:378
s32 GetNumPtclCalc() const
Definition eft_System.h:133
s32 GetNumEmittedPtcl() const
Definition eft_System.h:148
u32 mEmitterSetCreateID
Definition eft_System.h:314
u32 GetUsedDoubleBufferSize(CpuCore core=EFT_CPU_CORE_1) const
UserDataParticleMakeAttributeCallback mUserDataParticleMakeAttrCallback[EFT_USER_DATA_CALLBACK_ID_MAX]
Definition eft_System.h:334
s32 mCurEmitterIx
Definition eft_System.h:279
PtclInstance ** mPtclRemoveArray[EFT_CPU_CORE_MAX]
Definition eft_System.h:289
UserDataEmitterDrawOverrideCallback mUserDataEmitterDrawOverrideCallback[EFT_USER_DATA_CALLBACK_ID_MAX]
Definition eft_System.h:338
s32 GetNumEmitterSetCalc() const
Definition eft_System.h:138
u32 GetDoubleBufferSize(CpuCore core=EFT_CPU_CORE_1) const
u32 mCurrentDrawPathFlag[EFT_CPU_CORE_MAX]
Definition eft_System.h:347
EmitterInstance * mEmitters
Definition eft_System.h:277
virtual void Initialize(Heap *heap, const Config &config)
Definition eft_System.cpp:25
void * mRendererPtr[EFT_CPU_CORE_MAX]
Definition eft_System.h:319
EmitterSet * GetEmitterSetHead(u8 groupID)
Definition eft_System.h:177
void * mEmitterCalcSimplePtr
Definition eft_System.h:320
void CalcEmitter(u8 groupID, f32 frameRate=1.0f)
Definition eft_SystemCalcDraw.cpp:48
void RemovePtcl_()
Definition eft_System.cpp:225
EmitterSet * mEmitterSetHead[EFT_GROUP_MAX]
Definition eft_System.h:274
s32 mNumEmitterDataMask
Definition eft_System.h:301
void ReCreateEmitter(void **resList, s32 numResList, s32 resId, s32 setId, bool killOnly)
Definition eft_SystemCreation.cpp:227
void SetUserShaderEmitterPostCalcCallback(UserShaderCallBackID id, UserShaderEmitterPostCalcCallback callback)
Definition eft_SystemCallback.cpp:150
void KillParticle(EmitterInstance *emitter, PtclInstance *ptcl)
void FlushCache()
Definition eft_SystemCalcDraw.cpp:145
s32 mNumEmitterSetMask
Definition eft_System.h:269
UserShaderEmitterPostCalcCallback mUserShaderEmitterCalcPostCallback[EFT_USER_SHADER_CALLBACK_MAX]
Definition eft_System.h:340
EmitterInstance * GetEmitterHead(u8 groupID)
Definition eft_System.h:161
void ReCreateEmitter(EmitterSet *set, s32 resId, s32 setId, u8 groupID)
Definition eft_SystemCreation.cpp:263
s32 mNumEmitterCalc
Definition eft_System.h:304
void Calc(bool cacheFlush=true)
Definition eft_SystemCalcDraw.cpp:192
static int ComparePtclViewZ(const void *a, const void *b)
UserDataParticleRemoveCallback mUserDataParticleRemoveCallback[EFT_USER_DATA_CALLBACK_ID_MAX]
Definition eft_System.h:330
EmitterSet * mEmitterSetTail[EFT_GROUP_MAX]
Definition eft_System.h:275
void SetUserDataParticleEmitCallback(UserDataCallBackID id, UserDataParticleEmitCallback callback)
Definition eft_SystemCallback.cpp:19
void SetUserDataParticleCalcCallback(UserDataCallBackID id, UserDataParticleCalcCallback callback)
Definition eft_SystemCallback.cpp:31
nw::math::MTX44 mViewMatrix[EFT_CPU_CORE_MAX]
Definition eft_System.h:271
void AddPtclRemoveList(PtclInstance *ptcl, CpuCore core)
Definition eft_System.cpp:353
bool IsValidStripe(u8 groupID) const
Definition eft_System.h:111
void CalcParticle(EmitterInstance *emitter, CpuCore core)
Definition eft_SystemCalcDraw.cpp:88
EmitterStaticUniformBlock * mEmitterStaticUniformBlock
Definition eft_System.h:278
s32 mNumPtclDataMask
Definition eft_System.h:302
void SetUserDataEmitterPostCalcCallback(UserDataCallBackID id, UserDataEmitterPostCalcCallback callback)
Definition eft_SystemCallback.cpp:13
const char * SearchEmitterSetName(s32 emitterSetId, s32 resId=0) const
u64 mEnableGroupID
Definition eft_System.h:309
void KillEmitterGroup(u8 groupID)
Definition eft_SystemPublic.cpp:81
UserDataParticleRemoveCallback GetCurrentUserDataParticleRemoveCallback(const EmitterInstance *emitter)
Definition eft_SystemCallback.cpp:82
EmitterCalc * mEmitterCalc[EFT_EMITTER_TYPE_MAX]
Definition eft_System.h:315
s32 mNumPtclData
Definition eft_System.h:299
bool HasEnableEmitter(u8 groupID)
s32 GetNumFreeEmitter() const
Definition eft_System.h:123
s32 mNumStripe
Definition eft_System.h:300
UserShaderRenderStateSetCallback GetUserShaderRenderStateSetCallback(UserShaderCallBackID id)
Definition eft_SystemCallback.cpp:142
void RenderEmitter(EmitterInstance *emitter, bool cacheFlush=true, void *userParam=NULL)
Definition eft_SystemCalcDraw.cpp:213
bool mInitialized
Definition eft_System.h:262
u32 _8a4
Definition eft_System.h:322
PtclInstance ** mPtclAdditionArray[EFT_CPU_CORE_MAX]
Definition eft_System.h:287
void SetUserDataParticleRemoveCallback(UserDataCallBackID id, UserDataParticleRemoveCallback callback)
Definition eft_SystemCallback.cpp:25
UserDataParticleCalcCallback GetCurrentUserDataParticleCalcCallback(const EmitterInstance *emitter)
Definition eft_SystemCallback.cpp:93
UserDataCallBackID mEnableCallbackID
Definition eft_System.h:324
void KillEmitter(EmitterInstance *emitter)
Definition eft_SystemPublic.cpp:38
void AddEmitterSetToDrawList(EmitterSet *set, u8 groupID)
Definition eft_System.cpp:542
System(const Config &config)
Definition eft_System.cpp:17
s32 mNumEmitterSetCalc
Definition eft_System.h:306
UserShaderDrawOverrideCallback mUserShaderDrawOverrideCallback[EFT_USER_SHADER_CALLBACK_MAX]
Definition eft_System.h:342
Heap * mHeap
Definition eft_System.h:264
s32 GetNumEmitterCalc() const
Definition eft_System.h:128
s32 mNumResource
Definition eft_System.h:266
s32 mPtclAdditionIdx[EFT_CPU_CORE_MAX]
Definition eft_System.h:288
void KillChildParticle(EmitterInstance *emitter, PtclInstance *ptcl)
void SetUserDataEmitterDrawOverrideCallback(UserDataCallBackID id, UserDataEmitterDrawOverrideCallback callback)
Definition eft_SystemCallback.cpp:43
Renderer * GetRenderer()
Definition eft_System.h:75
void EndRender()
Definition eft_SystemCalcDraw.cpp:251
void * mEmitterSetPtr
Definition eft_System.h:318
u32 GetNumEmitter(u8 groupID)
u32 mPtclRemoveIdx[EFT_CPU_CORE_MAX]
Definition eft_System.h:290
UserShaderEmitterPostCalcCallback GetUserShaderEmitterPostCalcCallback(UserShaderCallBackID id)
Definition eft_SystemCallback.cpp:126
EmitterInstance * mEmitterHead[EFT_GROUP_MAX]
Definition eft_System.h:273
Resource * GetResource(u32 resId)
Definition eft_System.h:31
void SwapDoubleBuffer()
Definition eft_SystemCalcDraw.cpp:24
UserShaderRenderStateSetCallback mUserShaderRenderStateSetCallback[EFT_USER_SHADER_CALLBACK_MAX]
Definition eft_System.h:344
EmitterInstance * AllocEmitter(u8 groupID)
Definition eft_System.cpp:507
void KillEmitterSet(const char *emitterSetName, s32 resId)
Definition eft_SystemPublic.cpp:106
void BeginRender(const nw::math::MTX44 &proj, const nw::math::MTX34 &view, const nw::math::VEC3 &camPos, f32 nearClip, f32 farClip)
Definition eft_SystemCalcDraw.cpp:207
PtclStripe * AllocAndConnectStripe(EmitterInstance *e, PtclInstance *ptcl)
Definition eft_System.cpp:387
static CpuCore GetCurrentCore()
Definition eft_System.h:218
s32 GetNumResource() const
Definition eft_System.h:118
const EmitterInstance * GetEmitterBuf() const
Definition eft_System.h:208
void KillEmitterSet(EmitterSet *emitterSet)
Definition eft_SystemPublic.cpp:94
void CalcChildParticle(EmitterInstance *emitter, CpuCore core)
Definition eft_SystemCalcDraw.cpp:114
bool IsHasRenderingEmitter(u8 groupID, u32 drawPath) const
Definition eft_System.h:187
PtclStripe * mStripeHead[EFT_GROUP_MAX]
Definition eft_System.h:293
EmitterSet * AllocEmitterSet(Handle *handle)
Definition eft_System.cpp:484
s32 SearchEmitterSetID(const char *emitterSetName, s32 resId=0) const
Definition eft_SystemPublic.cpp:115
const PtclInstance * GetPtclBuf() const
Definition eft_System.h:201
UserDataEmitterPreCalcCallback mUserDataEmitterPreCalcCallback[EFT_USER_DATA_CALLBACK_ID_MAX]
Definition eft_System.h:326
s32 mNumEmitterData
Definition eft_System.h:298
EmitterSet * mEmitterSet
Definition eft_System.h:267
u32 _530
Definition eft_System.h:295
AlphaAnim * mAlphaAnim
Definition eft_System.h:284
s32 mNumEmittedPtcl
Definition eft_System.h:307
void SetUserDataParticleMakeAttributeCallback(UserDataCallBackID id, UserDataParticleMakeAttributeCallback callback)
Definition eft_SystemCallback.cpp:37
UserDataEmitterPostCalcCallback mUserDataEmitterPostCalcCallback[EFT_USER_DATA_CALLBACK_ID_MAX]
Definition eft_System.h:336
void * mEmitterCalcComplexPtr
Definition eft_System.h:321
virtual ~System()
Definition eft_System.cpp:170
sortEmitterSets * mSortEmittetSet[EFT_CPU_CORE_MAX]
Definition eft_System.h:345
UserDataEmitterPostCalcCallback GetCurrentUserDataEmitterPostCalcCallback(const EmitterInstance *emitter)
Definition eft_SystemCallback.cpp:60
void UpdateEmitterSetResInfo()
Definition eft_System.cpp:458
void EmitChildParticle()
Definition eft_System.cpp:361
u32 mCalcSwapFlag
Definition eft_System.h:348
UserDataParticleEmitCallback GetCurrentUserDataParticleEmitCallback(const EmitterInstance *emitter)
Definition eft_SystemCallback.cpp:71
void BeginFrame()
Definition eft_SystemCalcDraw.cpp:11
ScaleAnim * mScaleAnim
Definition eft_System.h:285
u32 mSortEmitterSetIx[EFT_CPU_CORE_MAX]
Definition eft_System.h:346
void SetUserShaderDrawOverrideCallback(UserShaderCallBackID id, UserShaderDrawOverrideCallback callback)
Definition eft_SystemCallback.cpp:156
void FlushGpuCache()
Definition eft_SystemCalcDraw.cpp:151
PtclStripe * mStripes
Definition eft_System.h:292
void UpdateEmitterResInfo()
Definition eft_System.cpp:445
void CalcParticle(bool cacheFlush=true)
Definition eft_SystemCalcDraw.cpp:159
const EmitterInstance * GetEmitter(u8 groupID, u32 idx) const
s32 mNumStripeCalc
Definition eft_System.h:308
const PtclStripe * GetStripeHead(u8 groupID) const
Definition eft_System.h:182
void ClearResource(Heap *heap, s32 resId)
Definition eft_SystemPublic.cpp:12
UserShaderDrawOverrideCallback GetUserShaderDrawOverrideCallback(UserShaderCallBackID id)
Definition eft_SystemCallback.cpp:134
Resource ** mResource
Definition eft_System.h:265
PtclInstance * mPtcls
Definition eft_System.h:282
u64 GetEnableGroupID() const
Definition eft_System.h:196
s32 mNumEmitterSet
Definition eft_System.h:268
void SetUserShaderRenderStateSetCallback(UserShaderCallBackID id, UserShaderRenderStateSetCallback callback)
Definition eft_SystemCallback.cpp:162
UserDataParticleCalcCallback mUserDataParticleCalcCallback[EFT_USER_DATA_CALLBACK_ID_MAX]
Definition eft_System.h:332
s32 mCurEmitterSetIx
Definition eft_System.h:296
UserDataParticleEmitCallback mUserDataParticleEmitCallback[EFT_USER_DATA_CALLBACK_ID_MAX]
Definition eft_System.h:328
s32 mNumStripeMask
Definition eft_System.h:303
Renderer * mRenderer[EFT_CPU_CORE_MAX]
Definition eft_System.h:312
void InitializeEmitter(EmitterInstance *emitter, const SimpleEmitterData *res, s32 resourceID, s32 emitterSetID, u32 setRndSeed, bool nonUpdateCreateID=false)
Definition eft_SystemCreation.cpp:12
bool CreateEmitterSetID(Handle *handle, const nw::math::VEC3 &pos, s32 emitterSetID, s32 resourceID=0, u8 groupID=0, u32 emitterMask=0xffffffff)
Definition eft_System.h:33
void RemoveStripe(PtclStripe *stripe)
Definition eft_System.cpp:202
bool SetCurrentUserDataCallback(UserDataCallBackID id)
void * ResourcePtr
Definition eft_System.h:317
s32 mNumFreeEmitter
Definition eft_System.h:280
EmitterSet * RemoveEmitterSetFromDrawList(EmitterSet *set)
Definition eft_System.cpp:304
Renderer * GetRenderer(nw::eft::CpuCore core)
Definition eft_System.h:80
const EmitterInstance * GetEmitterHead(u8 groupID) const
Definition eft_System.h:156
EmitterInstance * GetEmitter(u8 groupID, u32 idx)
Definition eft_SystemPublic.cpp:120
u32 mEnableRenderPath[EFT_CPU_CORE_MAX][EFT_GROUP_MAX]
Definition eft_System.h:311
const EmitterSet * GetEmitterSetHead(u8 groupID) const
Definition eft_System.h:172
s32 GetNumStripeCalc() const
Definition eft_System.h:143
s32 mNumPtclCalc
Definition eft_System.h:305
PtclInstance * AllocPtcl(PtclType type)
Definition eft_System.cpp:427
UserDataEmitterDrawOverrideCallback GetCurrentUserDataEmitterDrawOverrideCallback(const EmitterInstance *emitter)
Definition eft_SystemCallback.cpp:115
UserDataEmitterPreCalcCallback GetCurrentUserDataEmitterPreCalcCallback(const EmitterInstance *emitter)
Definition eft_SystemCallback.cpp:49
s32 mCurPtclIx
Definition eft_System.h:283
s32 mCurStripeIx
Definition eft_System.h:297
UserDataParticleMakeAttributeCallback GetCurrentUserDataParticleMakeAttributeCallback(const EmitterInstance *emitter)
Definition eft_SystemCallback.cpp:104
Definition eft_CafeWrapper.cpp:117
void(* UserShaderEmitterPostCalcCallback)(ShaderEmitterPostCalcArg &arg)
Definition eft_Callback.h:87
void(* UserDataEmitterDrawOverrideCallback)(EmitterDrawOverrideArg &arg)
Definition eft_Callback.h:82
PtclType
Definition eft_Data.h:43
@ EFT_GROUP_MAX
Definition eft_Data.h:16
bool(* UserDataParticleEmitCallback)(ParticleEmitArg &arg)
Definition eft_Callback.h:83
void(* UserDataEmitterPreCalcCallback)(EmitterPreCalcArg &arg)
Definition eft_Callback.h:80
CpuCore
Definition eft_Data.h:24
@ EFT_CPU_CORE_MAX
Definition eft_Data.h:28
@ EFT_CPU_CORE_1
Definition eft_Data.h:26
@ EFT_EMITTER_TYPE_MAX
Definition eft_Data.h:37
void(* UserDataParticleMakeAttributeCallback)(const ParticleCalcArg &arg)
Definition eft_Callback.h:86
void(* UserShaderDrawOverrideCallback)(ShaderDrawOverrideArg &arg)
Definition eft_Callback.h:88
UserShaderCallBackID
Definition eft_Data.h:128
@ EFT_USER_SHADER_CALLBACK_MAX
Definition eft_Data.h:138
void(* UserDataEmitterPostCalcCallback)(EmitterPostCalcArg &arg)
Definition eft_Callback.h:81
bool(* UserDataParticleRemoveCallback)(ParticleRemoveArg &arg)
Definition eft_Callback.h:84
void(* UserShaderRenderStateSetCallback)(RenderStateSetArg &arg)
Definition eft_Callback.h:89
UserDataCallBackID
Definition eft_Data.h:63
@ EFT_USER_DATA_CALLBACK_ID_MAX
Definition eft_Data.h:73
void(* UserDataParticleCalcCallback)(ParticleCalcArg &arg)
Definition eft_Callback.h:85
Definition eft_Particle.h:49
Definition eft_Emitter.h:23
Definition eft_Particle.h:69
Definition eft_Particle.h:28
Definition eft_Particle.h:58
Definition eft_Data.h:834
Definition eft_System.h:250
EmitterSet * emitterSet
Definition eft_System.h:251
u32 z
Definition eft_System.h:252