NW4F Eft
Loading...
Searching...
No Matches
nw::eft::EmitterCalc Class Referenceabstract

#include <eft_Emitter.h>

Inherited by nw::eft::EmitterSimpleCalc.

Public Member Functions

 EmitterCalc (System *sys)
virtual ~EmitterCalc ()
virtual void CalcEmitter (EmitterInstance *e)=0
virtual PtclType GetPtclType () const =0
virtual u32 CalcParticle (EmitterInstance *e, CpuCore core, bool skipBehavior, bool skipMakeAttribute)
virtual u32 CalcChildParticle (EmitterInstance *e, CpuCore core, bool skipBehavior, bool skipMakeAttribute)

Static Public Member Functions

static void Initialize (Heap *heap)
static void Finalize (Heap *heap)
static void EmitParticle (EmitterInstance *__restrict e)
static void RemoveParticle (EmitterInstance *e, PtclInstance *ptcl, CpuCore core)
static u32 CalcSimpleParticleBehavior (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, CpuCore core)
static u32 CalcComplexParticleBehavior (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, CpuCore core)
static u32 CalcChildParticleBehavior (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, CpuCore core)
static void MakeParticleAttributeBuffer (PtclAttributeBuffer *__restrict attrBuffer, PtclInstance *__restrict ptcl, u32 shaderAttrFlag, f32 cameraOffset)

Protected Types

typedef PtclInstance *(* EmitFunction) (EmitterInstance *__restrict e)

Static Protected Member Functions

static PtclInstance_emitPoint (EmitterInstance *__restrict e)
static PtclInstance_emitCircle (EmitterInstance *__restrict e)
static PtclInstance_emitCircleSameDivide (EmitterInstance *__restrict e)
static PtclInstance_emitFillCircle (EmitterInstance *__restrict e)
static PtclInstance_emitSphere (EmitterInstance *__restrict e)
static PtclInstance_emitSphereSameDivide (EmitterInstance *__restrict e)
static PtclInstance_emitSphereSameDivide64 (EmitterInstance *__restrict e)
static PtclInstance_emitFillSphere (EmitterInstance *__restrict e)
static PtclInstance_emitCylinder (EmitterInstance *__restrict e)
static PtclInstance_emitFillCylinder (EmitterInstance *__restrict e)
static PtclInstance_emitBox (EmitterInstance *__restrict e)
static PtclInstance_emitFillBox (EmitterInstance *__restrict e)
static PtclInstance_emitLine (EmitterInstance *__restrict e)
static PtclInstance_emitLineSameDivide (EmitterInstance *__restrict e)
static PtclInstance_emitRectangle (EmitterInstance *__restrict e)
static const void * _ptclField_Random (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
static const void * _ptclField_Magnet (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
static const void * _ptclField_Spin (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
static const void * _ptclField_Collision (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
static const void * _ptclField_Convergence (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
static const void * _ptclField_PosAdd (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl, const void *fieldData)
static void _calcField (const ComplexEmitterData *__restrict res, EmitterInstance *__restrict e, PtclInstance *__restrict ptcl)
static void InitializeFluctuation_ (Heap *heap)
static void FinalzieFluctuation_ (Heap *heap)
static void CalcFluctuation (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl)
static void EmitCommon (EmitterInstance *__restrict e, PtclInstance *__restrict ptcl)
static void AddParticle (EmitterInstance *emitter, PtclInstance *ptcl)

Static Protected Attributes

static SystemmSys = NULL
static EmitFunction mEmitFunctions []
static f32 * sFluctuationTbl = NULL

Member Typedef Documentation

◆ EmitFunction

typedef PtclInstance *(* nw::eft::EmitterCalc::EmitFunction) (EmitterInstance *__restrict e)
protected

Constructor & Destructor Documentation

◆ EmitterCalc()

nw::eft::EmitterCalc::EmitterCalc ( System * sys)
inlineexplicit

◆ ~EmitterCalc()

virtual nw::eft::EmitterCalc::~EmitterCalc ( )
inlinevirtual

Member Function Documentation

◆ CalcEmitter()

virtual void nw::eft::EmitterCalc::CalcEmitter ( EmitterInstance * e)
pure virtual

◆ Initialize()

void nw::eft::EmitterCalc::Initialize ( Heap * heap)
inlinestatic

◆ Finalize()

void nw::eft::EmitterCalc::Finalize ( Heap * heap)
inlinestatic

◆ EmitParticle()

void nw::eft::EmitterCalc::EmitParticle ( EmitterInstance *__restrict e)
inlinestatic

◆ RemoveParticle()

void nw::eft::EmitterCalc::RemoveParticle ( EmitterInstance * e,
PtclInstance * ptcl,
CpuCore core )
static

◆ GetPtclType()

virtual PtclType nw::eft::EmitterCalc::GetPtclType ( ) const
pure virtual

◆ CalcParticle()

virtual u32 nw::eft::EmitterCalc::CalcParticle ( EmitterInstance * e,
CpuCore core,
bool skipBehavior,
bool skipMakeAttribute )
inlinevirtual

◆ CalcChildParticle()

virtual u32 nw::eft::EmitterCalc::CalcChildParticle ( EmitterInstance * e,
CpuCore core,
bool skipBehavior,
bool skipMakeAttribute )
inlinevirtual

Reimplemented in nw::eft::EmitterComplexCalc.

◆ CalcSimpleParticleBehavior()

u32 nw::eft::EmitterCalc::CalcSimpleParticleBehavior ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
CpuCore core )
static

◆ CalcComplexParticleBehavior()

u32 nw::eft::EmitterCalc::CalcComplexParticleBehavior ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
CpuCore core )
static

◆ CalcChildParticleBehavior()

u32 nw::eft::EmitterCalc::CalcChildParticleBehavior ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
CpuCore core )
static

◆ MakeParticleAttributeBuffer()

void nw::eft::EmitterCalc::MakeParticleAttributeBuffer ( PtclAttributeBuffer *__restrict attrBuffer,
PtclInstance *__restrict ptcl,
u32 shaderAttrFlag,
f32 cameraOffset )
static

◆ _emitPoint()

PtclInstance * nw::eft::EmitterCalc::_emitPoint ( EmitterInstance *__restrict e)
staticprotected

◆ _emitCircle()

PtclInstance * nw::eft::EmitterCalc::_emitCircle ( EmitterInstance *__restrict e)
staticprotected

◆ _emitCircleSameDivide()

PtclInstance * nw::eft::EmitterCalc::_emitCircleSameDivide ( EmitterInstance *__restrict e)
staticprotected

◆ _emitFillCircle()

PtclInstance * nw::eft::EmitterCalc::_emitFillCircle ( EmitterInstance *__restrict e)
staticprotected

◆ _emitSphere()

PtclInstance * nw::eft::EmitterCalc::_emitSphere ( EmitterInstance *__restrict e)
staticprotected

◆ _emitSphereSameDivide()

PtclInstance * nw::eft::EmitterCalc::_emitSphereSameDivide ( EmitterInstance *__restrict e)
staticprotected

◆ _emitSphereSameDivide64()

PtclInstance * nw::eft::EmitterCalc::_emitSphereSameDivide64 ( EmitterInstance *__restrict e)
staticprotected

◆ _emitFillSphere()

PtclInstance * nw::eft::EmitterCalc::_emitFillSphere ( EmitterInstance *__restrict e)
staticprotected

◆ _emitCylinder()

PtclInstance * nw::eft::EmitterCalc::_emitCylinder ( EmitterInstance *__restrict e)
staticprotected

◆ _emitFillCylinder()

PtclInstance * nw::eft::EmitterCalc::_emitFillCylinder ( EmitterInstance *__restrict e)
staticprotected

◆ _emitBox()

PtclInstance * nw::eft::EmitterCalc::_emitBox ( EmitterInstance *__restrict e)
staticprotected

◆ _emitFillBox()

PtclInstance * nw::eft::EmitterCalc::_emitFillBox ( EmitterInstance *__restrict e)
staticprotected

◆ _emitLine()

PtclInstance * nw::eft::EmitterCalc::_emitLine ( EmitterInstance *__restrict e)
staticprotected

◆ _emitLineSameDivide()

PtclInstance * nw::eft::EmitterCalc::_emitLineSameDivide ( EmitterInstance *__restrict e)
staticprotected

◆ _emitRectangle()

PtclInstance * nw::eft::EmitterCalc::_emitRectangle ( EmitterInstance *__restrict e)
staticprotected

◆ _ptclField_Random()

const void * nw::eft::EmitterCalc::_ptclField_Random ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
const void * fieldData )
staticprotected

◆ _ptclField_Magnet()

const void * nw::eft::EmitterCalc::_ptclField_Magnet ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
const void * fieldData )
staticprotected

◆ _ptclField_Spin()

const void * nw::eft::EmitterCalc::_ptclField_Spin ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
const void * fieldData )
staticprotected

◆ _ptclField_Collision()

const void * nw::eft::EmitterCalc::_ptclField_Collision ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
const void * fieldData )
staticprotected

◆ _ptclField_Convergence()

const void * nw::eft::EmitterCalc::_ptclField_Convergence ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
const void * fieldData )
staticprotected

◆ _ptclField_PosAdd()

const void * nw::eft::EmitterCalc::_ptclField_PosAdd ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl,
const void * fieldData )
staticprotected

◆ _calcField()

void nw::eft::EmitterCalc::_calcField ( const ComplexEmitterData *__restrict res,
EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl )
inlinestaticprotected

◆ InitializeFluctuation_()

void nw::eft::EmitterCalc::InitializeFluctuation_ ( Heap * heap)
staticprotected

◆ FinalzieFluctuation_()

void nw::eft::EmitterCalc::FinalzieFluctuation_ ( Heap * heap)
staticprotected

◆ CalcFluctuation()

void nw::eft::EmitterCalc::CalcFluctuation ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl )
staticprotected

◆ EmitCommon()

void nw::eft::EmitterCalc::EmitCommon ( EmitterInstance *__restrict e,
PtclInstance *__restrict ptcl )
staticprotected

◆ AddParticle()

void nw::eft::EmitterCalc::AddParticle ( EmitterInstance * emitter,
PtclInstance * ptcl )
inlinestaticprotected

Member Data Documentation

◆ mSys

System * nw::eft::EmitterCalc::mSys = NULL
staticprotected

◆ mEmitFunctions

EmitterCalc::EmitFunction nw::eft::EmitterCalc::mEmitFunctions
staticprotected
Initial value:
= {
}
static PtclInstance * _emitLineSameDivide(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:3165
static PtclInstance * _emitSphereSameDivide(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2804
static PtclInstance * _emitFillBox(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:3064
static PtclInstance * _emitLine(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:3143
static PtclInstance * _emitBox(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2985
static PtclInstance * _emitCircle(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2658
static PtclInstance * _emitCylinder(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2923
static PtclInstance * _emitCircleSameDivide(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2684
static PtclInstance * _emitFillCylinder(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2952
static PtclInstance * _emitSphere(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2763
static PtclInstance * _emitFillSphere(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2878
static PtclInstance * _emitFillCircle(EmitterInstance *__restrict e)
Definition eft_EmitterVolume.cpp:2728
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

◆ sFluctuationTbl

f32 * nw::eft::EmitterCalc::sFluctuationTbl = NULL
staticprotected