1 #ifndef UGDK_ACTION_3D_COMPONENT_PHYSICSBODY_H
2 #define UGDK_ACTION_3D_COMPONENT_PHYSICSBODY_H
5 #include <LinearMath/btTransform.h>
6 #include <unordered_map>
8 class btCollisionShape;
44 double mass()
const override;
50 void set_damping(
double linear,
double angular)
override;
54 Ogre::Vector3
position()
const override;
62 void Translate(
double move_x,
double move_y,
double move_z)
override;
63 void ApplyImpulse(
double imp_x,
double imp_y,
double imp_z)
override;
64 void ApplyImpulse(
const Ogre::Vector3& imp,
const Ogre::Vector3& relative_pos)
override;
65 void Rotate(
double yaw,
double pitch,
double roll)
override;
66 void Scale(
double factor_x,
double factor_y,
double factor_z)
override;
74 friend class ::ugdk::action::mode3d::Physics;
79 std::unordered_map<short, CollisionAction> action_map_;
83 : physics_(physics), physics_data_(physics_data) {}
86 return physics_data_.
mass;
104 #endif // BULLETWORKS_COMPONENT_PHYSICSBODY_H
void Rotate(double yaw, double pitch, double roll) override
void SetContinuousCollisionDetection(double speed_threshold, double sphere_radius) override
btCollisionShape * shape
Definition: physicsbody.h:31
Ogre::Quaternion orientation() const override
void Translate(double move_x, double move_y, double move_z) override
short collides_with() const override
Definition: physicsbody.h:92
btTransform initial
Definition: physicsbody.h:33
Ogre::Vector3 GetVelocityInPoint(const Ogre::Vector3 &point) const override
void Scale(double factor_x, double factor_y, double factor_z) override
void SetRespondsOnContact(bool has_response) override
void ApplyImpulse(const Ogre::Vector3 &imp)
Definition: body.h:86
void set_angular_factor(double x_axis, double y_axis, double z_axis) override
Definition: animation.h:11
Definition: physicsbody.h:19
void set_restitution(double factor) override
short collides_with
Definition: physicsbody.h:29
void AddCollisionAction(short target_mask, const CollisionAction &action) override
double mass
Definition: physicsbody.h:25
double mass() const override
Definition: physicsbody.h:85
void set_linear_velocity(const Ogre::Vector3 &velocity) override
short collision_group() const override
Definition: physicsbody.h:89
void OnTaken() override
TODO: Make this not accessible from Object.
std::function< void(const ElementPtr &, const ElementPtr &, const ContactPointVector &) > CollisionAction
Definition: body.h:34
void set_damping(double linear, double angular) override
Definition: component.h:36
btTransform offset
Definition: physicsbody.h:35
void ApplyImpulse(double imp_x, double imp_y, double imp_z) override
Definition: physicsbody.h:23
Ogre::Vector3 linear_velocity() const override
short collision_group
Definition: physicsbody.h:27
void set_friction(double frict) override
Ogre::Vector3 position() const override
PhysicsBody(Physics &physics, const PhysicsData &physics_data)
Definition: physicsbody.h:82
void set_orientation(const Ogre::Vector3 &dir) override
Ogre::Vector3 angular_velocity() const override
bool apply_orientation
Definition: physicsbody.h:37