UGDK  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
simplebody.h
Go to the documentation of this file.
1 #ifndef UGDK_ACTION_3D_COMPONENT_SIMPLEBODY_H
2 #define UGDK_ACTION_3D_COMPONENT_SIMPLEBODY_H
3 
5 
6 namespace ugdk {
7 namespace action {
8 namespace mode3d {
9 
10 namespace component {
11 
12 class SimpleBody final : public Body {
13 public:
14  using Body::ApplyImpulse;
15 
16  SimpleBody(const Ogre::Vector3& initial_pos, const Ogre::Quaternion& initial_dir);
17  ~SimpleBody();
18 
19  double mass() const override;
20  short collision_group() const override;
21  short collides_with() const override;
22  void set_angular_factor(double x_axis, double y_axis, double z_axis) override {}
23  void set_restitution(double factor) override {}
24  void set_friction(double frict) override {}
25  void set_damping(double linear, double angular) override {}
26  void SetRespondsOnContact(bool has_response) override {}
27  void SetContinuousCollisionDetection(double speed_threshold, double sphere_radius) override {}
28 
29  Ogre::Vector3 position() const override;
30  Ogre::Quaternion orientation() const override;
31  void set_orientation(const Ogre::Vector3& dir) override;
32  Ogre::Vector3 linear_velocity() const override;
33  void set_linear_velocity(const Ogre::Vector3& velocity) override {}
34  Ogre::Vector3 angular_velocity() const override;
35  Ogre::Vector3 GetVelocityInPoint(const Ogre::Vector3& point) const override;
36 
37  void Translate(double move_x, double move_y, double move_z) override;
38  void ApplyImpulse(double imp_x, double imp_y, double imp_z) override;
39  void ApplyImpulse(const Ogre::Vector3& imp, const Ogre::Vector3& relative_pos) override;
40  void Rotate(double yaw, double pitch, double roll) override;
41  void Scale(double factor_x, double factor_y, double factor_z) override;
42 
43  void AddCollisionAction(short target_mask, const CollisionAction& action) override {}
44 
45  protected:
46  void OnTaken() override;
47 
48  Ogre::Vector3 initial_pos_;
49  Ogre::Quaternion initial_dir_;
50 };
51 
52 inline SimpleBody::SimpleBody(const Ogre::Vector3& initial_pos, const Ogre::Quaternion& initial_dir)
53  : initial_pos_(initial_pos), initial_dir_(initial_dir) {}
54 
55 inline double SimpleBody::mass() const {
56  return 0.0;
57 }
58 inline short SimpleBody::collision_group() const {
59  return 0;
60 }
61 inline short SimpleBody::collides_with() const {
62  return 0;
63 }
64 inline Ogre::Vector3 SimpleBody::linear_velocity() const {
65  return Ogre::Vector3::ZERO;
66 }
67 inline Ogre::Vector3 SimpleBody::angular_velocity() const {
68  return Ogre::Vector3::ZERO;
69 }
70 inline Ogre::Vector3 SimpleBody::GetVelocityInPoint(const Ogre::Vector3& point) const {
71  return Ogre::Vector3::ZERO;
72 }
73 
74 template <>
75 class NullComponent<SimpleBody> : public NullComponent<Body>{};
76 
77 } // namespace component
78 } // namespace mode3d
79 } // namespace action
80 } // namespace ugdk
81 
82 #endif // UGDK_ACTION_3D_COMPONENT_SIMPLEBODY_H
void Rotate(double yaw, double pitch, double roll) override
void AddCollisionAction(short target_mask, const CollisionAction &action) override
Definition: simplebody.h:43
SimpleBody(const Ogre::Vector3 &initial_pos, const Ogre::Quaternion &initial_dir)
Definition: simplebody.h:52
short collides_with() const override
Definition: simplebody.h:61
Ogre::Vector3 linear_velocity() const override
Definition: simplebody.h:64
void Translate(double move_x, double move_y, double move_z) override
void OnTaken() override
TODO: Make this not accessible from Object.
void SetContinuousCollisionDetection(double speed_threshold, double sphere_radius) override
Definition: simplebody.h:27
Ogre::Quaternion initial_dir_
Definition: simplebody.h:49
void set_damping(double linear, double angular) override
Definition: simplebody.h:25
Ogre::Quaternion orientation() const override
void ApplyImpulse(const Ogre::Vector3 &imp)
Definition: body.h:86
Definition: animation.h:11
Ogre::Vector3 GetVelocityInPoint(const Ogre::Vector3 &point) const override
Definition: simplebody.h:70
void Scale(double factor_x, double factor_y, double factor_z) override
void set_linear_velocity(const Ogre::Vector3 &velocity) override
Definition: simplebody.h:33
void ApplyImpulse(double imp_x, double imp_y, double imp_z) override
double mass() const override
Definition: simplebody.h:55
void set_friction(double frict) override
Definition: simplebody.h:24
void set_restitution(double factor) override
Definition: simplebody.h:23
void set_angular_factor(double x_axis, double y_axis, double z_axis) override
Definition: simplebody.h:22
std::function< void(const ElementPtr &, const ElementPtr &, const ContactPointVector &) > CollisionAction
Definition: body.h:34
short collision_group() const override
Definition: simplebody.h:58
Ogre::Vector3 position() const override
void set_orientation(const Ogre::Vector3 &dir) override
Ogre::Vector3 angular_velocity() const override
Definition: simplebody.h:67
void SetRespondsOnContact(bool has_response) override
Definition: simplebody.h:26
Ogre::Vector3 initial_pos_
Definition: simplebody.h:48