Pixelpart 1.9.0
Godot Plugin
Loading...
Searching...
No Matches
PixelpartEffect.h
1#ifndef PIXELPART_EFFECT_H
2#define PIXELPART_EFFECT_H
3
4#include "PixelpartEffectResource.h"
5#include "PixelpartEffectRuntime.h"
6#include "rendering/PixelpartGraphicsResourceProvider.h"
7#include "rendering/PixelpartParticleRenderer3D.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/visual_instance3d.hpp>
15#include <memory>
16#include <unordered_map>
17
18namespace godot {
28class PixelpartEffect : public VisualInstance3D {
29 GDCLASS(PixelpartEffect, VisualInstance3D)
30
31public:
32 PixelpartEffect();
33 virtual ~PixelpartEffect();
34
35#ifdef DOXYGEN
40
44 bool playing;
45
49 bool loop;
50
56 float loop_time;
57
64
68 float speed;
69
74
80 int seed;
81
86
92 Dictionary inputs;
93
100#endif
101
102 virtual void _enter_tree() override;
103 virtual void _exit_tree() override;
104
105 virtual void _process(double dt) override;
106
107 void draw();
108
114 void set_effect(Ref<PixelpartEffectResource> resource);
115
121 Ref<PixelpartEffectResource> get_effect() const;
122
130 void play(bool state);
131
137 void pause();
138
143 void restart();
144
149 void reset();
150
156 bool is_playing() const;
157
163 float get_time() const;
164
170 void set_loop(bool mode);
171
177 bool get_loop() const;
178
186 void set_loop_time(float time);
187
193 float get_loop_time() const;
194
202 void set_warmup_time(float time);
203
209 float get_warmup_time() const;
210
216 void set_speed(float sp);
217
223 float get_speed() const;
224
230 void set_frame_rate(float rate);
231
237 float get_frame_rate() const;
238
246 void set_seed(int sd);
247
253 int get_seed() const;
254
260 void enable_random_seed(bool mode);
261
267 bool is_random_seed_enabled() const;
268
276 void set_effect_scale(float scale);
277
283 float get_effect_scale() const;
284
292 void set_inputs(Dictionary inputs);
293
301 Dictionary get_inputs() const;
302
309 void set_input_bool(String name, bool value);
310
317 void set_input_int(String name, int value);
318
325 void set_input_float(String name, float value);
326
333 void set_input_float2(String name, Vector2 value);
334
341 void set_input_float3(String name, Vector3 value);
342
349 void set_input_float4(String name, Vector4 value);
350
357 bool get_input_bool(String name) const;
358
365 int get_input_int(String name) const;
366
373 float get_input_float(String name) const;
374
381 Vector2 get_input_float2(String name) const;
382
389 Vector3 get_input_float3(String name) const;
390
397 Vector4 get_input_float4(String name) const;
398
405 int get_input_type(String name) const;
406
412 TypedArray<String> get_input_names() const;
413
419 void activate_trigger(String name);
420
427 bool is_trigger_activated(String name) const;
428
436 void spawn_particles(String particleEmitterName, String particleTypeName, int count);
437
444 Ref<PixelpartNode> find_node(String name) const;
445
452 Ref<PixelpartNode> get_node(int id) const;
453
460 Ref<PixelpartNode> get_node_at_index(int index) const;
461
468 Ref<PixelpartParticleType> find_particle_type(String name) const;
469
476 Ref<PixelpartParticleType> get_particle_type(int id) const;
477
484 Ref<PixelpartParticleType> get_particle_type_at_index(int index) const;
485
486protected:
487 static void _bind_methods();
488
489private:
490 void update_transform();
491
492 Ref<PixelpartEffectResource> effectResource;
493 PixelpartEffectRuntime effectRuntime;
494
495 float effectScale = 1.0f;
496
497 bool finishedSignalEmitted = false;
498
499 PixelpartGraphicsResourceProvider graphicsResourceProvider;
500 std::unordered_map<pixelpart::ParticleEmissionPair, std::unique_ptr<PixelpartParticleRenderer3D>> particleRenderers;
501};
502}
503
504#endif
float get_frame_rate() const
Return at which rate the effect is simulated, in frames per second.
Definition PixelpartEffect.cpp:199
void spawn_particles(String particleEmitterName, String particleTypeName, int count)
Generate count particles of the given type from the given emitter.
Definition PixelpartEffect.cpp:281
int get_seed() const
Return the seed used to initialize the effect simulation.
Definition PixelpartEffect.cpp:206
int get_input_int(String name) const
Return value of an effect input. The effect input must be of type int.
Definition PixelpartEffect.cpp:252
PixelpartEffectResource effect
Effect resource that is shown.
Definition PixelpartEffect.h:39
bool is_playing() const
Return whether the effect is currently playing or is paused.
Definition PixelpartEffect.cpp:161
void set_loop_time(float time)
Set time in seconds after which the effect loops.
Definition PixelpartEffect.cpp:175
void set_input_float3(String name, Vector3 value)
Definition PixelpartEffect.cpp:243
void set_inputs(Dictionary inputs)
Set dictionary of effect input values.
Definition PixelpartEffect.cpp:224
void restart()
Restart the effect and remove all existing particles.
Definition PixelpartEffect.cpp:155
bool is_random_seed_enabled() const
Return whether a random seed is used to initialize the effect simulation.
Definition PixelpartEffect.cpp:213
void set_effect_scale(float scale)
Set multiplier for the size of the effect.
Definition PixelpartEffect.cpp:217
Ref< PixelpartParticleType > get_particle_type(int id) const
Return the particle type with the given ID.
Definition PixelpartEffect.cpp:298
Ref< PixelpartParticleType > get_particle_type_at_index(int index) const
Return the particle type at the given index.
Definition PixelpartEffect.cpp:301
Dictionary get_inputs() const
Return dictionary of effect input values.
Definition PixelpartEffect.cpp:227
float warmup_time
Time in seconds the effect is pre-simulated before being rendered.
Definition PixelpartEffect.h:63
float get_time() const
Return the time in seconds since the effect has started playing.
Definition PixelpartEffect.cpp:164
bool get_input_bool(String name) const
Return value of an effect input. The effect input must be of type bool.
Definition PixelpartEffect.cpp:249
float effect_scale
Multiplier for the size of the effect.
Definition PixelpartEffect.h:99
void set_speed(float sp)
Set how fast the effect is being played.
Definition PixelpartEffect.cpp:189
bool playing
Whether the effect is currently playing or not.
Definition PixelpartEffect.h:44
float frame_rate
At which rate the effect is simulated, in frames per second.
Definition PixelpartEffect.h:73
void set_input_float(String name, float value)
Definition PixelpartEffect.cpp:237
float get_loop_time() const
Return time in seconds after which the effect loops.
Definition PixelpartEffect.cpp:178
void reset()
Restart the effect, but do not remove existing particles.
Definition PixelpartEffect.cpp:158
void set_seed(int sd)
Set the seed used to initialize the effect simulation.
Definition PixelpartEffect.cpp:203
float get_input_float(String name) const
Return value of an effect input. The effect input must be of type float.
Definition PixelpartEffect.cpp:255
bool is_trigger_activated(String name) const
Return whether trigger name was activated.
Definition PixelpartEffect.cpp:277
Ref< PixelpartNode > get_node_at_index(int index) const
Return the node at the given index.
Definition PixelpartEffect.cpp:291
void activate_trigger(String name)
Activate trigger name.
Definition PixelpartEffect.cpp:274
void set_input_float2(String name, Vector2 value)
Definition PixelpartEffect.cpp:240
bool get_loop() const
Return whether the effect restarts automatically after time loop_time.
Definition PixelpartEffect.cpp:171
void set_effect(Ref< PixelpartEffectResource > resource)
Change the effect resource that is shown.
Definition PixelpartEffect.cpp:108
int get_input_type(String name) const
Return the type of an effect input or -1 if the effect input does not exist.
Definition PixelpartEffect.cpp:267
void play(bool state)
Start playing or pause simulation of the effect.
Definition PixelpartEffect.cpp:149
Ref< PixelpartNode > get_node(int id) const
Return the node with the given ID.
Definition PixelpartEffect.cpp:288
Ref< PixelpartEffectResource > get_effect() const
Return the effect resource that is being shown.
Definition PixelpartEffect.cpp:145
Ref< PixelpartNode > find_node(String name) const
Return the node with the given name.
Definition PixelpartEffect.cpp:285
void enable_random_seed(bool mode)
Use a random seed to initialize the effect simulation.
Definition PixelpartEffect.cpp:210
void set_input_bool(String name, bool value)
Definition PixelpartEffect.cpp:231
float get_effect_scale() const
Return multiplier for the size of the effect.
Definition PixelpartEffect.cpp:220
void set_frame_rate(float rate)
Set at which rate the effect is simulated, in frames per second.
Definition PixelpartEffect.cpp:196
void set_input_int(String name, int value)
Definition PixelpartEffect.cpp:234
Vector3 get_input_float3(String name) const
Return value of an effect input. The effect input must be of type Vector3.
Definition PixelpartEffect.cpp:261
float get_speed() const
Return how fast the effect is being played.
Definition PixelpartEffect.cpp:192
Vector2 get_input_float2(String name) const
Return value of an effect input. The effect input must be of type Vector2.
Definition PixelpartEffect.cpp:258
float speed
How fast the effect is being played.
Definition PixelpartEffect.h:68
Ref< PixelpartParticleType > find_particle_type(String name) const
Return the particle type with the given name.
Definition PixelpartEffect.cpp:295
bool random_seed
Whether to use a random seed to initialize the effect simulation.
Definition PixelpartEffect.h:85
void set_loop(bool mode)
Set whether the effect restarts automatically after time loop_time.
Definition PixelpartEffect.cpp:168
float loop_time
Time in seconds after which the effect loops.
Definition PixelpartEffect.h:56
float get_warmup_time() const
Return time in seconds the effect is pre-simulated before being rendered.
Definition PixelpartEffect.cpp:185
Dictionary inputs
Dictionary of effect input values.
Definition PixelpartEffect.h:92
bool loop
Whether the effect restarts automatically after time loop_time.
Definition PixelpartEffect.h:49
Vector4 get_input_float4(String name) const
Return value of an effect input. The effect input must be of type Vector4.
Definition PixelpartEffect.cpp:264
TypedArray< String > get_input_names() const
Return names of available effect inputs.
Definition PixelpartEffect.cpp:270
void pause()
Pause simulation of the effect.
Definition PixelpartEffect.cpp:152
void set_warmup_time(float time)
Set time in seconds the effect is pre-simulated before being rendered.
Definition PixelpartEffect.cpp:182
int seed
Seed used to initialize the effect simulation.
Definition PixelpartEffect.h:80
void set_input_float4(String name, Vector4 value)
Definition PixelpartEffect.cpp:246
Resource for a Pixelpart effect that is contained in a ppfx file.
Definition PixelpartEffectResource.h:15