Merge pull request #23668 from sdfgeoff/fix_angular_constraints
Exposing more of bullets 6DOF spring constraints
This commit is contained in:
commit
5075e372f3
|
@ -135,6 +135,15 @@ void Generic6DOFJointBullet::set_param(Vector3::Axis p_axis, PhysicsServer::G6DO
|
|||
case PhysicsServer::G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT:
|
||||
sixDOFConstraint->getTranslationalLimitMotor()->m_maxMotorForce.m_floats[p_axis] = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_DAMPING:
|
||||
sixDOFConstraint->getTranslationalLimitMotor()->m_springDamping.m_floats[p_axis] = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_STIFFNESS:
|
||||
sixDOFConstraint->getTranslationalLimitMotor()->m_springStiffness.m_floats[p_axis] = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_EQUILIBRIUM_POINT:
|
||||
sixDOFConstraint->getTranslationalLimitMotor()->m_equilibriumPoint.m_floats[p_axis] = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_LOWER_LIMIT:
|
||||
limits_lower[1][p_axis] = p_value;
|
||||
set_flag(p_axis, PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT, flags[p_axis][PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT]); // Reload bullet parameter
|
||||
|
@ -143,6 +152,9 @@ void Generic6DOFJointBullet::set_param(Vector3::Axis p_axis, PhysicsServer::G6DO
|
|||
limits_upper[1][p_axis] = p_value;
|
||||
set_flag(p_axis, PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT, flags[p_axis][PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT]); // Reload bullet parameter
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_RESTITUTION:
|
||||
sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_bounce = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_ERP:
|
||||
sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_stopERP = p_value;
|
||||
break;
|
||||
|
@ -152,6 +164,15 @@ void Generic6DOFJointBullet::set_param(Vector3::Axis p_axis, PhysicsServer::G6DO
|
|||
case PhysicsServer::G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT:
|
||||
sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_maxMotorForce = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_STIFFNESS:
|
||||
sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_springStiffness = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_DAMPING:
|
||||
sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_springDamping = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT:
|
||||
sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_equilibriumPoint = p_value;
|
||||
break;
|
||||
default:
|
||||
ERR_EXPLAIN("This parameter " + itos(p_param) + " is deprecated");
|
||||
WARN_DEPRECATED
|
||||
|
@ -170,6 +191,12 @@ real_t Generic6DOFJointBullet::get_param(Vector3::Axis p_axis, PhysicsServer::G6
|
|||
return sixDOFConstraint->getTranslationalLimitMotor()->m_targetVelocity.m_floats[p_axis];
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT:
|
||||
return sixDOFConstraint->getTranslationalLimitMotor()->m_maxMotorForce.m_floats[p_axis];
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_DAMPING:
|
||||
return sixDOFConstraint->getTranslationalLimitMotor()->m_springDamping.m_floats[p_axis];
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_STIFFNESS:
|
||||
return sixDOFConstraint->getTranslationalLimitMotor()->m_springStiffness.m_floats[p_axis];
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_EQUILIBRIUM_POINT:
|
||||
return sixDOFConstraint->getTranslationalLimitMotor()->m_equilibriumPoint.m_floats[p_axis];
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_LOWER_LIMIT:
|
||||
return limits_lower[1][p_axis];
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_UPPER_LIMIT:
|
||||
|
@ -182,6 +209,12 @@ real_t Generic6DOFJointBullet::get_param(Vector3::Axis p_axis, PhysicsServer::G6
|
|||
return sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_targetVelocity;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT:
|
||||
return sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_maxMotorForce;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_STIFFNESS:
|
||||
return sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_springStiffness;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_DAMPING:
|
||||
return sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_springDamping;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT:
|
||||
return sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_equilibriumPoint;
|
||||
default:
|
||||
ERR_EXPLAIN("This parameter " + itos(p_param) + " is deprecated");
|
||||
WARN_DEPRECATED;
|
||||
|
@ -215,6 +248,12 @@ void Generic6DOFJointBullet::set_flag(Vector3::Axis p_axis, PhysicsServer::G6DOF
|
|||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_MOTOR:
|
||||
sixDOFConstraint->getTranslationalLimitMotor()->m_enableMotor[p_axis] = flags[p_axis][p_flag];
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_SPRING:
|
||||
sixDOFConstraint->getTranslationalLimitMotor()->m_enableSpring[p_axis] = p_value;
|
||||
break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING:
|
||||
sixDOFConstraint->getRotationalLimitMotor(p_axis)->m_enableSpring = p_value;
|
||||
break;
|
||||
default:
|
||||
ERR_EXPLAIN("This flag " + itos(p_flag) + " is deprecated");
|
||||
WARN_DEPRECATED
|
||||
|
@ -224,6 +263,5 @@ void Generic6DOFJointBullet::set_flag(Vector3::Axis p_axis, PhysicsServer::G6DOF
|
|||
|
||||
bool Generic6DOFJointBullet::get_flag(Vector3::Axis p_axis, PhysicsServer::G6DOFJointAxisFlag p_flag) const {
|
||||
ERR_FAIL_INDEX_V(p_axis, 3, false);
|
||||
|
||||
return flags[p_axis][p_flag];
|
||||
}
|
||||
|
|
|
@ -716,6 +716,11 @@ void Generic6DOFJoint::_bind_methods() {
|
|||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_motor_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_LINEAR_MOTOR);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_motor_x/target_velocity"), "set_param_x", "get_param_x", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_motor_x/force_limit"), "set_param_x", "get_param_x", PARAM_LINEAR_MOTOR_FORCE_LIMIT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_spring_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_LINEAR_SPRING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_x/stiffness"), "set_param_x", "get_param_x", PARAM_LINEAR_SPRING_STIFFNESS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_x/damping"), "set_param_x", "get_param_x", PARAM_LINEAR_SPRING_DAMPING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_x/equilibrium_point"), "set_param_x", "get_param_x", PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT);
|
||||
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_limit_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_ANGULAR_LIMIT);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_limit_x/upper_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_hi_limit_x", "_get_angular_hi_limit_x");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_limit_x/lower_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_lo_limit_x", "_get_angular_lo_limit_x");
|
||||
|
@ -727,6 +732,10 @@ void Generic6DOFJoint::_bind_methods() {
|
|||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_motor_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_MOTOR);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_motor_x/target_velocity"), "set_param_x", "get_param_x", PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_motor_x/force_limit"), "set_param_x", "get_param_x", PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_spring_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_ANGULAR_SPRING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_x/stiffness"), "set_param_x", "get_param_x", PARAM_ANGULAR_SPRING_STIFFNESS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_x/damping"), "set_param_x", "get_param_x", PARAM_ANGULAR_SPRING_DAMPING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_x/equilibrium_point"), "set_param_x", "get_param_x", PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT);
|
||||
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_limit_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_LINEAR_LIMIT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_limit_y/upper_distance"), "set_param_y", "get_param_y", PARAM_LINEAR_UPPER_LIMIT);
|
||||
|
@ -737,6 +746,10 @@ void Generic6DOFJoint::_bind_methods() {
|
|||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_motor_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_LINEAR_MOTOR);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_motor_y/target_velocity"), "set_param_y", "get_param_y", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_motor_y/force_limit"), "set_param_y", "get_param_y", PARAM_LINEAR_MOTOR_FORCE_LIMIT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_spring_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_LINEAR_SPRING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_y/stiffness"), "set_param_y", "get_param_y", PARAM_LINEAR_SPRING_STIFFNESS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_y/damping"), "set_param_y", "get_param_y", PARAM_LINEAR_SPRING_DAMPING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_y/equilibrium_point"), "set_param_y", "get_param_y", PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_limit_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_ANGULAR_LIMIT);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_limit_y/upper_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_hi_limit_y", "_get_angular_hi_limit_y");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_limit_y/lower_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_lo_limit_y", "_get_angular_lo_limit_y");
|
||||
|
@ -748,6 +761,10 @@ void Generic6DOFJoint::_bind_methods() {
|
|||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_motor_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_MOTOR);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_motor_y/target_velocity"), "set_param_y", "get_param_y", PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_motor_y/force_limit"), "set_param_y", "get_param_y", PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_spring_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_ANGULAR_SPRING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_y/stiffness"), "set_param_y", "get_param_y", PARAM_ANGULAR_SPRING_STIFFNESS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_y/damping"), "set_param_y", "get_param_y", PARAM_ANGULAR_SPRING_DAMPING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_y/equilibrium_point"), "set_param_y", "get_param_y", PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT);
|
||||
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_limit_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_LINEAR_LIMIT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_limit_z/upper_distance"), "set_param_z", "get_param_z", PARAM_LINEAR_UPPER_LIMIT);
|
||||
|
@ -758,6 +775,11 @@ void Generic6DOFJoint::_bind_methods() {
|
|||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_motor_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_LINEAR_MOTOR);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_motor_z/target_velocity"), "set_param_z", "get_param_z", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_motor_z/force_limit"), "set_param_z", "get_param_z", PARAM_LINEAR_MOTOR_FORCE_LIMIT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_spring_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_LINEAR_SPRING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_spring_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_LINEAR_SPRING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_z/stiffness"), "set_param_z", "get_param_z", PARAM_LINEAR_SPRING_STIFFNESS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_z/damping"), "set_param_z", "get_param_z", PARAM_LINEAR_SPRING_DAMPING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_spring_z/equilibrium_point"), "set_param_z", "get_param_z", PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_limit_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_ANGULAR_LIMIT);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_limit_z/upper_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_hi_limit_z", "_get_angular_hi_limit_z");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_limit_z/lower_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_lo_limit_z", "_get_angular_lo_limit_z");
|
||||
|
@ -769,6 +791,10 @@ void Generic6DOFJoint::_bind_methods() {
|
|||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_motor_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_MOTOR);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_motor_z/target_velocity"), "set_param_z", "get_param_z", PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_motor_z/force_limit"), "set_param_z", "get_param_z", PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_spring_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_ANGULAR_SPRING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_z/stiffness"), "set_param_z", "get_param_z", PARAM_ANGULAR_SPRING_STIFFNESS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_z/damping"), "set_param_z", "get_param_z", PARAM_ANGULAR_SPRING_DAMPING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_z/equilibrium_point"), "set_param_z", "get_param_z", PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT);
|
||||
|
||||
BIND_ENUM_CONSTANT(PARAM_LINEAR_LOWER_LIMIT);
|
||||
BIND_ENUM_CONSTANT(PARAM_LINEAR_UPPER_LIMIT);
|
||||
|
@ -790,6 +816,8 @@ void Generic6DOFJoint::_bind_methods() {
|
|||
|
||||
BIND_ENUM_CONSTANT(FLAG_ENABLE_LINEAR_LIMIT);
|
||||
BIND_ENUM_CONSTANT(FLAG_ENABLE_ANGULAR_LIMIT);
|
||||
BIND_ENUM_CONSTANT(FLAG_ENABLE_LINEAR_SPRING);
|
||||
BIND_ENUM_CONSTANT(FLAG_ENABLE_ANGULAR_SPRING);
|
||||
BIND_ENUM_CONSTANT(FLAG_ENABLE_MOTOR);
|
||||
BIND_ENUM_CONSTANT(FLAG_ENABLE_LINEAR_MOTOR);
|
||||
BIND_ENUM_CONSTANT(FLAG_MAX);
|
||||
|
@ -923,6 +951,9 @@ Generic6DOFJoint::Generic6DOFJoint() {
|
|||
set_param_x(PARAM_LINEAR_DAMPING, 1.0);
|
||||
set_param_x(PARAM_LINEAR_MOTOR_TARGET_VELOCITY, 0);
|
||||
set_param_x(PARAM_LINEAR_MOTOR_FORCE_LIMIT, 0);
|
||||
set_param_x(PARAM_LINEAR_SPRING_STIFFNESS, 0.01);
|
||||
set_param_x(PARAM_LINEAR_SPRING_DAMPING, 0.01);
|
||||
set_param_x(PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT, 0.0);
|
||||
set_param_x(PARAM_ANGULAR_LOWER_LIMIT, 0);
|
||||
set_param_x(PARAM_ANGULAR_UPPER_LIMIT, 0);
|
||||
set_param_x(PARAM_ANGULAR_LIMIT_SOFTNESS, 0.5f);
|
||||
|
@ -932,9 +963,14 @@ Generic6DOFJoint::Generic6DOFJoint() {
|
|||
set_param_x(PARAM_ANGULAR_ERP, 0.5);
|
||||
set_param_x(PARAM_ANGULAR_MOTOR_TARGET_VELOCITY, 0);
|
||||
set_param_x(PARAM_ANGULAR_MOTOR_FORCE_LIMIT, 300);
|
||||
set_param_x(PARAM_ANGULAR_SPRING_STIFFNESS, 0);
|
||||
set_param_x(PARAM_ANGULAR_SPRING_DAMPING, 0);
|
||||
set_param_x(PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT, 0);
|
||||
|
||||
set_flag_x(FLAG_ENABLE_ANGULAR_LIMIT, true);
|
||||
set_flag_x(FLAG_ENABLE_LINEAR_LIMIT, true);
|
||||
set_flag_x(FLAG_ENABLE_ANGULAR_SPRING, false);
|
||||
set_flag_x(FLAG_ENABLE_LINEAR_SPRING, false);
|
||||
set_flag_x(FLAG_ENABLE_MOTOR, false);
|
||||
set_flag_x(FLAG_ENABLE_LINEAR_MOTOR, false);
|
||||
|
||||
|
@ -945,6 +981,9 @@ Generic6DOFJoint::Generic6DOFJoint() {
|
|||
set_param_y(PARAM_LINEAR_DAMPING, 1.0);
|
||||
set_param_y(PARAM_LINEAR_MOTOR_TARGET_VELOCITY, 0);
|
||||
set_param_y(PARAM_LINEAR_MOTOR_FORCE_LIMIT, 0);
|
||||
set_param_y(PARAM_LINEAR_SPRING_STIFFNESS, 0.01);
|
||||
set_param_y(PARAM_LINEAR_SPRING_DAMPING, 0.01);
|
||||
set_param_y(PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT, 0.0);
|
||||
set_param_y(PARAM_ANGULAR_LOWER_LIMIT, 0);
|
||||
set_param_y(PARAM_ANGULAR_UPPER_LIMIT, 0);
|
||||
set_param_y(PARAM_ANGULAR_LIMIT_SOFTNESS, 0.5f);
|
||||
|
@ -954,9 +993,14 @@ Generic6DOFJoint::Generic6DOFJoint() {
|
|||
set_param_y(PARAM_ANGULAR_ERP, 0.5);
|
||||
set_param_y(PARAM_ANGULAR_MOTOR_TARGET_VELOCITY, 0);
|
||||
set_param_y(PARAM_ANGULAR_MOTOR_FORCE_LIMIT, 300);
|
||||
set_param_y(PARAM_ANGULAR_SPRING_STIFFNESS, 0);
|
||||
set_param_y(PARAM_ANGULAR_SPRING_DAMPING, 0);
|
||||
set_param_y(PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT, 0);
|
||||
|
||||
set_flag_y(FLAG_ENABLE_ANGULAR_LIMIT, true);
|
||||
set_flag_y(FLAG_ENABLE_LINEAR_LIMIT, true);
|
||||
set_flag_y(FLAG_ENABLE_ANGULAR_SPRING, false);
|
||||
set_flag_y(FLAG_ENABLE_LINEAR_SPRING, false);
|
||||
set_flag_y(FLAG_ENABLE_MOTOR, false);
|
||||
set_flag_y(FLAG_ENABLE_LINEAR_MOTOR, false);
|
||||
|
||||
|
@ -967,6 +1011,9 @@ Generic6DOFJoint::Generic6DOFJoint() {
|
|||
set_param_z(PARAM_LINEAR_DAMPING, 1.0);
|
||||
set_param_z(PARAM_LINEAR_MOTOR_TARGET_VELOCITY, 0);
|
||||
set_param_z(PARAM_LINEAR_MOTOR_FORCE_LIMIT, 0);
|
||||
set_param_z(PARAM_LINEAR_SPRING_STIFFNESS, 0.01);
|
||||
set_param_z(PARAM_LINEAR_SPRING_DAMPING, 0.01);
|
||||
set_param_z(PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT, 0.0);
|
||||
set_param_z(PARAM_ANGULAR_LOWER_LIMIT, 0);
|
||||
set_param_z(PARAM_ANGULAR_UPPER_LIMIT, 0);
|
||||
set_param_z(PARAM_ANGULAR_LIMIT_SOFTNESS, 0.5f);
|
||||
|
@ -976,9 +1023,14 @@ Generic6DOFJoint::Generic6DOFJoint() {
|
|||
set_param_z(PARAM_ANGULAR_ERP, 0.5);
|
||||
set_param_z(PARAM_ANGULAR_MOTOR_TARGET_VELOCITY, 0);
|
||||
set_param_z(PARAM_ANGULAR_MOTOR_FORCE_LIMIT, 300);
|
||||
set_param_z(PARAM_ANGULAR_SPRING_STIFFNESS, 0);
|
||||
set_param_z(PARAM_ANGULAR_SPRING_DAMPING, 0);
|
||||
set_param_z(PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT, 0);
|
||||
|
||||
set_flag_z(FLAG_ENABLE_ANGULAR_LIMIT, true);
|
||||
set_flag_z(FLAG_ENABLE_LINEAR_LIMIT, true);
|
||||
set_flag_z(FLAG_ENABLE_ANGULAR_SPRING, false);
|
||||
set_flag_z(FLAG_ENABLE_LINEAR_SPRING, false);
|
||||
set_flag_z(FLAG_ENABLE_MOTOR, false);
|
||||
set_flag_z(FLAG_ENABLE_LINEAR_MOTOR, false);
|
||||
}
|
||||
|
|
|
@ -251,6 +251,9 @@ public:
|
|||
PARAM_LINEAR_DAMPING = PhysicsServer::G6DOF_JOINT_LINEAR_DAMPING,
|
||||
PARAM_LINEAR_MOTOR_TARGET_VELOCITY = PhysicsServer::G6DOF_JOINT_LINEAR_MOTOR_TARGET_VELOCITY,
|
||||
PARAM_LINEAR_MOTOR_FORCE_LIMIT = PhysicsServer::G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT,
|
||||
PARAM_LINEAR_SPRING_STIFFNESS = PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_STIFFNESS,
|
||||
PARAM_LINEAR_SPRING_DAMPING = PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_DAMPING,
|
||||
PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT = PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_EQUILIBRIUM_POINT,
|
||||
PARAM_ANGULAR_LOWER_LIMIT = PhysicsServer::G6DOF_JOINT_ANGULAR_LOWER_LIMIT,
|
||||
PARAM_ANGULAR_UPPER_LIMIT = PhysicsServer::G6DOF_JOINT_ANGULAR_UPPER_LIMIT,
|
||||
PARAM_ANGULAR_LIMIT_SOFTNESS = PhysicsServer::G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS,
|
||||
|
@ -260,12 +263,17 @@ public:
|
|||
PARAM_ANGULAR_ERP = PhysicsServer::G6DOF_JOINT_ANGULAR_ERP,
|
||||
PARAM_ANGULAR_MOTOR_TARGET_VELOCITY = PhysicsServer::G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY,
|
||||
PARAM_ANGULAR_MOTOR_FORCE_LIMIT = PhysicsServer::G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT,
|
||||
PARAM_ANGULAR_SPRING_STIFFNESS = PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_STIFFNESS,
|
||||
PARAM_ANGULAR_SPRING_DAMPING = PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_DAMPING,
|
||||
PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT = PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT,
|
||||
PARAM_MAX = PhysicsServer::G6DOF_JOINT_MAX,
|
||||
};
|
||||
|
||||
enum Flag {
|
||||
FLAG_ENABLE_LINEAR_LIMIT = PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT,
|
||||
FLAG_ENABLE_ANGULAR_LIMIT = PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT,
|
||||
FLAG_ENABLE_LINEAR_SPRING = PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_SPRING,
|
||||
FLAG_ENABLE_ANGULAR_SPRING = PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING,
|
||||
FLAG_ENABLE_MOTOR = PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_MOTOR,
|
||||
FLAG_ENABLE_LINEAR_MOTOR = PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_MOTOR,
|
||||
FLAG_MAX = PhysicsServer::G6DOF_JOINT_FLAG_MAX
|
||||
|
|
|
@ -503,6 +503,24 @@ void Generic6DOFJointSW::set_param(Vector3::Axis p_axis, PhysicsServer::G6DOFJoi
|
|||
case PhysicsServer::G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_STIFFNESS: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_DAMPING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_EQUILIBRIUM_POINT: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_STIFFNESS: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_DAMPING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
|
@ -585,6 +603,24 @@ real_t Generic6DOFJointSW::get_param(Vector3::Axis p_axis, PhysicsServer::G6DOFJ
|
|||
case PhysicsServer::G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_STIFFNESS: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_DAMPING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_LINEAR_SPRING_EQUILIBRIUM_POINT: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_STIFFNESS: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_DAMPING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
}
|
||||
return 0;
|
||||
|
@ -610,6 +646,12 @@ void Generic6DOFJointSW::set_flag(Vector3::Axis p_axis, PhysicsServer::G6DOFJoin
|
|||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_MOTOR: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_SPRING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_MAX: break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
|
@ -632,6 +674,12 @@ bool Generic6DOFJointSW::get_flag(Vector3::Axis p_axis, PhysicsServer::G6DOFJoin
|
|||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_MOTOR: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_LINEAR_SPRING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_MAX: break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
|
|
|
@ -697,6 +697,9 @@ public:
|
|||
G6DOF_JOINT_LINEAR_DAMPING,
|
||||
G6DOF_JOINT_LINEAR_MOTOR_TARGET_VELOCITY,
|
||||
G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT,
|
||||
G6DOF_JOINT_LINEAR_SPRING_STIFFNESS,
|
||||
G6DOF_JOINT_LINEAR_SPRING_DAMPING,
|
||||
G6DOF_JOINT_LINEAR_SPRING_EQUILIBRIUM_POINT,
|
||||
G6DOF_JOINT_ANGULAR_LOWER_LIMIT,
|
||||
G6DOF_JOINT_ANGULAR_UPPER_LIMIT,
|
||||
G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS,
|
||||
|
@ -706,6 +709,9 @@ public:
|
|||
G6DOF_JOINT_ANGULAR_ERP,
|
||||
G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY,
|
||||
G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT,
|
||||
G6DOF_JOINT_ANGULAR_SPRING_STIFFNESS,
|
||||
G6DOF_JOINT_ANGULAR_SPRING_DAMPING,
|
||||
G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT,
|
||||
G6DOF_JOINT_MAX
|
||||
};
|
||||
|
||||
|
@ -713,6 +719,8 @@ public:
|
|||
|
||||
G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT,
|
||||
G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT,
|
||||
G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING,
|
||||
G6DOF_JOINT_FLAG_ENABLE_LINEAR_SPRING,
|
||||
G6DOF_JOINT_FLAG_ENABLE_MOTOR,
|
||||
G6DOF_JOINT_FLAG_ENABLE_LINEAR_MOTOR,
|
||||
G6DOF_JOINT_FLAG_MAX
|
||||
|
|
Loading…
Reference in New Issue