Exemple #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
        }
 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 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);
            }
		}
Exemple #7
0
 public virtual void GetInfo1(ConstraintInfo1 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;
		}
Exemple #17
0
 public void GetInfo1NonVirtual(ConstraintInfo1 info)
 {
     info.m_numConstraintRows = 6;             // Fixed 2 linear + 2 angular + 1 limit (even if not used)
     info.nub = 0;
 }
 public override void GetInfo1(ConstraintInfo1 info)
 {
     GetInfo1NonVirtual(info);
 }
		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));
			}

		}
 public void GetInfo1NonVirtual(ConstraintInfo1 info)
 {
     info.m_numConstraintRows = 3;
     info.nub = 3;
 }
Exemple #21
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));
     }
 }
Exemple #22
0
 public override void GetInfo1(ConstraintInfo1 info)
 {
 }