Yet Another Game Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
body.h
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #include <math/matrix.h>
12 
13 namespace yage
14 {
15 
16 class Body
17 {
18 public:
19  // gravity constant
20  static const double GRAVITY;
21 
22 protected:
23  // center of mass of the object
25 
26  // mass of the object
27  double mass_ = 1;
28 
29  // current velocity of the object
31 
32  // boolean that defines if gravity can act on the object
33  bool gravity_ = true;
34 
35  // current acceleration
37 
38  // force acting on the body
40 
41 public:
42  // apply force to the object and update the velocity
43  virtual void applyForce(const Vector2d &force) = 0;
44  virtual void update() = 0;
45 
46  double xPosition() const;
47  double yPosition() const;
48 
49 protected:
50  // protected constructor to initialize member variables
51  Body(Vector2d position = Vector2d(0, 0), double mass = 1,
52  Vector2d velocity = Vector2d(0, 0), bool gravity = false);
53 };
54 
55 } // namespace yage
bool gravity_
Definition: body.h:33
double xPosition() const
Definition: body.cpp:18
static const double GRAVITY
Definition: body.h:20
virtual void applyForce(const Vector2d &force)=0
Vector2d force_
Definition: body.h:39
double yPosition() const
Definition: body.cpp:23
Definition: body.h:16
Body(Vector2d position=Vector2d(0, 0), double mass=1, Vector2d velocity=Vector2d(0, 0), bool gravity=false)
Definition: body.cpp:28
Vector2d velocity_
Definition: body.h:30
Vector2< double > Vector2d
Definition of a 2D vector.
Definition: matrix.h:397
Vector2d acceleration_
Definition: body.h:36
double mass_
Definition: body.h:27
virtual void update()=0
Vector2d position_
Definition: body.h:24