コード例 #1
0
        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
        }
コード例 #2
0
        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 DEBUG
            if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugConstraints)
            {
                PrintInfo1(BulletGlobals.g_streamWriter, this, info);
            }
#endif
        }
コード例 #3
0
        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 DEBUG
            if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugConstraints)
            {
                PrintInfo1(BulletGlobals.g_streamWriter, this, info);
            }
#endif
        }
コード例 #4
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));
     }
 }
コード例 #5
0
 public virtual void GetInfo1(ConstraintInfo1 info)
 {
 }
コード例 #6
0
 public void GetInfo1NonVirtual(ConstraintInfo1 info)
 {
     info.m_numConstraintRows = 6;             // Fixed 2 linear + 2 angular + 1 limit (even if not used)
     info.nub = 0;
 }
コード例 #7
0
 public override void GetInfo1(ConstraintInfo1 info)
 {
 }
コード例 #8
0
 public void GetInfo1NonVirtual(ConstraintInfo1 info)
 {
     info.m_numConstraintRows = 3;
     info.nub = 3;
 }
コード例 #9
0
 public override void GetInfo1(ConstraintInfo1 info)
 {
     GetInfo1NonVirtual(info);
 }