Jet  v1.3.3
particle_emitter_set3.h
Go to the documentation of this file.
1 // Copyright (c) 2018 Doyub Kim
2 //
3 // I am making my contributions/submissions to this project solely in my
4 // personal capacity and am not conveying any rights to any intellectual
5 // property of any third parties.
6 
7 #ifndef INCLUDE_JET_PARTICLE_EMITTER_SET3_H_
8 #define INCLUDE_JET_PARTICLE_EMITTER_SET3_H_
9 
10 #include <jet/particle_emitter3.h>
11 #include <tuple>
12 #include <vector>
13 
14 namespace jet {
15 
19 class ParticleEmitterSet3 final : public ParticleEmitter3 {
20  public:
21  class Builder;
22 
25 
28  const std::vector<ParticleEmitter3Ptr>& emitters);
29 
32 
34  void addEmitter(const ParticleEmitter3Ptr& emitter);
35 
37  static Builder builder();
38 
39  private:
40  std::vector<ParticleEmitter3Ptr> _emitters;
41 
42  void onSetTarget(const ParticleSystemData3Ptr& particles) override;
43 
44  void onUpdate(
45  double currentTimeInSeconds,
46  double timeIntervalInSecond) override;
47 };
48 
50 typedef std::shared_ptr<ParticleEmitterSet3> ParticleEmitterSet3Ptr;
51 
52 
57  public:
59  Builder& withEmitters(const std::vector<ParticleEmitter3Ptr>& emitters);
60 
63 
66 
67  private:
68  std::vector<ParticleEmitter3Ptr> _emitters;
69 };
70 
71 } // namespace jet
72 
73 #endif // INCLUDE_JET_PARTICLE_EMITTER_SET3_H_
jet::ParticleEmitterSet3::~ParticleEmitterSet3
virtual ~ParticleEmitterSet3()
Destructor.
jet::ParticleEmitterSet3::addEmitter
void addEmitter(const ParticleEmitter3Ptr &emitter)
Adds sub-emitter.
jet::ParticleEmitterSet3::Builder::withEmitters
Builder & withEmitters(const std::vector< ParticleEmitter3Ptr > &emitters)
Returns builder with list of sub-emitters.
jet::ParticleSystemData3Ptr
std::shared_ptr< ParticleSystemData3 > ParticleSystemData3Ptr
Shared pointer type of ParticleSystemData3.
Definition: particle_system_data3.h:250
particle_emitter3.h
jet::ParticleEmitter3Ptr
std::shared_ptr< ParticleEmitter3 > ParticleEmitter3Ptr
Shared pointer for the ParticleEmitter3 type.
Definition: particle_emitter3.h:79
jet::ParticleEmitter3
Abstract base class for 3-D particle emitter.
Definition: particle_emitter3.h:18
jet::ParticleEmitterSet3Ptr
std::shared_ptr< ParticleEmitterSet3 > ParticleEmitterSet3Ptr
Shared pointer type for the ParticleEmitterSet3.
Definition: particle_emitter_set3.h:50
jet
Definition: advection_solver2.h:18
jet::ParticleEmitterSet3::Builder::build
ParticleEmitterSet3 build() const
Builds ParticleEmitterSet3.
jet::ParticleEmitterSet3::ParticleEmitterSet3
ParticleEmitterSet3(const std::vector< ParticleEmitter3Ptr > &emitters)
Constructs an emitter with sub-emitters.
jet::ParticleEmitterSet3::Builder::makeShared
ParticleEmitterSet3Ptr makeShared() const
Builds shared pointer of ParticleEmitterSet3 instance.
jet::ParticleEmitterSet3::builder
static Builder builder()
Returns builder fox ParticleEmitterSet3.
jet::ParticleEmitterSet3::Builder
Front-end to create ParticleEmitterSet3 objects step by step.
Definition: particle_emitter_set3.h:56
jet::ParticleEmitterSet3::ParticleEmitterSet3
ParticleEmitterSet3()
Constructs an emitter.
jet::ParticleEmitterSet3
3-D particle-based emitter set.
Definition: particle_emitter_set3.h:19