NW4F Eft
Loading...
Searching...
No Matches
eft_EmitterComplex.h
Go to the documentation of this file.
1#ifndef EFT_EMITTER_COMPLEX_H_
2#define EFT_EMITTER_COMPLEX_H_
3
4#include <nw/eft/eft_typeDef.h>
5#include <nw/eft/eft_EmitterSimple.h>
6
7namespace nw { namespace eft {
8
10{
11public:
14 {
15 }
16
17 virtual void CalcEmitter(EmitterInstance* e);
18 virtual u32 CalcParticle(EmitterInstance* e, CpuCore core, bool skipBehavior, bool skipMakeAttribute);
19 virtual u32 CalcChildParticle(EmitterInstance* e, CpuCore core, bool skipBehavior, bool skipMakeAttribute);
20
22
23 virtual PtclType GetPtclType() const
24 {
26 }
27
28private:
29 static inline void AddChildPtclToList(EmitterInstance* e, PtclInstance* ptcl)
30 {
31 if (e->childHead == NULL)
32 {
33 e->childHead = ptcl;
34 ptcl->prev = ptcl->next = NULL;
35 }
36 else
37 {
38 e->childHead->prev = ptcl;
39 ptcl->next = e->childHead;
40 e->childHead = ptcl;
41 ptcl->prev = NULL;
42 }
43
44 if (e->childTail == NULL)
45 e->childTail = ptcl;
46
47 e->childPtclNum++;
48 }
49
50 static void CalcComplex(EmitterInstance* __restrict e, PtclInstance* __restrict ptcl, CpuCore core);
51};
52static_assert(sizeof(EmitterComplexCalc) == 4, "nw::eft::EmitterComplexCalc size mismatch");
53
54} } // namespace nw::eft
55
56#endif // EFT_EMITTER_COMPLEX_H_
Definition eft_EmitterComplex.h:10
virtual void CalcEmitter(EmitterInstance *e)
Definition eft_EmitterComplex.cpp:9
static void AddChildPtclToList(EmitterInstance *e, PtclInstance *ptcl)
Definition eft_EmitterComplex.h:29
EmitterComplexCalc(System *sys)
Definition eft_EmitterComplex.h:12
static void EmitChildParticle(EmitterInstance *e, PtclInstance *p)
Definition eft_EmitterChild.cpp:114
virtual PtclType GetPtclType() const
Definition eft_EmitterComplex.h:23
virtual u32 CalcChildParticle(EmitterInstance *e, CpuCore core, bool skipBehavior, bool skipMakeAttribute)
Definition eft_EmitterChild.cpp:10
virtual u32 CalcParticle(EmitterInstance *e, CpuCore core, bool skipBehavior, bool skipMakeAttribute)
Definition eft_EmitterComplex.cpp:169
static void CalcComplex(EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, CpuCore core)
Definition eft_EmitterComplex.cpp:14
Definition eft_EmitterSimple.h:10
EmitterSimpleCalc(System *sys)
Definition eft_EmitterSimple.h:12
Definition eft_System.h:24
Definition eft_CafeWrapper.cpp:117
PtclType
Definition eft_Data.h:43
@ EFT_PTCL_TYPE_COMPLEX
Definition eft_Data.h:45
CpuCore
Definition eft_Data.h:24
Definition eft_Emitter.h:23
PtclInstance * childHead
Definition eft_Emitter.h:53
PtclInstance * childTail
Definition eft_Emitter.h:55
Definition eft_Particle.h:69
PtclInstance * prev
Definition eft_Particle.h:103
PtclInstance * next
Definition eft_Particle.h:104