Add Method get_inverse_inertia_tensor
This commit is contained in:
parent
173ebe4872
commit
a91103ac89
@ -100,6 +100,13 @@
|
|||||||
[b]Note:[/b] The result of this test is not immediate after moving objects. For performance, list of collisions is updated once per frame and before the physics step. Consider using signals instead.
|
[b]Note:[/b] The result of this test is not immediate after moving objects. For performance, list of collisions is updated once per frame and before the physics step. Consider using signals instead.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="get_inverse_inertia_tensor">
|
||||||
|
<return type="Basis">
|
||||||
|
</return>
|
||||||
|
<description>
|
||||||
|
Returns the inverse inertia tensor basis. This is used to calculate the angular acceleration resulting from a torque applied to the [RigidBody3D].
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="set_axis_lock">
|
<method name="set_axis_lock">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
</return>
|
</return>
|
||||||
|
@ -358,6 +358,7 @@ void RigidBody3D::_direct_state_changed(Object *p_state) {
|
|||||||
set_global_transform(state->get_transform());
|
set_global_transform(state->get_transform());
|
||||||
linear_velocity = state->get_linear_velocity();
|
linear_velocity = state->get_linear_velocity();
|
||||||
angular_velocity = state->get_angular_velocity();
|
angular_velocity = state->get_angular_velocity();
|
||||||
|
inverse_inertia_tensor = state->get_inverse_inertia_tensor();
|
||||||
if (sleeping != state->is_sleeping()) {
|
if (sleeping != state->is_sleeping()) {
|
||||||
sleeping = state->is_sleeping();
|
sleeping = state->is_sleeping();
|
||||||
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
|
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
|
||||||
@ -594,6 +595,10 @@ Vector3 RigidBody3D::get_angular_velocity() const {
|
|||||||
return angular_velocity;
|
return angular_velocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Basis RigidBody3D::get_inverse_inertia_tensor() {
|
||||||
|
return inverse_inertia_tensor;
|
||||||
|
}
|
||||||
|
|
||||||
void RigidBody3D::set_use_custom_integrator(bool p_enable) {
|
void RigidBody3D::set_use_custom_integrator(bool p_enable) {
|
||||||
if (custom_integrator == p_enable) {
|
if (custom_integrator == p_enable) {
|
||||||
return;
|
return;
|
||||||
@ -760,6 +765,8 @@ void RigidBody3D::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_angular_velocity", "angular_velocity"), &RigidBody3D::set_angular_velocity);
|
ClassDB::bind_method(D_METHOD("set_angular_velocity", "angular_velocity"), &RigidBody3D::set_angular_velocity);
|
||||||
ClassDB::bind_method(D_METHOD("get_angular_velocity"), &RigidBody3D::get_angular_velocity);
|
ClassDB::bind_method(D_METHOD("get_angular_velocity"), &RigidBody3D::get_angular_velocity);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_inverse_inertia_tensor"), &RigidBody3D::get_inverse_inertia_tensor);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_gravity_scale", "gravity_scale"), &RigidBody3D::set_gravity_scale);
|
ClassDB::bind_method(D_METHOD("set_gravity_scale", "gravity_scale"), &RigidBody3D::set_gravity_scale);
|
||||||
ClassDB::bind_method(D_METHOD("get_gravity_scale"), &RigidBody3D::get_gravity_scale);
|
ClassDB::bind_method(D_METHOD("get_gravity_scale"), &RigidBody3D::get_gravity_scale);
|
||||||
|
|
||||||
|
@ -123,6 +123,7 @@ protected:
|
|||||||
|
|
||||||
Vector3 linear_velocity;
|
Vector3 linear_velocity;
|
||||||
Vector3 angular_velocity;
|
Vector3 angular_velocity;
|
||||||
|
Basis inverse_inertia_tensor;
|
||||||
real_t gravity_scale;
|
real_t gravity_scale;
|
||||||
real_t linear_damp;
|
real_t linear_damp;
|
||||||
real_t angular_damp;
|
real_t angular_damp;
|
||||||
@ -201,6 +202,8 @@ public:
|
|||||||
void set_angular_velocity(const Vector3 &p_velocity);
|
void set_angular_velocity(const Vector3 &p_velocity);
|
||||||
Vector3 get_angular_velocity() const override;
|
Vector3 get_angular_velocity() const override;
|
||||||
|
|
||||||
|
Basis get_inverse_inertia_tensor();
|
||||||
|
|
||||||
void set_gravity_scale(real_t p_gravity_scale);
|
void set_gravity_scale(real_t p_gravity_scale);
|
||||||
real_t get_gravity_scale() const;
|
real_t get_gravity_scale() const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user