mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 11:32:13 +00:00
Merge pull request #67749 from JonqsGames/clean_physical_bone_instancing
Test joint type on _set for PhysicalBone joints
This commit is contained in:
commit
b2a5b55533
@ -2226,21 +2226,22 @@ bool PhysicalBone3D::PinJointData::_set(const StringName &p_name, const Variant
|
||||
return true;
|
||||
}
|
||||
|
||||
bool is_valid_pin = j.is_valid() && PhysicsServer3D::get_singleton()->joint_get_type(j) == PhysicsServer3D::JOINT_TYPE_PIN;
|
||||
if ("joint_constraints/bias" == p_name) {
|
||||
bias = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_pin) {
|
||||
PhysicsServer3D::get_singleton()->pin_joint_set_param(j, PhysicsServer3D::PIN_JOINT_BIAS, bias);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/damping" == p_name) {
|
||||
damping = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_pin) {
|
||||
PhysicsServer3D::get_singleton()->pin_joint_set_param(j, PhysicsServer3D::PIN_JOINT_DAMPING, damping);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/impulse_clamp" == p_name) {
|
||||
impulse_clamp = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_pin) {
|
||||
PhysicsServer3D::get_singleton()->pin_joint_set_param(j, PhysicsServer3D::PIN_JOINT_IMPULSE_CLAMP, impulse_clamp);
|
||||
}
|
||||
|
||||
@ -2282,33 +2283,34 @@ bool PhysicalBone3D::ConeJointData::_set(const StringName &p_name, const Variant
|
||||
return true;
|
||||
}
|
||||
|
||||
bool is_valid_cone = j.is_valid() && PhysicsServer3D::get_singleton()->joint_get_type(j) == PhysicsServer3D::JOINT_TYPE_CONE_TWIST;
|
||||
if ("joint_constraints/swing_span" == p_name) {
|
||||
swing_span = Math::deg_to_rad(real_t(p_value));
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_cone) {
|
||||
PhysicsServer3D::get_singleton()->cone_twist_joint_set_param(j, PhysicsServer3D::CONE_TWIST_JOINT_SWING_SPAN, swing_span);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/twist_span" == p_name) {
|
||||
twist_span = Math::deg_to_rad(real_t(p_value));
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_cone) {
|
||||
PhysicsServer3D::get_singleton()->cone_twist_joint_set_param(j, PhysicsServer3D::CONE_TWIST_JOINT_TWIST_SPAN, twist_span);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/bias" == p_name) {
|
||||
bias = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_cone) {
|
||||
PhysicsServer3D::get_singleton()->cone_twist_joint_set_param(j, PhysicsServer3D::CONE_TWIST_JOINT_BIAS, bias);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/softness" == p_name) {
|
||||
softness = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_cone) {
|
||||
PhysicsServer3D::get_singleton()->cone_twist_joint_set_param(j, PhysicsServer3D::CONE_TWIST_JOINT_SOFTNESS, softness);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/relaxation" == p_name) {
|
||||
relaxation = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_cone) {
|
||||
PhysicsServer3D::get_singleton()->cone_twist_joint_set_param(j, PhysicsServer3D::CONE_TWIST_JOINT_RELAXATION, relaxation);
|
||||
}
|
||||
|
||||
@ -2356,39 +2358,40 @@ bool PhysicalBone3D::HingeJointData::_set(const StringName &p_name, const Varian
|
||||
return true;
|
||||
}
|
||||
|
||||
bool is_valid_hinge = j.is_valid() && PhysicsServer3D::get_singleton()->joint_get_type(j) == PhysicsServer3D::JOINT_TYPE_HINGE;
|
||||
if ("joint_constraints/angular_limit_enabled" == p_name) {
|
||||
angular_limit_enabled = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_hinge) {
|
||||
PhysicsServer3D::get_singleton()->hinge_joint_set_flag(j, PhysicsServer3D::HINGE_JOINT_FLAG_USE_LIMIT, angular_limit_enabled);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_upper" == p_name) {
|
||||
angular_limit_upper = Math::deg_to_rad(real_t(p_value));
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_hinge) {
|
||||
PhysicsServer3D::get_singleton()->hinge_joint_set_param(j, PhysicsServer3D::HINGE_JOINT_LIMIT_UPPER, angular_limit_upper);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_lower" == p_name) {
|
||||
angular_limit_lower = Math::deg_to_rad(real_t(p_value));
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_hinge) {
|
||||
PhysicsServer3D::get_singleton()->hinge_joint_set_param(j, PhysicsServer3D::HINGE_JOINT_LIMIT_LOWER, angular_limit_lower);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_bias" == p_name) {
|
||||
angular_limit_bias = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_hinge) {
|
||||
PhysicsServer3D::get_singleton()->hinge_joint_set_param(j, PhysicsServer3D::HINGE_JOINT_LIMIT_BIAS, angular_limit_bias);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_softness" == p_name) {
|
||||
angular_limit_softness = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_hinge) {
|
||||
PhysicsServer3D::get_singleton()->hinge_joint_set_param(j, PhysicsServer3D::HINGE_JOINT_LIMIT_SOFTNESS, angular_limit_softness);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_relaxation" == p_name) {
|
||||
angular_limit_relaxation = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_hinge) {
|
||||
PhysicsServer3D::get_singleton()->hinge_joint_set_param(j, PhysicsServer3D::HINGE_JOINT_LIMIT_RELAXATION, angular_limit_relaxation);
|
||||
}
|
||||
|
||||
@ -2439,63 +2442,64 @@ bool PhysicalBone3D::SliderJointData::_set(const StringName &p_name, const Varia
|
||||
return true;
|
||||
}
|
||||
|
||||
bool is_valid_slider = j.is_valid() && PhysicsServer3D::get_singleton()->joint_get_type(j) == PhysicsServer3D::JOINT_TYPE_SLIDER;
|
||||
if ("joint_constraints/linear_limit_upper" == p_name) {
|
||||
linear_limit_upper = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_LINEAR_LIMIT_UPPER, linear_limit_upper);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/linear_limit_lower" == p_name) {
|
||||
linear_limit_lower = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_LINEAR_LIMIT_LOWER, linear_limit_lower);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/linear_limit_softness" == p_name) {
|
||||
linear_limit_softness = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS, linear_limit_softness);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/linear_limit_restitution" == p_name) {
|
||||
linear_limit_restitution = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION, linear_limit_restitution);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/linear_limit_damping" == p_name) {
|
||||
linear_limit_damping = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_LINEAR_LIMIT_DAMPING, linear_limit_restitution);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_upper" == p_name) {
|
||||
angular_limit_upper = Math::deg_to_rad(real_t(p_value));
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_ANGULAR_LIMIT_UPPER, angular_limit_upper);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_lower" == p_name) {
|
||||
angular_limit_lower = Math::deg_to_rad(real_t(p_value));
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_ANGULAR_LIMIT_LOWER, angular_limit_lower);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_softness" == p_name) {
|
||||
angular_limit_softness = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS, angular_limit_softness);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_restitution" == p_name) {
|
||||
angular_limit_restitution = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS, angular_limit_softness);
|
||||
}
|
||||
|
||||
} else if ("joint_constraints/angular_limit_damping" == p_name) {
|
||||
angular_limit_damping = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_slider) {
|
||||
PhysicsServer3D::get_singleton()->slider_joint_set_param(j, PhysicsServer3D::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING, angular_limit_damping);
|
||||
}
|
||||
|
||||
@ -2580,130 +2584,130 @@ bool PhysicalBone3D::SixDOFJointData::_set(const StringName &p_name, const Varia
|
||||
}
|
||||
|
||||
String var_name = path.get_slicec('/', 2);
|
||||
|
||||
bool is_valid_6dof = j.is_valid() && PhysicsServer3D::get_singleton()->joint_get_type(j) == PhysicsServer3D::JOINT_TYPE_6DOF;
|
||||
if ("linear_limit_enabled" == var_name) {
|
||||
axis_data[axis].linear_limit_enabled = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_flag(j, axis, PhysicsServer3D::G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT, axis_data[axis].linear_limit_enabled);
|
||||
}
|
||||
|
||||
} else if ("linear_limit_upper" == var_name) {
|
||||
axis_data[axis].linear_limit_upper = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_LINEAR_UPPER_LIMIT, axis_data[axis].linear_limit_upper);
|
||||
}
|
||||
|
||||
} else if ("linear_limit_lower" == var_name) {
|
||||
axis_data[axis].linear_limit_lower = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_LINEAR_LOWER_LIMIT, axis_data[axis].linear_limit_lower);
|
||||
}
|
||||
|
||||
} else if ("linear_limit_softness" == var_name) {
|
||||
axis_data[axis].linear_limit_softness = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS, axis_data[axis].linear_limit_softness);
|
||||
}
|
||||
|
||||
} else if ("linear_spring_enabled" == var_name) {
|
||||
axis_data[axis].linear_spring_enabled = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_flag(j, axis, PhysicsServer3D::G6DOF_JOINT_FLAG_ENABLE_LINEAR_SPRING, axis_data[axis].linear_spring_enabled);
|
||||
}
|
||||
|
||||
} else if ("linear_spring_stiffness" == var_name) {
|
||||
axis_data[axis].linear_spring_stiffness = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_LINEAR_SPRING_STIFFNESS, axis_data[axis].linear_spring_stiffness);
|
||||
}
|
||||
|
||||
} else if ("linear_spring_damping" == var_name) {
|
||||
axis_data[axis].linear_spring_damping = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_LINEAR_SPRING_DAMPING, axis_data[axis].linear_spring_damping);
|
||||
}
|
||||
|
||||
} else if ("linear_equilibrium_point" == var_name) {
|
||||
axis_data[axis].linear_equilibrium_point = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_LINEAR_SPRING_EQUILIBRIUM_POINT, axis_data[axis].linear_equilibrium_point);
|
||||
}
|
||||
|
||||
} else if ("linear_restitution" == var_name) {
|
||||
axis_data[axis].linear_restitution = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_LINEAR_RESTITUTION, axis_data[axis].linear_restitution);
|
||||
}
|
||||
|
||||
} else if ("linear_damping" == var_name) {
|
||||
axis_data[axis].linear_damping = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_LINEAR_DAMPING, axis_data[axis].linear_damping);
|
||||
}
|
||||
|
||||
} else if ("angular_limit_enabled" == var_name) {
|
||||
axis_data[axis].angular_limit_enabled = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_flag(j, axis, PhysicsServer3D::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT, axis_data[axis].angular_limit_enabled);
|
||||
}
|
||||
|
||||
} else if ("angular_limit_upper" == var_name) {
|
||||
axis_data[axis].angular_limit_upper = Math::deg_to_rad(real_t(p_value));
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_UPPER_LIMIT, axis_data[axis].angular_limit_upper);
|
||||
}
|
||||
|
||||
} else if ("angular_limit_lower" == var_name) {
|
||||
axis_data[axis].angular_limit_lower = Math::deg_to_rad(real_t(p_value));
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_LOWER_LIMIT, axis_data[axis].angular_limit_lower);
|
||||
}
|
||||
|
||||
} else if ("angular_limit_softness" == var_name) {
|
||||
axis_data[axis].angular_limit_softness = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS, axis_data[axis].angular_limit_softness);
|
||||
}
|
||||
|
||||
} else if ("angular_restitution" == var_name) {
|
||||
axis_data[axis].angular_restitution = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_RESTITUTION, axis_data[axis].angular_restitution);
|
||||
}
|
||||
|
||||
} else if ("angular_damping" == var_name) {
|
||||
axis_data[axis].angular_damping = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_DAMPING, axis_data[axis].angular_damping);
|
||||
}
|
||||
|
||||
} else if ("erp" == var_name) {
|
||||
axis_data[axis].erp = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_ERP, axis_data[axis].erp);
|
||||
}
|
||||
|
||||
} else if ("angular_spring_enabled" == var_name) {
|
||||
axis_data[axis].angular_spring_enabled = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_flag(j, axis, PhysicsServer3D::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING, axis_data[axis].angular_spring_enabled);
|
||||
}
|
||||
|
||||
} else if ("angular_spring_stiffness" == var_name) {
|
||||
axis_data[axis].angular_spring_stiffness = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_SPRING_STIFFNESS, axis_data[axis].angular_spring_stiffness);
|
||||
}
|
||||
|
||||
} else if ("angular_spring_damping" == var_name) {
|
||||
axis_data[axis].angular_spring_damping = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_SPRING_DAMPING, axis_data[axis].angular_spring_damping);
|
||||
}
|
||||
|
||||
} else if ("angular_equilibrium_point" == var_name) {
|
||||
axis_data[axis].angular_equilibrium_point = p_value;
|
||||
if (j.is_valid()) {
|
||||
if (is_valid_6dof) {
|
||||
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(j, axis, PhysicsServer3D::G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT, axis_data[axis].angular_equilibrium_point);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user