public override void GetInfo1(ConstraintInfo1 info) { info.m_numConstraintRows = 4; // Fixed 2 linear + 2 angular info.nub = 2; //prepare constraint CalculateTransforms(m_rbA.GetCenterOfMassTransform(), m_rbB.GetCenterOfMassTransform()); TestAngLimits(); TestLinLimits(); if (GetSolveLinLimit() || GetPoweredLinMotor()) { info.m_numConstraintRows++; // limit 3rd linear as well info.nub--; } //testAngLimits(); if (GetSolveAngLimit() || GetPoweredAngMotor()) { info.m_numConstraintRows++; // limit 3rd angular as well info.nub--; } #if DEBUG if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugConstraints) { PrintInfo1(BulletGlobals.g_streamWriter, this, info); } #endif }
public void GetInfo1NonVirtual(ConstraintInfo1 info) { //always add the 'limit' row, to avoid computation (data is not available yet) info.m_numConstraintRows = 6; // Fixed 3 linear + 2 angular info.nub = 0; if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugConstraints) { PrintInfo1(BulletGlobals.g_streamWriter, this, info); } }
public override void GetInfo1(ConstraintInfo1 info) { info.m_numConstraintRows = 5; // Fixed 3 linear + 2 angular info.nub = 1; //prepare constraint TestLimit(m_rbA.GetCenterOfMassTransform(), m_rbB.GetCenterOfMassTransform()); if (GetSolveLimit() || GetEnableAngularMotor()) { info.m_numConstraintRows++; // limit 3rd anguar as well info.nub--; } if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugConstraints) { PrintInfo1(BulletGlobals.g_streamWriter, this, info); } }
public virtual void GetInfo1(ConstraintInfo1 info) { }
public override void GetInfo1(ConstraintInfo1 info) { //prepare constraint CalculateTransforms(m_rbA.GetCenterOfMassTransform(), m_rbB.GetCenterOfMassTransform()); info.m_numConstraintRows = 0; info.nub = 6; int i; //test linear limits for (i = 0; i < 3; i++) { if (m_linearLimits.NeedApplyForce(i)) { info.m_numConstraintRows++; info.nub--; } } //test angular limits for (i = 0; i < 3; i++) { if (TestAngularLimitMotor(i)) { info.m_numConstraintRows++; info.nub--; } } }
public void GetInfo1NonVirtual(ConstraintInfo1 info) { info.m_numConstraintRows = 3; info.nub = 3; }
public override void GetInfo1(ConstraintInfo1 info) { GetInfo1NonVirtual(info); }
public override void GetInfo1(ConstraintInfo1 info) { if (m_useSolveConstraintObsolete) { info.m_numConstraintRows = 0; info.nub = 0; } else { info.m_numConstraintRows = 3; info.nub = 3; CalcAngleInfo2(m_rbA.GetCenterOfMassTransform(), m_rbB.GetCenterOfMassTransform(), m_rbA.GetInvInertiaTensorWorld(), m_rbB.GetInvInertiaTensorWorld()); if (m_solveSwingLimit) { info.m_numConstraintRows++; info.nub--; if ((m_swingSpan1 < m_fixThresh) && (m_swingSpan2 < m_fixThresh)) { info.m_numConstraintRows++; info.nub--; } } if (m_solveTwistLimit) { info.m_numConstraintRows++; info.nub--; } if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugConstraints) { PrintInfo1(BulletGlobals.g_streamWriter, this, info); } } }
public void GetInfo1NonVirtual(ConstraintInfo1 info) { //always reserve 6 rows: object transform is not available on SPU info.m_numConstraintRows = 6; info.nub = 0; }
public override void GetInfo1(ConstraintInfo1 info) { }
public void GetInfo1NonVirtual(ConstraintInfo1 info) { info.m_numConstraintRows = 6; // Fixed 2 linear + 2 angular + 1 limit (even if not used) info.nub = 0; }
public void GetInfo1NonVirtual(ConstraintInfo1 info) { //pre-allocate all 6 info.m_numConstraintRows = 6; info.nub = 0; }
public static void PrintInfo1(StreamWriter writer, TypedConstraint constraint, ConstraintInfo1 info) { if (writer != null) { writer.WriteLine("getInfo1 [{0}] [{1}] [{2}] [{3}]", constraint.m_userConstraintId, constraint.GetObjectType(), (string)constraint.GetRigidBodyA().GetUserPointer(), (string)constraint.GetRigidBodyB().GetUserPointer()); MathUtil.PrintMatrix(writer, "rBA cmot", constraint.GetRigidBodyA().GetCenterOfMassTransform()); MathUtil.PrintMatrix(writer, "rBB cmot", constraint.GetRigidBodyB().GetCenterOfMassTransform()); MathUtil.PrintMatrix(writer, "rBA inv tensor", constraint.GetRigidBodyA().GetInvInertiaTensorWorld()); MathUtil.PrintMatrix(writer, "rBB inv tensor", constraint.GetRigidBodyB().GetInvInertiaTensorWorld()); writer.WriteLine(String.Format("NumRows [{0}] Nub[{1}]", info.m_numConstraintRows, info.nub)); } }