Jet  v1.3.3
grid_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_GRID_EMITTER_SET3_H_
8 #define INCLUDE_JET_GRID_EMITTER_SET3_H_
9 
10 #include <jet/grid_emitter3.h>
11 #include <tuple>
12 #include <vector>
13 
14 namespace jet {
15 
19 class GridEmitterSet3 final : public GridEmitter3 {
20  public:
21  class Builder;
22 
25 
27  explicit GridEmitterSet3(const std::vector<GridEmitter3Ptr>& emitters);
28 
30  virtual ~GridEmitterSet3();
31 
33  void addEmitter(const GridEmitter3Ptr& emitter);
34 
36  static Builder builder();
37 
38  private:
39  std::vector<GridEmitter3Ptr> _emitters;
40 
41  void onUpdate(
42  double currentTimeInSeconds,
43  double timeIntervalInSeconds) override;
44 };
45 
47 typedef std::shared_ptr<GridEmitterSet3> GridEmitterSet3Ptr;
48 
49 
54  public:
56  Builder& withEmitters(const std::vector<GridEmitter3Ptr>& emitters);
57 
60 
63 
64  private:
65  std::vector<GridEmitter3Ptr> _emitters;
66 };
67 
68 } // namespace jet
69 
70 #endif // INCLUDE_JET_GRID_EMITTER_SET3_H_
jet::GridEmitterSet3Ptr
std::shared_ptr< GridEmitterSet3 > GridEmitterSet3Ptr
Shared pointer type for the GridEmitterSet3.
Definition: grid_emitter_set3.h:47
jet::GridEmitterSet3::addEmitter
void addEmitter(const GridEmitter3Ptr &emitter)
Adds sub-emitter.
jet::GridEmitterSet3::builder
static Builder builder()
Returns builder fox GridEmitterSet3.
jet::GridEmitterSet3::Builder::withEmitters
Builder & withEmitters(const std::vector< GridEmitter3Ptr > &emitters)
Returns builder with list of sub-emitters.
jet
Definition: advection_solver2.h:18
jet::GridEmitter3
Abstract base class for 3-D grid-based emitters.
Definition: grid_emitter3.h:22
jet::GridEmitterSet3::Builder::makeShared
GridEmitterSet3Ptr makeShared() const
Builds shared pointer of GridEmitterSet3 instance.
grid_emitter3.h
jet::GridEmitterSet3::Builder
Front-end to create GridEmitterSet3 objects step by step.
Definition: grid_emitter_set3.h:53
jet::GridEmitterSet3
3-D grid-based emitter set.
Definition: grid_emitter_set3.h:19
jet::GridEmitterSet3::~GridEmitterSet3
virtual ~GridEmitterSet3()
Destructor.
jet::GridEmitterSet3::Builder::build
GridEmitterSet3 build() const
Builds GridEmitterSet3.
jet::GridEmitterSet3::GridEmitterSet3
GridEmitterSet3(const std::vector< GridEmitter3Ptr > &emitters)
Constructs an emitter with sub-emitters.
jet::GridEmitter3Ptr
std::shared_ptr< GridEmitter3 > GridEmitter3Ptr
Shared pointer type for the GridEmitter3.
Definition: grid_emitter3.h:70
jet::GridEmitterSet3::GridEmitterSet3
GridEmitterSet3()
Constructs an emitter.