Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::ParticleData Class Reference

Container to store data for a given set of particles. More...

#include <ParticleData.h>

Public Member Functions

void setParticleGeometry (const vector< vec3< F32 > > &particleGeometryVertices, const vector< U32 > &particleGeometryIndices, PrimitiveTopology particleGeometryType)
 
void setBillboarded (bool state) noexcept
 
PrimitiveTopology particleGeometryType () const noexcept
 
const vector< vec3< F32 > > & particleGeometryVertices () const noexcept
 
const vector< U32 > & particleGeometryIndices () const noexcept
 
bool isBillboarded () const noexcept
 
 PROPERTY_RW (U32, optionsMask, 0u)
 
 ParticleData (GFXDevice &context, U32 particleCount, U32 optionsMask)
 
 ~ParticleData ()
 
void generateParticles (U32 particleCount, U32 optionsMask)
 
void kill (U32 index)
 
void wake (U32 index)
 
void swapData (U32 indexA, U32 indexB)
 
U32 aliveCount () const noexcept
 
U32 totalCount () const noexcept
 
void sort ()
 Sort ALIVE particles only.
 

Public Attributes

vector< std::pair< U32, F32 > > _indices
 helper array used for sorting
 
vector< vec4< F32 > > _renderingPositions
 
vector< UColour4_renderingColours
 
vector< vec4< F32 > > _position
 x,y,z = position; w = size
 
vector< vec4< F32 > > _velocity
 x,y,z = _velocity; w = angle;
 
vector< vec4< F32 > > _acceleration
 x,y,z = _acceleration; w = weight;
 
vector< vec4< F32 > > _misc
 x = time; y = interpolation; z = 1 / time; w = distance to camera sq;
 
vector< FColour4_colour
 r,g,b,a = colour and transparency
 
vector< FColour4_startColour
 r,g,b,a = colour and transparency
 
vector< FColour4_endColour
 r,g,b,a = colour and transparency
 
string _textureFileName
 Location of the texture file. Leave blank for colour only.
 

Static Public Attributes

static constexpr U32 g_threadPartitionSize = 256
 

Protected Attributes

U32 _totalCount = 0u
 
U32 _aliveCount = 0u
 
bool _isBillboarded = true
 
vector< vec3< F32 > > _particleGeometryVertices
 
vector< U32_particleGeometryIndices
 
PrimitiveTopology _particleGeometryType = PrimitiveTopology::COUNT
 
GFXDevice_context
 

Detailed Description

Container to store data for a given set of particles.

Definition at line 59 of file ParticleData.h.

Constructor & Destructor Documentation

◆ ParticleData()

Divide::ParticleData::ParticleData ( GFXDevice context,
U32  particleCount,
U32  optionsMask 
)
explicit

Definition at line 11 of file ParticleData.cpp.

◆ ~ParticleData()

Divide::ParticleData::~ParticleData ( )

Definition at line 26 of file ParticleData.cpp.

Member Function Documentation

◆ aliveCount()

U32 Divide::ParticleData::aliveCount ( ) const
inlinenoexcept

Definition at line 117 of file ParticleData.h.

◆ generateParticles()

void Divide::ParticleData::generateParticles ( U32  particleCount,
U32  optionsMask 
)

Definition at line 30 of file ParticleData.cpp.

◆ isBillboarded()

bool Divide::ParticleData::isBillboarded ( ) const
inlinenoexcept

Definition at line 103 of file ParticleData.h.

◆ kill()

void Divide::ParticleData::kill ( U32  index)

Definition at line 70 of file ParticleData.cpp.

◆ particleGeometryIndices()

const vector< U32 > & Divide::ParticleData::particleGeometryIndices ( ) const
inlinenoexcept

Definition at line 99 of file ParticleData.h.

◆ particleGeometryType()

PrimitiveTopology Divide::ParticleData::particleGeometryType ( ) const
inlinenoexcept

Definition at line 91 of file ParticleData.h.

◆ particleGeometryVertices()

const vector< vec3< F32 > > & Divide::ParticleData::particleGeometryVertices ( ) const
inlinenoexcept

Definition at line 95 of file ParticleData.h.

◆ PROPERTY_RW()

Divide::ParticleData::PROPERTY_RW ( U32  ,
optionsMask  ,
0u   
)

◆ setBillboarded()

void Divide::ParticleData::setBillboarded ( bool  state)
noexcept

Definition at line 154 of file ParticleData.cpp.

◆ setParticleGeometry()

void Divide::ParticleData::setParticleGeometry ( const vector< vec3< F32 > > &  particleGeometryVertices,
const vector< U32 > &  particleGeometryIndices,
PrimitiveTopology  particleGeometryType 
)

Definition at line 146 of file ParticleData.cpp.

◆ sort()

void Divide::ParticleData::sort ( )

Sort ALIVE particles only.

Definition at line 80 of file ParticleData.cpp.

◆ swapData()

void Divide::ParticleData::swapData ( U32  indexA,
U32  indexB 
)

Definition at line 121 of file ParticleData.cpp.

◆ totalCount()

U32 Divide::ParticleData::totalCount ( ) const
inlinenoexcept

Definition at line 118 of file ParticleData.h.

◆ wake()

void Divide::ParticleData::wake ( U32  index)

Definition at line 75 of file ParticleData.cpp.

Member Data Documentation

◆ _acceleration

vector<vec4<F32> > Divide::ParticleData::_acceleration

x,y,z = _acceleration; w = weight;

Definition at line 72 of file ParticleData.h.

◆ _aliveCount

U32 Divide::ParticleData::_aliveCount = 0u
protected

Definition at line 125 of file ParticleData.h.

◆ _colour

vector<FColour4> Divide::ParticleData::_colour

r,g,b,a = colour and transparency

Definition at line 76 of file ParticleData.h.

◆ _context

GFXDevice& Divide::ParticleData::_context
protected

Definition at line 132 of file ParticleData.h.

◆ _endColour

vector<FColour4> Divide::ParticleData::_endColour

r,g,b,a = colour and transparency

Definition at line 80 of file ParticleData.h.

◆ _indices

vector<std::pair<U32, F32> > Divide::ParticleData::_indices

helper array used for sorting

Definition at line 64 of file ParticleData.h.

◆ _isBillboarded

bool Divide::ParticleData::_isBillboarded = true
protected

Definition at line 127 of file ParticleData.h.

◆ _misc

vector<vec4<F32> > Divide::ParticleData::_misc

x = time; y = interpolation; z = 1 / time; w = distance to camera sq;

Definition at line 74 of file ParticleData.h.

◆ _particleGeometryIndices

vector<U32> Divide::ParticleData::_particleGeometryIndices
protected

Definition at line 129 of file ParticleData.h.

◆ _particleGeometryType

PrimitiveTopology Divide::ParticleData::_particleGeometryType = PrimitiveTopology::COUNT
protected

Definition at line 130 of file ParticleData.h.

◆ _particleGeometryVertices

vector<vec3<F32> > Divide::ParticleData::_particleGeometryVertices
protected

Definition at line 128 of file ParticleData.h.

◆ _position

vector<vec4<F32> > Divide::ParticleData::_position

x,y,z = position; w = size

Definition at line 68 of file ParticleData.h.

◆ _renderingColours

vector<UColour4> Divide::ParticleData::_renderingColours

Definition at line 66 of file ParticleData.h.

◆ _renderingPositions

vector<vec4<F32> > Divide::ParticleData::_renderingPositions

Definition at line 65 of file ParticleData.h.

◆ _startColour

vector<FColour4> Divide::ParticleData::_startColour

r,g,b,a = colour and transparency

Definition at line 78 of file ParticleData.h.

◆ _textureFileName

string Divide::ParticleData::_textureFileName

Location of the texture file. Leave blank for colour only.

Definition at line 82 of file ParticleData.h.

◆ _totalCount

U32 Divide::ParticleData::_totalCount = 0u
protected

Definition at line 124 of file ParticleData.h.

◆ _velocity

vector<vec4<F32> > Divide::ParticleData::_velocity

x,y,z = _velocity; w = angle;

Definition at line 70 of file ParticleData.h.

◆ g_threadPartitionSize

constexpr U32 Divide::ParticleData::g_threadPartitionSize = 256
staticconstexpr

Definition at line 61 of file ParticleData.h.


The documentation for this class was generated from the following files: