From 53acd891dcc036e8bcda152473c129d2c7d18c3a Mon Sep 17 00:00:00 2001 From: jingqi Date: Fri, 6 Aug 2021 12:13:11 +0800 Subject: [PATCH 1/3] Fix typo --- src/body/RigidBody.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/body/RigidBody.cpp b/src/body/RigidBody.cpp index 290788c9..41031491 100644 --- a/src/body/RigidBody.cpp +++ b/src/body/RigidBody.cpp @@ -330,7 +330,7 @@ void RigidBody::setLocalCenterOfMass(const Vector3& centerOfMass) { mWorld.mRigidBodyComponents.setCenterOfMassWorld(mEntity, mWorld.mTransformComponents.getTransform(mEntity) * centerOfMass); // Update the linear velocity of the center of mass - Vector3 linearVelocity = mWorld.mRigidBodyComponents.getAngularVelocity(mEntity); + Vector3 linearVelocity = mWorld.mRigidBodyComponents.getLinearVelocity(mEntity); const Vector3& angularVelocity = mWorld.mRigidBodyComponents.getAngularVelocity(mEntity); const Vector3& centerOfMassWorld = mWorld.mRigidBodyComponents.getCenterOfMassWorld(mEntity); linearVelocity += angularVelocity.cross(centerOfMassWorld - oldCenterOfMass); @@ -367,7 +367,7 @@ void RigidBody::updateLocalCenterOfMassFromColliders() { mWorld.mRigidBodyComponents.setCenterOfMassWorld(mEntity, centerOfMassWorld); // Update the linear velocity of the center of mass - Vector3 linearVelocity = mWorld.mRigidBodyComponents.getAngularVelocity(mEntity); + Vector3 linearVelocity = mWorld.mRigidBodyComponents.getLinearVelocity(mEntity); const Vector3& angularVelocity = mWorld.mRigidBodyComponents.getAngularVelocity(mEntity); linearVelocity += angularVelocity.cross(centerOfMassWorld - oldCenterOfMassWorld); mWorld.mRigidBodyComponents.setLinearVelocity(mEntity, linearVelocity); @@ -553,7 +553,7 @@ void RigidBody::updateMassPropertiesFromColliders() { if (type == BodyType::DYNAMIC) { // Update the linear velocity of the center of mass - Vector3 linearVelocity = mWorld.mRigidBodyComponents.getAngularVelocity(mEntity); + Vector3 linearVelocity = mWorld.mRigidBodyComponents.getLinearVelocity(mEntity); const Vector3& angularVelocity = mWorld.mRigidBodyComponents.getAngularVelocity(mEntity); linearVelocity += angularVelocity.cross(centerOfMassWorld - oldCenterOfMassWorld); mWorld.mRigidBodyComponents.setLinearVelocity(mEntity, linearVelocity); From d5c1578f536ef4954bb79234450d3552b85702ff Mon Sep 17 00:00:00 2001 From: jingqi Date: Fri, 6 Aug 2021 12:19:46 +0800 Subject: [PATCH 2/3] Fix wrong operator in ContactSolverSystem::initializeForIsland() --- src/systems/ContactSolverSystem.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/systems/ContactSolverSystem.cpp b/src/systems/ContactSolverSystem.cpp index 85b9b811..842ece98 100644 --- a/src/systems/ContactSolverSystem.cpp +++ b/src/systems/ContactSolverSystem.cpp @@ -205,13 +205,13 @@ void ContactSolverSystem::initializeForIsland(uint islandIndex) { mContactConstraints[mNbContactManifolds].frictionPointBody2.z += p2.z; // Compute the velocity difference - //deltaV = v2 + w2.cross(mContactPoints[mNbContactPoints].r2) - v1 - w1.cross(mContactPoints[mNbContactPoints].r1); + // deltaV = v2 + w2.cross(mContactPoints[mNbContactPoints].r2) - v1 - w1.cross(mContactPoints[mNbContactPoints].r1); Vector3 deltaV(v2.x + w2.y * mContactPoints[mNbContactPoints].r2.z - w2.z * mContactPoints[mNbContactPoints].r2.y - - v1.x - w1.y * mContactPoints[mNbContactPoints].r1.z - w1.z * mContactPoints[mNbContactPoints].r1.y, + - v1.x - w1.y * mContactPoints[mNbContactPoints].r1.z + w1.z * mContactPoints[mNbContactPoints].r1.y, v2.y + w2.z * mContactPoints[mNbContactPoints].r2.x - w2.x * mContactPoints[mNbContactPoints].r2.z - - v1.y - w1.z * mContactPoints[mNbContactPoints].r1.x - w1.x * mContactPoints[mNbContactPoints].r1.z, + - v1.y - w1.z * mContactPoints[mNbContactPoints].r1.x + w1.x * mContactPoints[mNbContactPoints].r1.z, v2.z + w2.x * mContactPoints[mNbContactPoints].r2.y - w2.y * mContactPoints[mNbContactPoints].r2.x - - v1.z - w1.x * mContactPoints[mNbContactPoints].r1.y - w1.y * mContactPoints[mNbContactPoints].r1.x); + - v1.z - w1.x * mContactPoints[mNbContactPoints].r1.y + w1.y * mContactPoints[mNbContactPoints].r1.x); // r1CrossN = mContactPoints[mNbContactPoints].r1.cross(mContactPoints[mNbContactPoints].normal); Vector3 r1CrossN(mContactPoints[mNbContactPoints].r1.y * mContactPoints[mNbContactPoints].normal.z - From 11efc8973d3f859c1222b6cdedb47844187169e7 Mon Sep 17 00:00:00 2001 From: jingqi Date: Fri, 6 Aug 2021 12:52:06 +0800 Subject: [PATCH 3/3] Fix wrong operator in ContactSolverSystem::initializeForIsland() --- src/systems/ContactSolverSystem.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/systems/ContactSolverSystem.cpp b/src/systems/ContactSolverSystem.cpp index 842ece98..e644b886 100644 --- a/src/systems/ContactSolverSystem.cpp +++ b/src/systems/ContactSolverSystem.cpp @@ -280,15 +280,15 @@ void ContactSolverSystem::initializeForIsland(uint islandIndex) { // v1 - w1.cross(mContactConstraints[mNbContactManifolds].r1Friction); Vector3 deltaVFrictionPoint(v2.x + w2.y * mContactConstraints[mNbContactManifolds].r2Friction.z - w2.z * mContactConstraints[mNbContactManifolds].r2Friction.y - - v1.x - w1.y * mContactConstraints[mNbContactManifolds].r1Friction.z - + v1.x - w1.y * mContactConstraints[mNbContactManifolds].r1Friction.z + w1.z * mContactConstraints[mNbContactManifolds].r1Friction.y, v2.y + w2.z * mContactConstraints[mNbContactManifolds].r2Friction.x - w2.x * mContactConstraints[mNbContactManifolds].r2Friction.z - - v1.y - w1.z * mContactConstraints[mNbContactManifolds].r1Friction.x - + v1.y - w1.z * mContactConstraints[mNbContactManifolds].r1Friction.x + w1.x * mContactConstraints[mNbContactManifolds].r1Friction.z, v2.z + w2.x * mContactConstraints[mNbContactManifolds].r2Friction.y - w2.y * mContactConstraints[mNbContactManifolds].r2Friction.x - - v1.z - w1.x * mContactConstraints[mNbContactManifolds].r1Friction.y - + v1.z - w1.x * mContactConstraints[mNbContactManifolds].r1Friction.y + w1.y * mContactConstraints[mNbContactManifolds].r1Friction.x); // Compute the friction vectors