Esempio n. 1
0
		///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). 
		///If no axis is provided, it uses the default axis for this constraint.
		public override void setParam( btConstraintParams num, double value, int axis )
		{
			switch( num )
			{
				case btConstraintParams.BT_CONSTRAINT_STOP_ERP:
					if( axis < 1 )
					{
						m_softnessLimLin = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_ERP_LIMLIN;
					}
					else if( axis < 3 )
					{
						m_softnessOrthoLin = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_ERP_ORTLIN;
					}
					else if( axis == 3 )
					{
						m_softnessLimAng = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_ERP_LIMANG;
					}
					else if( axis < 6 )
					{
						m_softnessOrthoAng = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_ERP_ORTANG;
					}
					else
					{
						btAssertConstrParams( false );
					}
					break;
				case btConstraintParams.BT_CONSTRAINT_CFM:
					if( axis < 1 )
					{
						m_cfmDirLin = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_CFM_DIRLIN;
					}
					else if( axis == 3 )
					{
						m_cfmDirAng = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_CFM_DIRANG;
					}
					else
					{
						btAssertConstrParams( false );
					}
					break;
				case btConstraintParams.BT_CONSTRAINT_STOP_CFM:
					if( axis < 1 )
					{
						m_cfmLimLin = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_CFM_LIMLIN;
					}
					else if( axis < 3 )
					{
						m_cfmOrthoLin = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_CFM_ORTLIN;
					}
					else if( axis == 3 )
					{
						m_cfmLimAng = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_CFM_LIMANG;
					}
					else if( axis < 6 )
					{
						m_cfmOrthoAng = value;
						m_flags |= btSliderFlags.BT_SLIDER_FLAGS_CFM_ORTANG;
					}
					else
					{
						btAssertConstrParams( false );
					}
					break;
			}
		}
Esempio n. 2
0
		internal void initParams()
		{
			m_lowerLinLimit = (double)( 1.0 );
			m_upperLinLimit = (double)( -1.0 );
			m_lowerAngLimit = btScalar.BT_ZERO;
			m_upperAngLimit = btScalar.BT_ZERO;
			m_softnessDirLin = SLIDER_CONSTRAINT_DEF_SOFTNESS;
			m_restitutionDirLin = SLIDER_CONSTRAINT_DEF_RESTITUTION;
			m_dampingDirLin = btScalar.BT_ZERO;
			m_cfmDirLin = SLIDER_CONSTRAINT_DEF_CFM;
			m_softnessDirAng = SLIDER_CONSTRAINT_DEF_SOFTNESS;
			m_restitutionDirAng = SLIDER_CONSTRAINT_DEF_RESTITUTION;
			m_dampingDirAng = btScalar.BT_ZERO;
			m_cfmDirAng = SLIDER_CONSTRAINT_DEF_CFM;
			m_softnessOrthoLin = SLIDER_CONSTRAINT_DEF_SOFTNESS;
			m_restitutionOrthoLin = SLIDER_CONSTRAINT_DEF_RESTITUTION;
			m_dampingOrthoLin = SLIDER_CONSTRAINT_DEF_DAMPING;
			m_cfmOrthoLin = SLIDER_CONSTRAINT_DEF_CFM;
			m_softnessOrthoAng = SLIDER_CONSTRAINT_DEF_SOFTNESS;
			m_restitutionOrthoAng = SLIDER_CONSTRAINT_DEF_RESTITUTION;
			m_dampingOrthoAng = SLIDER_CONSTRAINT_DEF_DAMPING;
			m_cfmOrthoAng = SLIDER_CONSTRAINT_DEF_CFM;
			m_softnessLimLin = SLIDER_CONSTRAINT_DEF_SOFTNESS;
			m_restitutionLimLin = SLIDER_CONSTRAINT_DEF_RESTITUTION;
			m_dampingLimLin = SLIDER_CONSTRAINT_DEF_DAMPING;
			m_cfmLimLin = SLIDER_CONSTRAINT_DEF_CFM;
			m_softnessLimAng = SLIDER_CONSTRAINT_DEF_SOFTNESS;
			m_restitutionLimAng = SLIDER_CONSTRAINT_DEF_RESTITUTION;
			m_dampingLimAng = SLIDER_CONSTRAINT_DEF_DAMPING;
			m_cfmLimAng = SLIDER_CONSTRAINT_DEF_CFM;

			m_poweredLinMotor = false;
			m_targetLinMotorVelocity = btScalar.BT_ZERO;
			m_maxLinMotorForce = btScalar.BT_ZERO;
			m_accumulatedLinMotorImpulse = (double)( 0.0 );

			m_poweredAngMotor = false;
			m_targetAngMotorVelocity = btScalar.BT_ZERO;
			m_maxAngMotorForce = btScalar.BT_ZERO;
			m_accumulatedAngMotorImpulse = (double)( 0.0 );

			m_flags = 0;
			m_flags = 0;

			m_useOffsetForConstraintFrame = true;// USE_OFFSET_FOR_CONSTANT_FRAME;

			calculateTransforms( ref m_rbA.m_worldTransform, ref m_rbB.m_worldTransform );
		}