4#include <nw/eft/eft_typeDef.h>
5#include <nw/eft/eft_Data.h>
6#include <nw/eft/eft_Random.h>
7#include <nw/eft/eft_AnimKeyFrame.h>
8#include <nw/eft/eft_Primitive.h>
9#include <nw/eft/eft_Shader.h>
10#include <nw/eft/eft_Particle.h>
12namespace nw {
namespace eft {
109 return res->drawPath;
129 if (res->type != EFT_EMITTER_TYPE_COMPLEX)
137 if (res->type == EFT_EMITTER_TYPE_SIMPLE)
143 return reinterpret_cast<
const ChildData*>(cres + 1);
150 if (res->type == EFT_EMITTER_TYPE_SIMPLE)
158 return reinterpret_cast<
const StripeData*>((u32)cres + cres->stripeDataOffset);
179 return (
res->userData & bit) ?
true :
false;
184 return static_cast<u8>(
res->userData);
189 return static_cast<u8>(
res->userData >> 8);
194 return static_cast<u8>(
res->userData2);
199 return static_cast<u8>(
res->userData2 >> 8);
204 return static_cast<u8>(
res->userData2 >> 16);
209 return static_cast<u8>(
res->userData2 >> 24);
214 return res->userDataF[idx];
217static_assert(
sizeof(
EmitterInstance) == 0x220,
"nw::eft::EmitterInstance size mismatch");
310static_assert(
sizeof(
EmitterCalc) == 4,
"nw::eft::EmitterCalc size mismatch");
314 const void*
__restrict fres =
reinterpret_cast<
const void*>((u32)res + res->fieldDataOffset);
326 if (emitter->ptclHead == NULL)
340 if (emitter->ptclTail == NULL)
Definition eft_Emitter.h:222
static const void * _ptclField_Convergence(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
Definition eft_EmitterField.cpp:193
static PtclInstance * _emitLineSameDivide(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:3165
static void EmitParticle(EmitterInstance *__restrict e)
Definition eft_Emitter.h:247
static const void * _ptclField_PosAdd(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
Definition eft_EmitterField.cpp:204
static PtclInstance * _emitSphereSameDivide(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2804
static void RemoveParticle(EmitterInstance *e, PtclInstance *ptcl, CpuCore core)
Definition eft_Emitter.cpp:255
static void AddParticle(EmitterInstance *emitter, PtclInstance *ptcl)
Definition eft_Emitter.h:324
static const void * _ptclField_Magnet(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
Definition eft_EmitterField.cpp:23
static void InitializeFluctuation_(Heap *heap)
Definition eft_EmitterFluctuation.cpp:9
static System * mSys
Definition eft_Emitter.h:272
static void Initialize(Heap *heap)
Definition eft_Emitter.h:236
static void EmitCommon(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl)
Definition eft_Emitter.cpp:290
static const void * _ptclField_Random(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
Definition eft_EmitterField.cpp:8
virtual u32 CalcChildParticle(EmitterInstance *e, CpuCore core, bool skipBehavior, bool skipMakeAttribute)
Definition eft_Emitter.h:261
static PtclInstance * _emitFillBox(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:3064
static PtclInstance * _emitLine(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:3143
static void FinalzieFluctuation_(Heap *heap)
Definition eft_EmitterFluctuation.cpp:22
virtual PtclType GetPtclType() const =0
EmitterCalc(System *sys)
Definition eft_Emitter.h:224
static const void * _ptclField_Spin(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
Definition eft_EmitterField.cpp:34
static u32 CalcChildParticleBehavior(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, CpuCore core)
Definition eft_ParticleBehavior.cpp:527
virtual void CalcEmitter(EmitterInstance *e)=0
static const void * _ptclField_Collision(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
Definition eft_EmitterField.cpp:106
static PtclInstance * _emitBox(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2985
static void Finalize(Heap *heap)
Definition eft_Emitter.h:241
static void MakeParticleAttributeBuffer(PtclAttributeBuffer *__restrict attrBuffer, PtclInstance *__restrict ptcl, u32 shaderAttrFlag, f32 cameraOffset)
Definition eft_ParticleBehavior.cpp:650
static PtclInstance * _emitCircle(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2658
static f32 * sFluctuationTbl
Definition eft_Emitter.h:301
static void CalcFluctuation(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl)
Definition eft_EmitterFluctuation.cpp:28
static PtclInstance * _emitCylinder(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2923
static PtclInstance * _emitCircleSameDivide(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2684
virtual ~EmitterCalc()
Definition eft_Emitter.h:229
static PtclInstance * _emitFillCylinder(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2952
static PtclInstance * _emitSphere(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2763
static u32 CalcSimpleParticleBehavior(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, CpuCore core)
Definition eft_ParticleBehavior.cpp:192
static PtclInstance * _emitFillSphere(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2878
static void _calcField(const ComplexEmitterData *__restrict res, EmitterInstance *__restrict e, PtclInstance *__restrict ptcl)
Definition eft_Emitter.h:312
static EmitFunction mEmitFunctions[]
Definition eft_Emitter.h:291
static PtclInstance * _emitFillCircle(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2728
virtual u32 CalcParticle(EmitterInstance *e, CpuCore core, bool skipBehavior, bool skipMakeAttribute)
Definition eft_Emitter.h:256
static u32 CalcComplexParticleBehavior(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, CpuCore core)
Definition eft_ParticleBehavior.cpp:358
static PtclInstance * _emitRectangle(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:3204
static PtclInstance * _emitPoint(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2639
static PtclInstance * _emitSphereSameDivide64(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2841
Definition eft_EmitterSet.h:15
Definition eft_EmitterSet.h:122
Definition eft_Shader.h:410
Definition eft_Primitive.h:10
Definition eft_Random.h:133
Definition eft_System.h:24
Definition eft_CafeWrapper.cpp:117
PtclType
Definition eft_Data.h:43
PtclFollowType
Definition eft_Data.h:53
UserDataFlag
Definition eft_Data.h:601
UserDataParamIdx
Definition eft_Data.h:621
CpuCore
Definition eft_Data.h:24
BlendType
Definition eft_Data.h:321
EmitterType
Definition eft_Data.h:34
@ EFT_EMITTER_TYPE_SIMPLE
Definition eft_Data.h:35
@ EFT_SHADER_TYPE_MAX
Definition eft_Data.h:314
BillboardType
Definition eft_Data.h:365
@ EFT_BILLBOARD_TYPE_COMPLEX_STRIPE
Definition eft_Data.h:372
@ EFT_BILLBOARD_TYPE_STRIPE
Definition eft_Data.h:371
@ EFT_ANIM_MAX
Definition eft_AnimKeyFrame.h:44
@ EFT_CHILD_FLAG_ENABLE
Definition eft_Data.h:468
@ EFT_FIELD_MASK_POSADD
Definition eft_Data.h:515
@ EFT_FIELD_MASK_COLLISION
Definition eft_Data.h:513
@ EFT_FIELD_MASK_MAGNET
Definition eft_Data.h:511
@ EFT_FIELD_MASK_CONVERGENCE
Definition eft_Data.h:514
@ EFT_FIELD_MASK_RANDOM
Definition eft_Data.h:510
@ EFT_FIELD_MASK_SPIN
Definition eft_Data.h:512
Definition eft_Data.h:1024
EmitterType type
Definition eft_Data.h:787
char * name
Definition eft_Data.h:795
Definition eft_Data.h:1006
Definition eft_Emitter.h:23
u32 childEntryNum
Definition eft_Emitter.h:73
const SimpleEmitterData * GetSimpleEmitterData() const
Definition eft_Emitter.h:102
u32 emitterSetCreateID
Definition eft_Emitter.h:34
EmitterDynamicUniformBlock * childEmitterDynamicUniformBlock
Definition eft_Emitter.h:82
bool stopDraw
Definition eft_Emitter.h:67
EmitterInstance * next
Definition eft_Emitter.h:49
u8 GetUserDataU8Param1() const
Definition eft_Emitter.h:187
KeyFrameAnimArray * emitterAnimArray
Definition eft_Emitter.h:60
u32 behaviorFlag
Definition eft_Emitter.h:68
bool isCalculated
Definition eft_Emitter.h:66
bool isEmitted
Definition eft_Emitter.h:65
nw::math::MTX34 emitterRT
Definition eft_Emitter.h:35
u32 GetDrawPathFlag() const
Definition eft_Emitter.h:107
BillboardType GetBillboardType() const
Definition eft_Emitter.h:97
ParticleShader * shader[EFT_SHADER_TYPE_MAX]
Definition eft_Emitter.h:56
f32 emitSaving
Definition eft_Emitter.h:28
const ComplexEmitterData * GetComplexEmitterData() const
Definition eft_Emitter.h:127
EmitterStaticUniformBlock * childEmitterStaticUniformBlock
Definition eft_Emitter.h:80
u32 shaderArrtFlag
Definition eft_Emitter.h:69
EmitterCalc * calc
Definition eft_Emitter.h:50
ParticleShader * childShader[EFT_SHADER_TYPE_MAX]
Definition eft_Emitter.h:57
PtclInstance * childHead
Definition eft_Emitter.h:53
nw::math::VEC3 rotatRnd
Definition eft_Emitter.h:45
u32 stripeVertexNum
Definition eft_Emitter.h:74
PtclInstance * childTail
Definition eft_Emitter.h:55
BlendType GetBlendType() const
Definition eft_Emitter.h:117
f32 emitDistVessel
Definition eft_Emitter.h:43
f32 preCnt
Definition eft_Emitter.h:25
EmitterType GetEmitterType() const
Definition eft_Emitter.h:92
void UpdateResInfo()
Definition eft_Emitter.cpp:66
s32 groupID
Definition eft_Emitter.h:31
f32 GetUserDataF32Param(nw::eft::UserDataParamIdx idx) const
Definition eft_Emitter.h:212
PtclFollowType followType
Definition eft_Emitter.h:47
nw::math::VEC3 scaleRnd
Definition eft_Emitter.h:44
void TransformWorldVec(nw::math::VEC3 *pDst, nw::math::VEC3 *pSrc, PtclInstance *pPtcl)
s32 childPtclNum
Definition eft_Emitter.h:30
f32 preEmitCnt
Definition eft_Emitter.h:27
EmitterInstance * prev
Definition eft_Emitter.h:48
nw::math::VEC3 transRnd
Definition eft_Emitter.h:46
u8 GetUserDataU8Param2() const
Definition eft_Emitter.h:192
f32 frameRate
Definition eft_Emitter.h:40
void TransformWorldVecNormal(nw::math::VEC3 *pDst, nw::math::VEC3 *pSrc, PtclInstance *pPtcl)
nw::math::MTX34 animEmitterRT
Definition eft_Emitter.h:62
const char * GetEmitterName() const
Definition eft_Emitter.h:112
f32 cnt
Definition eft_Emitter.h:24
PtclAttributeBuffer * ptclAttributeBuffer
Definition eft_Emitter.h:76
const ChildData * GetChildData() const
Definition eft_Emitter.h:135
f32 fadeAlpha
Definition eft_Emitter.h:39
PtclRandom rnd
Definition eft_Emitter.h:37
u8 GetUserDataU8Param4() const
Definition eft_Emitter.h:202
const SimpleEmitterData * res
Definition eft_Emitter.h:51
EmitterStaticUniformBlock * emitterStaticUniformBlock
Definition eft_Emitter.h:79
u32 entryNum
Definition eft_Emitter.h:72
void TransformLocalVec(nw::math::VEC3 *pDst, nw::math::VEC3 *pSrc, PtclInstance *pPtcl)
void Init(const SimpleEmitterData *resource)
Definition eft_Emitter.cpp:10
bool IsEnableUserDataFlag(nw::eft::UserDataFlag bit) const
Definition eft_Emitter.h:177
Primitive * childPrimitive
Definition eft_Emitter.h:59
s32 emissionInterval
Definition eft_Emitter.h:38
EmitterController * controller
Definition eft_Emitter.h:33
void TransformLocalVecNormal(nw::math::VEC3 *pDst, nw::math::VEC3 *pSrc, PtclInstance *pPtcl)
bool emitDistPrevPosSet
Definition eft_Emitter.h:42
u8 GetUserDataU8Param0() const
Definition eft_Emitter.h:182
bool IsHasChildParticle() const
Definition eft_Emitter.h:164
f32 emitAnimValue[EFT_ANIM_MAX]
Definition eft_Emitter.h:61
u32 childShaderArrtFlag
Definition eft_Emitter.h:70
nw::math::MTX34 emitterSRT
Definition eft_Emitter.h:36
EmitterDynamicUniformBlock * emitterDynamicUniformBlock
Definition eft_Emitter.h:81
const StripeData * GetStripeData() const
Definition eft_Emitter.h:148
EmitterSet * emitterSet
Definition eft_Emitter.h:32
StripeVertexBuffer * stripeBuffer
Definition eft_Emitter.h:78
s32 ptclNum
Definition eft_Emitter.h:29
f32 emitCnt
Definition eft_Emitter.h:26
Primitive * primitive
Definition eft_Emitter.h:58
u8 GetUserDataU8Param3() const
Definition eft_Emitter.h:197
PtclInstance * ptclHead
Definition eft_Emitter.h:52
f32 emitVessel
Definition eft_Emitter.h:64
PtclAttributeBuffer * childPtclAttributeBuffer
Definition eft_Emitter.h:77
u8 GetUserDataU8Param5() const
Definition eft_Emitter.h:207
PtclInstance * ptclTail
Definition eft_Emitter.h:54
nw::math::MTX34 animEmitterSRT
Definition eft_Emitter.h:63
nw::math::VEC3 emitDistPrevPos
Definition eft_Emitter.h:41
const EmitterSet * GetEmitterSet() const
Definition eft_Emitter.h:122
Definition eft_AnimKeyFrame.h:69
Definition eft_Data.h:656
Definition eft_Particle.h:69
PtclInstance * prev
Definition eft_Particle.h:103
PtclInstance * next
Definition eft_Particle.h:104
Definition eft_Data.h:834
BillboardType billboardType
Definition eft_Data.h:923
BlendType blendType
Definition eft_Data.h:877
VolumeType volumeType
Definition eft_Data.h:879
Definition eft_Data.h:1162
Definition eft_UniformBlock.h:38