///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; } }
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 ); }