Pixelpart 1.9.1
Godot Plugin
Loading...
Searching...
No Matches
PixelpartEffect2D.h
1#ifndef PIXELPART_EFFECT_2D_H
2#define PIXELPART_EFFECT_2D_H
3
4#include "PixelpartEffectResource.h"
5#include "PixelpartEffectRuntime.h"
6#include "rendering/PixelpartGraphicsResourceProvider.h"
7#include "rendering/PixelpartParticleCanvasItem.h"
8#include "particletype/PixelpartParticleType.h"
9#include "node/PixelpartParticleEmitter.h"
10#include "node/PixelpartForceField.h"
11#include "node/PixelpartCollider.h"
12#include <pixelpart-runtime/effect/ParticleEmissionPair.h>
13#include <godot_cpp/core/binder_common.hpp>
14#include <godot_cpp/classes/node2d.hpp>
15#include <cstdint>
16#include <memory>
17#include <unordered_map>
18
19namespace godot {
30class PixelpartEffect2D : public Node2D {
31 GDCLASS(PixelpartEffect2D, Node2D)
32
33public:
34 PixelpartEffect2D();
35 virtual ~PixelpartEffect2D();
36
37#ifdef DOXYGEN
42
46 bool playing;
47
51 bool loop;
52
58 float loop_time;
59
66
70 float speed;
71
76
82 int seed;
83
88
94 Dictionary inputs;
95
102
106 bool flip_h;
107
111 bool flip_v;
112#endif
113
114 virtual void _enter_tree() override;
115
116 virtual void _process(double dt) override;
117
118 virtual void _draw() override;
119
120 void _notification(int p_what);
121
127 void set_effect(Ref<PixelpartEffectResource> resource);
128
134 Ref<PixelpartEffectResource> get_effect() const;
135
143 void play(bool state);
144
150 void pause();
151
156 void restart();
157
162 void reset();
163
169 bool is_playing() const;
170
176 float get_time() const;
177
183 void set_loop(bool mode);
184
190 bool get_loop() const;
191
199 void set_loop_time(float time);
200
206 float get_loop_time() const;
207
215 void set_warmup_time(float time);
216
222 float get_warmup_time() const;
223
229 void set_speed(float sp);
230
236 float get_speed() const;
237
243 void set_frame_rate(float rate);
244
250 float get_frame_rate() const;
251
259 void set_seed(int sd);
260
266 int get_seed() const;
267
273 void enable_random_seed(bool mode);
274
280 bool is_random_seed_enabled() const;
281
289 void set_effect_scale(float scale);
290
296 float get_effect_scale() const;
297
303 void set_flip_h(bool flip);
304
310 void set_flip_v(bool flip);
311
317 bool get_flip_h() const;
318
324 bool get_flip_v() const;
325
333 void set_inputs(Dictionary inputs);
334
342 Dictionary get_inputs() const;
343
350 void set_input_bool(String name, bool value);
351
358 void set_input_int(String name, int value);
359
366 void set_input_float(String name, float value);
367
374 void set_input_float2(String name, Vector2 value);
375
382 void set_input_float3(String name, Vector3 value);
383
390 void set_input_float4(String name, Vector4 value);
391
398 bool get_input_bool(String name) const;
399
406 int get_input_int(String name) const;
407
414 float get_input_float(String name) const;
415
422 Vector2 get_input_float2(String name) const;
423
430 Vector3 get_input_float3(String name) const;
431
438 Vector4 get_input_float4(String name) const;
439
446 int get_input_type(String name) const;
447
453 TypedArray<String> get_input_names() const;
454
460 void activate_trigger(String name);
461
468 bool is_trigger_activated(String name) const;
469
477 void spawn_particles(String particleEmitterName, String particleTypeName, int count);
478
485 Ref<PixelpartNode> find_node(String name) const;
486
493 Ref<PixelpartNode> get_node(int id) const;
494
501 Ref<PixelpartNode> get_node_at_index(int index) const;
502
509 Ref<PixelpartParticleType> find_particle_type(String name) const;
510
517 Ref<PixelpartParticleType> get_particle_type(int id) const;
518
525 Ref<PixelpartParticleType> get_particle_type_at_index(int index) const;
526
527protected:
528 static void _bind_methods();
529
530private:
531 void apply_transform();
532
533 Ref<PixelpartEffectResource> effectResource;
534 PixelpartEffectRuntime effectRuntime;
535 bool editorPreviewEnabled = true;
536
537 float effectScale = 100.0f;
538 bool flipH = false;
539 bool flipV = true;
540
541 bool finishedSignalEmitted = false;
542
543 PixelpartGraphicsResourceProvider graphicsResourceProvider;
544 std::unordered_map<pixelpart::ParticleEmissionPair, std::unique_ptr<PixelpartParticleCanvasItem>> particleCanvasItems;
545};
546}
547
548#endif
Ref< PixelpartNode > find_node(String name) const
Return the node with the given name.
Definition PixelpartEffect2D.cpp:302
Vector3 get_input_float3(String name) const
Return value of an effect input. The effect input must be of type Vector3.
Definition PixelpartEffect2D.cpp:278
float get_speed() const
Return how fast the effect is being played.
Definition PixelpartEffect2D.cpp:193
int get_input_int(String name) const
Return value of an effect input. The effect input must be of type int.
Definition PixelpartEffect2D.cpp:269
void set_input_float3(String name, Vector3 value)
Definition PixelpartEffect2D.cpp:260
int seed
Seed used to initialize the effect simulation.
Definition PixelpartEffect2D.h:82
Vector4 get_input_float4(String name) const
Return value of an effect input. The effect input must be of type Vector4.
Definition PixelpartEffect2D.cpp:281
void set_input_bool(String name, bool value)
Definition PixelpartEffect2D.cpp:248
bool loop
Whether the effect restarts automatically after time loop_time.
Definition PixelpartEffect2D.h:51
bool get_flip_v() const
Return whether the effect is flipped vertically.
Definition PixelpartEffect2D.cpp:237
Ref< PixelpartEffectResource > get_effect() const
Return the effect resource that is being shown.
Definition PixelpartEffect2D.cpp:146
Ref< PixelpartNode > get_node(int id) const
Return the node with the given ID.
Definition PixelpartEffect2D.cpp:305
float frame_rate
At which rate the effect is simulated, in frames per second.
Definition PixelpartEffect2D.h:75
void set_effect_scale(float scale)
Set multiplier for the size of the effect.
Definition PixelpartEffect2D.cpp:218
bool playing
Whether the effect is currently playing or not.
Definition PixelpartEffect2D.h:46
void set_input_float(String name, float value)
Definition PixelpartEffect2D.cpp:254
bool get_flip_h() const
Return whether the effect is flipped horizontally.
Definition PixelpartEffect2D.cpp:234
Ref< PixelpartParticleType > get_particle_type_at_index(int index) const
Return the particle type at the given index.
Definition PixelpartEffect2D.cpp:318
void pause()
Pause simulation of the effect.
Definition PixelpartEffect2D.cpp:153
float effect_scale
Multiplier for the size of the effect.
Definition PixelpartEffect2D.h:101
void activate_trigger(String name)
Activate trigger name.
Definition PixelpartEffect2D.cpp:291
void play(bool state)
Start playing or pause simulation of the effect.
Definition PixelpartEffect2D.cpp:150
void set_inputs(Dictionary inputs)
Set dictionary of effect input values.
Definition PixelpartEffect2D.cpp:241
float warmup_time
Time in seconds the effect is pre-simulated before being rendered.
Definition PixelpartEffect2D.h:65
float get_loop_time() const
Return time in seconds after which the effect loops.
Definition PixelpartEffect2D.cpp:179
void reset()
Restart the effect, but do not remove existing particles.
Definition PixelpartEffect2D.cpp:159
void set_loop(bool mode)
Set whether the effect restarts automatically after time loop_time.
Definition PixelpartEffect2D.cpp:169
void set_input_float2(String name, Vector2 value)
Definition PixelpartEffect2D.cpp:257
Dictionary inputs
Dictionary of effect input values.
Definition PixelpartEffect2D.h:94
bool is_trigger_activated(String name) const
Return whether trigger name was activated.
Definition PixelpartEffect2D.cpp:294
void spawn_particles(String particleEmitterName, String particleTypeName, int count)
Generate count particles of the given type from the given emitter.
Definition PixelpartEffect2D.cpp:298
void set_flip_h(bool flip)
Set whether the effect is flipped horizontally.
Definition PixelpartEffect2D.cpp:226
float get_effect_scale() const
Return multiplier for the size of the effect.
Definition PixelpartEffect2D.cpp:222
float get_input_float(String name) const
Return value of an effect input. The effect input must be of type float.
Definition PixelpartEffect2D.cpp:272
float get_warmup_time() const
Return time in seconds the effect is pre-simulated before being rendered.
Definition PixelpartEffect2D.cpp:186
void set_flip_v(bool flip)
Set whether the effect is flipped vertically.
Definition PixelpartEffect2D.cpp:230
void set_speed(float sp)
Set how fast the effect is being played.
Definition PixelpartEffect2D.cpp:190
float get_frame_rate() const
Return at which rate the effect is simulated, in frames per second.
Definition PixelpartEffect2D.cpp:200
int get_input_type(String name) const
Return the type of an effect input or -1 if the effect input does not exist.
Definition PixelpartEffect2D.cpp:284
float loop_time
Time in seconds after which the effect loops.
Definition PixelpartEffect2D.h:58
bool get_input_bool(String name) const
Return value of an effect input. The effect input must be of type bool.
Definition PixelpartEffect2D.cpp:266
Ref< PixelpartParticleType > find_particle_type(String name) const
Return the particle type with the given name.
Definition PixelpartEffect2D.cpp:312
float speed
How fast the effect is being played.
Definition PixelpartEffect2D.h:70
bool get_loop() const
Return whether the effect restarts automatically after time loop_time.
Definition PixelpartEffect2D.cpp:172
void set_frame_rate(float rate)
Set at which rate the effect is simulated, in frames per second.
Definition PixelpartEffect2D.cpp:197
int get_seed() const
Return the seed used to initialize the effect simulation.
Definition PixelpartEffect2D.cpp:207
void enable_random_seed(bool mode)
Use a random seed to initialize the effect simulation.
Definition PixelpartEffect2D.cpp:211
Ref< PixelpartParticleType > get_particle_type(int id) const
Return the particle type with the given ID.
Definition PixelpartEffect2D.cpp:315
PixelpartEffectResource effect
Effect resource that is shown.
Definition PixelpartEffect2D.h:41
TypedArray< String > get_input_names() const
Return names of available effect inputs.
Definition PixelpartEffect2D.cpp:287
bool flip_h
Whether the effect is flipped horizontally.
Definition PixelpartEffect2D.h:106
void set_warmup_time(float time)
Set time in seconds the effect is pre-simulated before being rendered.
Definition PixelpartEffect2D.cpp:183
void set_input_float4(String name, Vector4 value)
Definition PixelpartEffect2D.cpp:263
bool is_playing() const
Return whether the effect is currently playing or is paused.
Definition PixelpartEffect2D.cpp:162
bool flip_v
Whether the effect is flipped vertically.
Definition PixelpartEffect2D.h:111
Ref< PixelpartNode > get_node_at_index(int index) const
Return the node at the given index.
Definition PixelpartEffect2D.cpp:308
bool is_random_seed_enabled() const
Return whether a random seed is used to initialize the effect simulation.
Definition PixelpartEffect2D.cpp:214
Dictionary get_inputs() const
Return dictionary of effect input values.
Definition PixelpartEffect2D.cpp:244
void set_input_int(String name, int value)
Definition PixelpartEffect2D.cpp:251
bool random_seed
Whether to use a random seed to initialize the effect simulation.
Definition PixelpartEffect2D.h:87
Vector2 get_input_float2(String name) const
Return value of an effect input. The effect input must be of type Vector2.
Definition PixelpartEffect2D.cpp:275
void set_loop_time(float time)
Set time in seconds after which the effect loops.
Definition PixelpartEffect2D.cpp:176
void set_seed(int sd)
Set the seed used to initialize the effect simulation.
Definition PixelpartEffect2D.cpp:204
float get_time() const
Return the time in seconds since the effect has started playing.
Definition PixelpartEffect2D.cpp:165
void set_effect(Ref< PixelpartEffectResource > resource)
Change the effect resource that is shown.
Definition PixelpartEffect2D.cpp:102
void restart()
Restart the effect and remove all existing particles.
Definition PixelpartEffect2D.cpp:156
Resource for a Pixelpart effect that is contained in a ppfx file.
Definition PixelpartEffectResource.h:15