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 
10 #pragma once
11 
12 #include <math/matrix.h>
13 
14 namespace yage
15 {
16 
17 class Body
18 {
19 public:
20  // gravity constant
21  static const double GRAVITY;
22 
23 protected:
24  // center of mass of the object
26 
27  // mass of the object
28  double mass_ = 1;
29 
30  // current velocity of the object
32 
33  // boolean that defines if gravity can act on the object
34  bool gravity_ = true;
35 
36  // current acceleration
38 
39  // force acting on the body
41 
42 public:
43  // apply force to the object and update the velocity
44  virtual void applyForce(const Vector2d &force) = 0;
45  virtual void update() = 0;
46 
47  double xPosition() const;
48  double yPosition() const;
49 
50 protected:
51  // protected constructor to initialize member variables
52  Body(Vector2d position = Vector2d(0, 0), double mass = 1,
53  Vector2d velocity = Vector2d(0, 0), bool gravity = false);
54 };
55 
56 } // namespace yage
bool gravity_
Definition: body.h:34
double xPosition() const
Definition: body.cpp:19
static const double GRAVITY
Definition: body.h:21
virtual void applyForce(const Vector2d &force)=0
Vector2d force_
Definition: body.h:40
double yPosition() const
Definition: body.cpp:24
Definition: body.h:17
Body(Vector2d position=Vector2d(0, 0), double mass=1, Vector2d velocity=Vector2d(0, 0), bool gravity=false)
Definition: body.cpp:29
Vector2d velocity_
Definition: body.h:31
-*- c++ -*-
Vector2< double > Vector2d
Definition of a 2D vector.
Definition: matrix.h:394
Vector2d acceleration_
Definition: body.h:37
double mass_
Definition: body.h:28
virtual void update()=0
Vector2d position_
Definition: body.h:25