Jet  v1.3.3
collider_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_COLLIDER_SET2_H_
8 #define INCLUDE_JET_COLLIDER_SET2_H_
9 
10 #include <jet/collider2.h>
11 #include <jet/surface_set2.h>
12 #include <vector>
13 
14 namespace jet {
15 
17 class ColliderSet2 final : public Collider2 {
18  public:
19  class Builder;
20 
23 
25  explicit ColliderSet2(const std::vector<Collider2Ptr>& others);
26 
28  Vector2D velocityAt(const Vector2D& point) const override;
29 
32 
34  size_t numberOfColliders() const;
35 
37  Collider2Ptr collider(size_t i) const;
38 
40  static Builder builder();
41 
42  private:
43  std::vector<Collider2Ptr> _colliders;
44 };
45 
47 typedef std::shared_ptr<ColliderSet2> ColliderSet2Ptr;
48 
49 
53 class ColliderSet2::Builder final {
54  public:
56  Builder& withColliders(const std::vector<Collider2Ptr>& others);
57 
60 
63 
64  private:
65  std::vector<Collider2Ptr> _colliders;
66 };
67 
68 } // namespace jet
69 
70 #endif // INCLUDE_JET_COLLIDER_SET2_H_
jet::Collider2
Abstract base class for generic collider object.
Definition: collider2.h:24
jet::ColliderSet2::ColliderSet2
ColliderSet2()
Default constructor.
jet::ColliderSet2::Builder::build
ColliderSet2 build() const
Builds ColliderSet2.
jet::ColliderSet2Ptr
std::shared_ptr< ColliderSet2 > ColliderSet2Ptr
Shared pointer for the ColliderSet2 type.
Definition: collider_set2.h:47
jet::ColliderSet2::numberOfColliders
size_t numberOfColliders() const
Returns number of colliders.
jet
Definition: advection_solver2.h:18
jet::ColliderSet2::builder
static Builder builder()
Returns builder fox ColliderSet2.
surface_set2.h
jet::ColliderSet2::velocityAt
Vector2D velocityAt(const Vector2D &point) const override
Returns the velocity of the collider at given point.
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::Collider2Ptr
std::shared_ptr< Collider2 > Collider2Ptr
Shared pointer type for the Collider2.
Definition: collider2.h:118
jet::ColliderSet2::collider
Collider2Ptr collider(size_t i) const
Returns collider at index i.
collider2.h
jet::ColliderSet2::Builder
Front-end to create ColliderSet2 objects step by step.
Definition: collider_set2.h:53
jet::ColliderSet2::ColliderSet2
ColliderSet2(const std::vector< Collider2Ptr > &others)
Constructs with other colliders.
jet::ColliderSet2::Builder::makeShared
ColliderSet2Ptr makeShared() const
Builds shared pointer of ColliderSet2 instance.
jet::ColliderSet2
Collection of 2-D colliders.
Definition: collider_set2.h:17
jet::ColliderSet2::Builder::withColliders
Builder & withColliders(const std::vector< Collider2Ptr > &others)
Returns builder with other colliders.
jet::ColliderSet2::addCollider
void addCollider(const Collider2Ptr &collider)
Adds a collider to the set.