nCine  2025.04.r498-9d36345
A cross-platform 2D game engine
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
ncine::ParticleSystem Class Reference

The class representing a particle system. More...

#include <ParticleSystem.h>

Inheritance diagram for ncine::ParticleSystem:
Inheritance graph
[legend]
Collaboration diagram for ncine::ParticleSystem:
Collaboration graph
[legend]

Public Member Functions

 ParticleSystem (SceneNode *parent, unsigned int count, Texture *texture)
 Constructs a particle system with the specified maximum amount of particles.
 
 ParticleSystem (SceneNode *parent, unsigned int count, Texture *texture, Recti texRect)
 Constructs a particle system with the specified maximum amount of particles and the specified texture rectangle.
 
 ParticleSystem (ParticleSystem &&)
 Default move constructor.
 
ParticleSystemoperator= (ParticleSystem &&)
 Default move assignment operator.
 
ParticleSystem clone () const
 Returns a copy of this object.
 
void addAffector (nctl::UniquePtr< ParticleAffector > affector)
 Adds a particle affector.
 
void clearAffectors ()
 Deletes all particle affectors.
 
void emitParticles (const ParticleInitializer &init)
 Emits particles with the specified initialization parameters.
 
void killParticles ()
 Kills all alive particles.
 
nctl::Array< nctl::UniquePtr< ParticleAffector > > & affectors ()
 Returns the array of particle affectors.
 
const nctl::Array< nctl::UniquePtr< ParticleAffector > > & affectors () const
 Returns the constant array of particle affectors.
 
bool inLocalSpace (void) const
 Returns true if particles are positioned using the particle system as their origin.
 
void setInLocalSpace (bool inLocalSpace)
 Sets or clears the local space flag, to move particles around the particle system or freely.
 
bool isParticlesUpdateEnabled (void) const
 Returns true if particles are updating.
 
void setParticlesUpdateEnabled (bool particlesUpdateEnabled)
 Enables or disables particles updating.
 
bool areAffectorsEnabled (void) const
 Returns true if affectors are modifying particles properties.
 
void setAffectorsEnabled (bool affectorsEnabled)
 Enables or disables affectors modifying particles properties.
 
unsigned int numParticles () const
 Returns the total number of particles in the system.
 
unsigned int numAliveParticles () const
 Returns the number of particles currently alive.
 
void setTexture (Texture *texture)
 Sets the texture object for every particle in the system.
 
void setTexRect (const Recti &rect)
 Sets the texture source rectangle for every particle in the system.
 
void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point for every particle in the system.
 
void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point for every particle in the system with a Vector2f
 
void setFlippedX (bool flippedX)
 Flips the texture rect horizontally for every particle in the system.
 
void setFlippedY (bool flippedY)
 Flips the texture rect vertically for every particle in the system.
 
void setBlendingPreset (DrawableNode::BlendingPreset blendingPreset)
 Sets the blending factors preset for every particle in the system.
 
void setBlendingFactors (DrawableNode::BlendingFactor srcBlendingFactor, DrawableNode::BlendingFactor destBlendingFactor)
 Sets the source and destination blending factors for every particle in the system.
 
void setLayer (uint16_t layer)
 Sets the rendering layer for every particle in the system.
 
void update (float frameTime) override
 Called once every frame to update the node. More...
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
 SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
 ~SceneNode () override
 The destructor will delete every child node.
 
 SceneNode (SceneNode &&other)
 Move constructor.
 
SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
SceneNode clone () const
 Returns a copy of this object.
 
const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
virtual bool draw (RenderQueue &renderQueue)
 Renders the node.
 
bool isUpdateEnabled () const
 Returns true if the node is updating.
 
void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
bool isDrawEnabled () const
 Returns true if the node is drawing.
 
void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
Vector2f position () const
 Returns node position relative to its parent.
 
Vector2f absPosition () const
 Returns absolute node position.
 
void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
void setPositionX (float x)
 Sets the X coordinate of the node position.
 
void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
void move (float x, float y)
 Moves the node based on two offsets.
 
void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
void moveX (float x)
 Moves the node by an offset on the X axis.
 
void moveY (float y)
 Moves the node by an offset on the Y axis.
 
Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
const Vector2fscale () const
 Gets the node scale factors.
 
const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
float rotation () const
 Gets the node rotation in degrees.
 
float absRotation () const
 Gets the node absolute rotation in degrees.
 
void setRotation (float rotation)
 Sets the node rotation in degrees.
 
Color color () const
 Gets the node color.
 
Color absColor () const
 Gets the node absolute color.
 
void setColor (Color color)
 Sets the node color through a Color object.
 
void setColorF (Colorf color)
 Sets the node color through a Colorf object.
 
void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
unsigned char alpha () const
 Gets the node alpha.
 
unsigned char absAlpha () const
 Gets the node absolute alpha.
 
void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
 Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
 Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
virtual ~Object ()
 Removes an object from the index and then destroys it.
 
 Object (Object &&other)
 Move constructor.
 
Objectoperator= (Object &&other)
 Move assignment operator.
 
unsigned int id () const
 Returns the object identification number.
 
ObjectType type () const
 Returns the object type (RTTI)
 
const char * name () const
 Returns the object name.
 
void setName (const char *name)
 Sets the object name.
 

Static Public Member Functions

static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::SceneNode
static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
static ObjectType sType ()
 Static method to return class type.
 
template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 

Protected Member Functions

 ParticleSystem (const ParticleSystem &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::SceneNode
SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
 SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
virtual void transform ()
 
- Protected Member Functions inherited from ncine::Object
 Object (const Object &other)
 Protected copy constructor used to clone objects.
 

Additional Inherited Members

- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED , DISABLED , SAME_AS_PARENT }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
  BASE = 0 , TEXTURE , SHADER , SCENENODE ,
  SPRITE , MESH_SPRITE , ANIMATED_SPRITE , PARTICLE ,
  PARTICLE_SYSTEM , FONT , TEXTNODE , AUDIOBUFFER ,
  AUDIOBUFFER_PLAYER , AUDIOSTREAM_PLAYER
}
 Object types.
 
- Static Public Attributes inherited from ncine::SceneNode
static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
  TransformationBit = 0 , ColorBit = 1 , SizeBit = 2 , TextureBit = 3 ,
  AabbBit = 4 , TransformationUploadBit = 5 , ColorUploadBit = 6
}
 Bit positions inside the dirty bitset.
 
- Protected Attributes inherited from ncine::SceneNode
bool updateEnabled_
 
bool drawEnabled_
 
SceneNodeparent_
 A pointer to the parent node.
 
nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
uint16_t visitOrderIndex_
 The visit order index of this node.
 
Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
Color absColor_
 Absolute node color as calculated by the transform() function.
 
uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
Matrix4x4f localMatrix_
 Local transformation matrix.
 
bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
ObjectType type_
 Object type.
 

Detailed Description

The class representing a particle system.

Member Function Documentation

◆ update()

void ncine::ParticleSystem::update ( float  frameTime)
overridevirtual

Called once every frame to update the node.

Note
The frame time is expressed in seconds.

Reimplemented from ncine::SceneNode.


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