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( btTypedConstraint.btConstraintParams num, double value, int axis = -1 )
		{
			if( ( axis == -1 ) || ( axis == 5 ) )
			{
				switch( num )
				{
					case btConstraintParams.BT_CONSTRAINT_STOP_ERP:
						m_stopERP = value;
						m_flags |= btHingeFlags.BT_HINGE_FLAGS_ERP_STOP;
						break;
					case btConstraintParams.BT_CONSTRAINT_STOP_CFM:
						m_stopCFM = value;
						m_flags |= btHingeFlags.BT_HINGE_FLAGS_CFM_STOP;
						break;
					case btConstraintParams.BT_CONSTRAINT_CFM:
						m_normalCFM = value;
						m_flags |= btHingeFlags.BT_HINGE_FLAGS_CFM_NORM;
						break;
					case btConstraintParams.BT_CONSTRAINT_ERP:
						m_normalERP = value;
						m_flags |= btHingeFlags.BT_HINGE_FLAGS_ERP_NORM;
						break;
					default:
						btAssertConstrParams( false );
						break;
				}
			}
			else
			{
				btAssertConstrParams( false );
			}
		}
Esempio n. 2
0
		void Init()
		{
			m_angularOnly = ( false );
			m_enableAngularMotor = ( false );
			//m_useSolveConstraintObsolete = ( false/*HINGE_USE_OBSOLETE_SOLVER*/ );
			//m_useOffsetForConstraintFrame = ( true/*HINGE_USE_FRAME_OFFSET*/ );
			m_flags = ( 0 );
			m_normalCFM = ( 0 );
			m_normalERP = ( 0 );
			m_stopCFM = ( 0 );
			m_stopERP = ( 0 );
#if !_BT_USE_CENTER_LIMIT_
			//start with free
			m_lowerLimit = (double)( 1.0f );
			m_upperLimit = (double)( -1.0f );
			m_biasFactor = 0.3f;
			m_relaxationFactor = 1.0f;
			m_limitSoftness = 0.9f;
			m_solveLimit = false;
#endif

		}