Jet  v1.3.3
rigid_body_collider2.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_RIGID_BODY_COLLIDER2_H_
8 #define INCLUDE_JET_RIGID_BODY_COLLIDER2_H_
9 
10 #include <jet/collider2.h>
11 
12 namespace jet {
13 
20 class RigidBodyCollider2 final : public Collider2 {
21  public:
22  class Builder;
23 
26 
28  double angularVelocity = 0.0;
29 
32 
35  const Surface2Ptr& surface,
36  const Vector2D& linearVelocity,
37  double angularVelocity);
38 
40  Vector2D velocityAt(const Vector2D& point) const override;
41 
43  static Builder builder();
44 };
45 
47 typedef std::shared_ptr<RigidBodyCollider2> RigidBodyCollider2Ptr;
48 
49 
54  public:
57 
60 
63 
66 
69 
70  private:
71  Surface2Ptr _surface;
72  Vector2D _linearVelocity{0, 0};
73  double _angularVelocity = 0.0;
74 };
75 
76 } // namespace jet
77 
78 #endif // INCLUDE_JET_RIGID_BODY_COLLIDER2_H_
jet::RigidBodyCollider2::RigidBodyCollider2
RigidBodyCollider2(const Surface2Ptr &surface)
Constructs a collider with a surface.
jet::RigidBodyCollider2::Builder
Front-end to create RigidBodyCollider2 objects step by step.
Definition: rigid_body_collider2.h:53
jet::RigidBodyCollider2::velocityAt
Vector2D velocityAt(const Vector2D &point) const override
Returns the velocity of the collider at given point.
jet::RigidBodyCollider2::builder
static Builder builder()
Returns builder fox RigidBodyCollider2.
jet::Collider2
Abstract base class for generic collider object.
Definition: collider2.h:24
jet::RigidBodyCollider2::angularVelocity
double angularVelocity
Angular velocity of the rigid body.
Definition: rigid_body_collider2.h:28
jet
Definition: advection_solver2.h:18
jet::Collider2::surface
const Surface2Ptr & surface() const
Returns the surface instance.
jet::RigidBodyCollider2::Builder::withLinearVelocity
Builder & withLinearVelocity(const Vector2D &linearVelocity)
Returns builder with linear velocity.
jet::RigidBodyCollider2::Builder::build
RigidBodyCollider2 build() const
Builds RigidBodyCollider2.
jet::Surface2Ptr
std::shared_ptr< Surface2 > Surface2Ptr
Shared pointer for the Surface2 type.
Definition: surface2.h:109
jet::RigidBodyCollider2::Builder::withSurface
Builder & withSurface(const Surface2Ptr &surface)
Returns builder with surface.
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::RigidBodyCollider2::Builder::makeShared
RigidBodyCollider2Ptr makeShared() const
Builds shared pointer of RigidBodyCollider2 instance.
collider2.h
jet::RigidBodyCollider2
2-D rigid body collider class.
Definition: rigid_body_collider2.h:20
jet::RigidBodyCollider2::Builder::withAngularVelocity
Builder & withAngularVelocity(double angularVelocity)
Returns builder with angular velocity.
jet::RigidBodyCollider2Ptr
std::shared_ptr< RigidBodyCollider2 > RigidBodyCollider2Ptr
Shared pointer for the RigidBodyCollider2 type.
Definition: rigid_body_collider2.h:47
jet::RigidBodyCollider2::linearVelocity
Vector2D linearVelocity
Linear velocity of the rigid body.
Definition: rigid_body_collider2.h:22
jet::RigidBodyCollider2::RigidBodyCollider2
RigidBodyCollider2(const Surface2Ptr &surface, const Vector2D &linearVelocity, double angularVelocity)
Constructs a collider with a surface and other parameters.