Pixelpart 1.9.0
Godot Plugin
Loading...
Searching...
No Matches
PixelpartParticleEmitter.h
1#ifndef PIXELPART_PARTICLE_EMITTER_H
2#define PIXELPART_PARTICLE_EMITTER_H
3
4#include "PixelpartNode.h"
5#include "../property/PixelpartAnimatedPropertyFloat.h"
6#include "../property/PixelpartAnimatedPropertyFloat3.h"
7#include <pixelpart-runtime/effect/ParticleEmitter.h>
8#include <vector>
9
10namespace godot {
17class PixelpartParticleEmitter : public PixelpartNode {
18 GDCLASS(PixelpartParticleEmitter, PixelpartNode)
19
20public:
65
104
139
163
197
200
201#ifdef DOXYGEN
206
211
216
222
230 #endif
231
232 virtual void init(pixelpart::Node* internalNode, pixelpart::EffectEngine* effectEnginePtr) override;
233
239 void set_shape(ShapeType type);
240
246 ShapeType get_shape() const;
247
255 void add_shape_point(Vector3 point);
256
264 void remove_shape_point(int index);
265
274 void set_shape_point(int index, Vector3 point);
275
282 Vector3 get_shape_point(int index) const;
283
291 int get_shape_point_count() const;
292
302
312
318 void set_grid_order(GridOrderType mode);
319
326
336 void set_grid_size(int x, int y, int z);
337
345 int get_grid_size_x() const;
346
354 int get_grid_size_y() const;
355
363 int get_grid_size_z() const;
364
374
384
394
404
412 Ref<PixelpartAnimatedPropertyFloat3> get_direction() const;
413
421 Ref<PixelpartAnimatedPropertyFloat> get_spread() const;
422
423protected:
424 static void _bind_methods();
425
426private:
427 void set_shape_points(const std::vector<pixelpart::float3_t>& points);
428 std::vector<pixelpart::float3_t> get_shape_points() const;
429
430 pixelpart::ParticleEmitter* particleEmitter = nullptr;
431};
432}
433
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);
439
440#endif
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