summaryrefslogtreecommitdiffstats
path: root/servers/physics/joints/hinge_joint_sw.cpp
diff options
context:
space:
mode:
authorm4nu3lf <m4nu3lf@gmail.com>2016-12-31 14:39:25 +0000
committerm4nu3lf <m4nu3lf@gmail.com>2017-01-09 00:13:54 +0000
commit2e38b32e0f261445c2d0b095c1822fbe6df16e25 (patch)
tree7add49833c34260d581424469818573abd44104a /servers/physics/joints/hinge_joint_sw.cpp
parentf2e99826c0b1e8227644bfab0795d858c504d279 (diff)
downloadredot-engine-2e38b32e0f261445c2d0b095c1822fbe6df16e25.tar.gz
Fixed inertia tensor computation and center of mass
Diffstat (limited to 'servers/physics/joints/hinge_joint_sw.cpp')
-rw-r--r--servers/physics/joints/hinge_joint_sw.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/servers/physics/joints/hinge_joint_sw.cpp b/servers/physics/joints/hinge_joint_sw.cpp
index f7e1df92b8..23e00a9e7f 100644
--- a/servers/physics/joints/hinge_joint_sw.cpp
+++ b/servers/physics/joints/hinge_joint_sw.cpp
@@ -173,10 +173,10 @@ bool HingeJointSW::setup(float p_step) {
for (int i=0;i<3;i++)
{
memnew_placement(&m_jac[i], JacobianEntrySW(
- A->get_transform().basis.transposed(),
- B->get_transform().basis.transposed(),
- pivotAInW - A->get_transform().origin,
- pivotBInW - B->get_transform().origin,
+ A->get_principal_inertia_axes().transposed(),
+ B->get_principal_inertia_axes().transposed(),
+ pivotAInW - A->get_transform().origin - A->get_center_of_mass(),
+ pivotBInW - B->get_transform().origin - B->get_center_of_mass(),
normal[i],
A->get_inv_inertia(),
A->get_inv_mass(),
@@ -200,20 +200,20 @@ bool HingeJointSW::setup(float p_step) {
Vector3 hingeAxisWorld = A->get_transform().basis.xform( m_rbAFrame.basis.get_axis(2) );
memnew_placement(&m_jacAng[0], JacobianEntrySW(jointAxis0,
- A->get_transform().basis.transposed(),
- B->get_transform().basis.transposed(),
+ A->get_principal_inertia_axes().transposed(),
+ B->get_principal_inertia_axes().transposed(),
A->get_inv_inertia(),
B->get_inv_inertia()));
memnew_placement(&m_jacAng[1], JacobianEntrySW(jointAxis1,
- A->get_transform().basis.transposed(),
- B->get_transform().basis.transposed(),
+ A->get_principal_inertia_axes().transposed(),
+ B->get_principal_inertia_axes().transposed(),
A->get_inv_inertia(),
B->get_inv_inertia()));
memnew_placement(&m_jacAng[2], JacobianEntrySW(hingeAxisWorld,
- A->get_transform().basis.transposed(),
- B->get_transform().basis.transposed(),
+ A->get_principal_inertia_axes().transposed(),
+ B->get_principal_inertia_axes().transposed(),
A->get_inv_inertia(),
B->get_inv_inertia()));