1#ifndef PIXELPART_PARTICLE_EMITTER_H
2#define PIXELPART_PARTICLE_EMITTER_H
4#include "PixelpartNode.h"
5#include "../property/PixelpartAnimatedPropertyFloat.h"
6#include "../property/PixelpartAnimatedPropertyFloat3.h"
7#include <pixelpart-runtime/effect/ParticleEmitter.h>
17class PixelpartParticleEmitter :
public PixelpartNode {
18 GDCLASS(PixelpartParticleEmitter, PixelpartNode)
232 virtual void init(pixelpart::Node* internalNode, pixelpart::EffectEngine* effectEnginePtr)
override;
421 Ref<PixelpartAnimatedPropertyFloat>
get_spread()
const;
424 static void _bind_methods();
427 void set_shape_points(
const std::vector<pixelpart::float3_t>& points);
428 std::vector<pixelpart::float3_t> get_shape_points()
const;
430 pixelpart::ParticleEmitter* particleEmitter =
nullptr;
434VARIANT_ENUM_CAST(PixelpartParticleEmitter::ShapeType);
435VARIANT_ENUM_CAST(PixelpartParticleEmitter::DistributionType);
436VARIANT_ENUM_CAST(PixelpartParticleEmitter::GridOrderType);
437VARIANT_ENUM_CAST(PixelpartParticleEmitter::EmissionMode);
438VARIANT_ENUM_CAST(PixelpartParticleEmitter::DirectionMode);
Node that emits particles.
Definition PixelpartParticleEmitter.h:17
void set_grid_order(GridOrderType mode)
Set the grid order of grid distribution modes.
Definition PixelpartParticleEmitter.cpp:96
DistributionType
Particle distribution modes.
Definition PixelpartParticleEmitter.h:73
@ DISTRIBUTION_UNIFORM
Definition PixelpartParticleEmitter.h:77
@ DISTRIBUTION_HOLE
Definition PixelpartParticleEmitter.h:87
@ DISTRIBUTION_GRID_ORDERED
Definition PixelpartParticleEmitter.h:102
@ DISTRIBUTION_GRID_RANDOM
Definition PixelpartParticleEmitter.h:97
@ DISTRIBUTION_BOUNDARY
Definition PixelpartParticleEmitter.h:92
@ DISTRIBUTION_CENTER
Definition PixelpartParticleEmitter.h:82
DirectionMode direction_mode
Mode to control initial particle direction.
Definition PixelpartParticleEmitter.h:229
DistributionType distribution
Where particles are spawned inside the emitter area.
Definition PixelpartParticleEmitter.h:210
Ref< PixelpartAnimatedPropertyFloat3 > get_direction() const
Direction in which particles move when spawned, in degrees.
Definition PixelpartParticleEmitter.cpp:158
void set_emission_mode(EmissionMode mode)
Set the emission mode.
Definition PixelpartParticleEmitter.cpp:129
ShapeType
Types of emitter shapes.
Definition PixelpartParticleEmitter.h:24
@ SHAPE_ELLIPSE
Definition PixelpartParticleEmitter.h:38
@ SHAPE_LINE
Definition PixelpartParticleEmitter.h:33
@ SHAPE_CUBOID
Definition PixelpartParticleEmitter.h:58
@ SHAPE_RECTANGLE
Definition PixelpartParticleEmitter.h:43
@ SHAPE_POINT
Definition PixelpartParticleEmitter.h:28
@ SHAPE_CYLINDER
Definition PixelpartParticleEmitter.h:63
@ SHAPE_ELLIPSOID
Definition PixelpartParticleEmitter.h:53
@ SHAPE_PATH
Definition PixelpartParticleEmitter.h:48
void set_shape_point(int index, Vector3 point)
Change the location of the point at the given index in the emitter shape.
Definition PixelpartParticleEmitter.cpp:58
int get_grid_size_z() const
Return the number of grid cells in Z direction.
Definition PixelpartParticleEmitter.cpp:126
EmissionMode
Modes for particle emission.
Definition PixelpartParticleEmitter.h:145
@ EMISSION_BURST_START
Definition PixelpartParticleEmitter.h:154
@ EMISSION_CONTINUOUS
Definition PixelpartParticleEmitter.h:149
@ EMISSION_BURST_END
Definition PixelpartParticleEmitter.h:161
void set_distribution(DistributionType mode)
Set where particles are spawned inside the emitter area.
Definition PixelpartParticleEmitter.cpp:82
DistributionType get_distribution() const
Return where particles are spawned inside the emitter area.
Definition PixelpartParticleEmitter.cpp:89
int get_grid_size_x() const
Return the number of grid cells in X direction.
Definition PixelpartParticleEmitter.cpp:120
void set_direction_mode(DirectionMode mode)
Set the direction mode.
Definition PixelpartParticleEmitter.cpp:143
void add_shape_point(Vector3 point)
Add a new point to the emitter shape.
Definition PixelpartParticleEmitter.cpp:35
ShapeType get_shape() const
Return shape of the emitter area.
Definition PixelpartParticleEmitter.cpp:28
void set_shape(ShapeType type)
Set shape of the emitter area.
Definition PixelpartParticleEmitter.cpp:21
void remove_shape_point(int index)
Remove the point at the given index from the emitter shape.
Definition PixelpartParticleEmitter.cpp:45
DirectionMode get_direction_mode() const
Get the direction mode.
Definition PixelpartParticleEmitter.cpp:150
GridOrderType get_grid_order() const
Get the grid order of grid distribution modes.
Definition PixelpartParticleEmitter.cpp:103
Vector3 get_shape_point(int index) const
Return the location of the point at the given index in the emitter shape.
Definition PixelpartParticleEmitter.cpp:71
GridOrderType grid_order
Grid order of grid distribution modes.
Definition PixelpartParticleEmitter.h:215
int get_shape_point_count() const
Return the number of points in the emitter shape.
Definition PixelpartParticleEmitter.cpp:78
Ref< PixelpartAnimatedPropertyFloat > get_spread() const
How much the direction varies.
Definition PixelpartParticleEmitter.cpp:169
EmissionMode emission_mode
Emission mode to control when particles are created during the lifetime of the emitter.
Definition PixelpartParticleEmitter.h:221
EmissionMode get_emission_mode() const
Return the emission mode.
Definition PixelpartParticleEmitter.cpp:136
int get_grid_size_y() const
Return the number of grid cells in Y direction.
Definition PixelpartParticleEmitter.cpp:123
void set_grid_size(int x, int y, int z)
Set the number of grid cells.
Definition PixelpartParticleEmitter.cpp:110
DirectionMode
Modes to determine the initial direction of particles.
Definition PixelpartParticleEmitter.h:171
@ DIRECTION_INHERIT
Definition PixelpartParticleEmitter.h:190
@ DIRECTION_OUTWARDS
Definition PixelpartParticleEmitter.h:180
@ DIRECTION_INWARDS
Definition PixelpartParticleEmitter.h:185
@ DIRECTION_INHERIT_INVERSE
Definition PixelpartParticleEmitter.h:195
@ DIRECTION_FIXED
Definition PixelpartParticleEmitter.h:175
GridOrderType
Order of points for grid distribution mode.
Definition PixelpartParticleEmitter.h:108
@ GRID_ORDER_Y_Z_X
Definition PixelpartParticleEmitter.h:127
@ GRID_ORDER_Y_X_Z
Definition PixelpartParticleEmitter.h:122
@ GRID_ORDER_X_Y_Z
Definition PixelpartParticleEmitter.h:112
@ GRID_ORDER_Z_X_Y
Definition PixelpartParticleEmitter.h:132
@ GRID_ORDER_Z_Y_X
Definition PixelpartParticleEmitter.h:137
@ GRID_ORDER_X_Z_Y
Definition PixelpartParticleEmitter.h:117
ShapeType shape
Shape of the emitter area.
Definition PixelpartParticleEmitter.h:205