Jet  v1.3.3
particle_emitter_set2.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_SET2_H_
8 #define INCLUDE_JET_PARTICLE_EMITTER_SET2_H_
9 
10 #include <jet/particle_emitter2.h>
11 #include <tuple>
12 #include <vector>
13 
14 namespace jet {
15 
19 class ParticleEmitterSet2 final : public ParticleEmitter2 {
20  public:
21  class Builder;
22 
25 
28  const std::vector<ParticleEmitter2Ptr>& emitters);
29 
32 
34  void addEmitter(const ParticleEmitter2Ptr& emitter);
35 
37  static Builder builder();
38 
39  private:
40  std::vector<ParticleEmitter2Ptr> _emitters;
41 
42  void onSetTarget(const ParticleSystemData2Ptr& particles) override;
43 
44  void onUpdate(
45  double currentTimeInSeconds,
46  double timeIntervalInSecond) override;
47 };
48 
50 typedef std::shared_ptr<ParticleEmitterSet2> ParticleEmitterSet2Ptr;
51 
52 
57  public:
59  Builder& withEmitters(const std::vector<ParticleEmitter2Ptr>& emitters);
60 
63 
66 
67  private:
68  std::vector<ParticleEmitter2Ptr> _emitters;
69 };
70 
71 } // namespace jet
72 
73 #endif // INCLUDE_JET_PARTICLE_EMITTER_SET2_H_
jet::ParticleEmitterSet2::ParticleEmitterSet2
ParticleEmitterSet2()
Constructs an emitter.
jet::ParticleEmitter2
Abstract base class for 2-D particle emitter.
Definition: particle_emitter2.h:18
jet::ParticleEmitterSet2::builder
static Builder builder()
Returns builder fox ParticleEmitterSet2.
jet::ParticleEmitterSet2
2-D particle-based emitter set.
Definition: particle_emitter_set2.h:19
jet
Definition: advection_solver2.h:18
particle_emitter2.h
jet::ParticleEmitterSet2Ptr
std::shared_ptr< ParticleEmitterSet2 > ParticleEmitterSet2Ptr
Shared pointer type for the ParticleEmitterSet2.
Definition: particle_emitter_set2.h:50
jet::ParticleEmitterSet2::Builder::makeShared
ParticleEmitterSet2Ptr makeShared() const
Builds shared pointer of ParticleEmitterSet2 instance.
jet::ParticleEmitterSet2::Builder::withEmitters
Builder & withEmitters(const std::vector< ParticleEmitter2Ptr > &emitters)
Returns builder with list of sub-emitters.
jet::ParticleEmitterSet2::~ParticleEmitterSet2
virtual ~ParticleEmitterSet2()
Destructor.
jet::ParticleEmitterSet2::Builder::build
ParticleEmitterSet2 build() const
Builds ParticleEmitterSet2.
jet::ParticleEmitter2Ptr
std::shared_ptr< ParticleEmitter2 > ParticleEmitter2Ptr
Shared pointer for the ParticleEmitter2 type.
Definition: particle_emitter2.h:79
jet::ParticleEmitterSet2::ParticleEmitterSet2
ParticleEmitterSet2(const std::vector< ParticleEmitter2Ptr > &emitters)
Constructs an emitter with sub-emitters.
jet::ParticleSystemData2Ptr
std::shared_ptr< ParticleSystemData2 > ParticleSystemData2Ptr
Shared pointer type of ParticleSystemData2.
Definition: particle_system_data2.h:250
jet::ParticleEmitterSet2::addEmitter
void addEmitter(const ParticleEmitter2Ptr &emitter)
Adds sub-emitter.
jet::ParticleEmitterSet2::Builder
Front-end to create ParticleEmitterSet2 objects step by step.
Definition: particle_emitter_set2.h:56