summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorJosh Grams <josh@qualdan.com>2016-04-26 08:15:15 -0400
committerJosh Grams <josh@qualdan.com>2016-04-26 08:15:15 -0400
commita7b4127481d1f377a50ac5f62ec3f20e2ba71dff (patch)
tree011eb32b9e34b29d1a7c9011c33f501a51658302 /scene
parentffaced87a652109bf150f2680b666a8602d04103 (diff)
RigidBody2D (add_force, set_inertia): new methods.
Diffstat (limited to 'scene')
-rw-r--r--scene/2d/physics_body_2d.cpp15
-rw-r--r--scene/2d/physics_body_2d.h5
2 files changed, 18 insertions, 2 deletions
diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp
index 517967bf6c..8f0474b765 100644
--- a/scene/2d/physics_body_2d.cpp
+++ b/scene/2d/physics_body_2d.cpp
@@ -602,6 +602,12 @@ real_t RigidBody2D::get_mass() const{
return mass;
}
+void RigidBody2D::set_inertia(real_t p_inertia) {
+
+ ERR_FAIL_COND(p_inertia<=0);
+ Physics2DServer::get_singleton()->body_set_param(get_rid(),Physics2DServer::BODY_PARAM_INERTIA,p_inertia);
+}
+
real_t RigidBody2D::get_inertia() const{
return Physics2DServer::get_singleton()->body_get_param(get_rid(),Physics2DServer::BODY_PARAM_INERTIA);
@@ -797,6 +803,10 @@ float RigidBody2D::get_applied_torque() const {
return Physics2DServer::get_singleton()->body_get_applied_torque(get_rid());
};
+void RigidBody2D::add_force(const Vector2& p_offset, const Vector2& p_force) {
+
+ Physics2DServer::get_singleton()->body_add_force(get_rid(),p_offset,p_force);
+}
void RigidBody2D::set_continuous_collision_detection_mode(CCDMode p_mode) {
@@ -874,6 +884,7 @@ void RigidBody2D::_bind_methods() {
ObjectTypeDB::bind_method(_MD("get_mass"),&RigidBody2D::get_mass);
ObjectTypeDB::bind_method(_MD("get_inertia"),&RigidBody2D::get_inertia);
+ ObjectTypeDB::bind_method(_MD("set_inertia","inertia"),&RigidBody2D::set_inertia);
ObjectTypeDB::bind_method(_MD("set_weight","weight"),&RigidBody2D::set_weight);
ObjectTypeDB::bind_method(_MD("get_weight"),&RigidBody2D::get_weight);
@@ -912,7 +923,7 @@ void RigidBody2D::_bind_methods() {
ObjectTypeDB::bind_method(_MD("get_continuous_collision_detection_mode"),&RigidBody2D::get_continuous_collision_detection_mode);
ObjectTypeDB::bind_method(_MD("set_axis_velocity","axis_velocity"),&RigidBody2D::set_axis_velocity);
- ObjectTypeDB::bind_method(_MD("apply_impulse","pos","impulse"),&RigidBody2D::apply_impulse);
+ ObjectTypeDB::bind_method(_MD("apply_impulse","offset","impulse"),&RigidBody2D::apply_impulse);
ObjectTypeDB::bind_method(_MD("set_applied_force","force"),&RigidBody2D::set_applied_force);
ObjectTypeDB::bind_method(_MD("get_applied_force"),&RigidBody2D::get_applied_force);
@@ -920,6 +931,8 @@ void RigidBody2D::_bind_methods() {
ObjectTypeDB::bind_method(_MD("set_applied_torque","torque"),&RigidBody2D::set_applied_torque);
ObjectTypeDB::bind_method(_MD("get_applied_torque"),&RigidBody2D::get_applied_torque);
+ ObjectTypeDB::bind_method(_MD("add_force","offset","force"),&RigidBody2D::add_force);
+
ObjectTypeDB::bind_method(_MD("set_sleeping","sleeping"),&RigidBody2D::set_sleeping);
ObjectTypeDB::bind_method(_MD("is_sleeping"),&RigidBody2D::is_sleeping);
diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h
index 31dbfbcc6f..5af65bff33 100644
--- a/scene/2d/physics_body_2d.h
+++ b/scene/2d/physics_body_2d.h
@@ -217,7 +217,8 @@ public:
void set_mass(real_t p_mass);
real_t get_mass() const;
- real_t get_inertia() const; // read-only: auto-computed from mass & shapes.
+ void set_inertia(real_t p_inertia);
+ real_t get_inertia() const;
void set_weight(real_t p_weight);
real_t get_weight() const;
@@ -271,6 +272,8 @@ public:
void set_applied_torque(const float p_torque);
float get_applied_torque() const;
+ void add_force(const Vector2& p_offset, const Vector2& p_force);
+
Array get_colliding_bodies() const; //function for script