Add mid height property to CapsuleShape2D/3D

This commit is contained in:
Aaron Franke
2024-07-01 15:55:57 -07:00
parent 730adf4801
commit 9f38cfe3ca
9 changed files with 81 additions and 22 deletions

View File

@@ -60,6 +60,18 @@ float SpringBoneCollisionCapsule3D::get_height() const {
return height;
}
void SpringBoneCollisionCapsule3D::set_mid_height(real_t p_mid_height) {
ERR_FAIL_COND_MSG(p_mid_height < 0.0f, "SpringBoneCollisionCapsule3D mid-height cannot be negative.");
height = p_mid_height + radius * 2.0f;
#ifdef TOOLS_ENABLED
update_gizmos();
#endif // TOOLS_ENABLED
}
real_t SpringBoneCollisionCapsule3D::get_mid_height() const {
return height - radius * 2.0f;
}
void SpringBoneCollisionCapsule3D::set_inside(bool p_enabled) {
inside = p_enabled;
#ifdef TOOLS_ENABLED
@@ -83,11 +95,14 @@ void SpringBoneCollisionCapsule3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_radius"), &SpringBoneCollisionCapsule3D::get_radius);
ClassDB::bind_method(D_METHOD("set_height", "height"), &SpringBoneCollisionCapsule3D::set_height);
ClassDB::bind_method(D_METHOD("get_height"), &SpringBoneCollisionCapsule3D::get_height);
ClassDB::bind_method(D_METHOD("set_mid_height", "mid_height"), &SpringBoneCollisionCapsule3D::set_mid_height);
ClassDB::bind_method(D_METHOD("get_mid_height"), &SpringBoneCollisionCapsule3D::get_mid_height);
ClassDB::bind_method(D_METHOD("set_inside", "enabled"), &SpringBoneCollisionCapsule3D::set_inside);
ClassDB::bind_method(D_METHOD("is_inside"), &SpringBoneCollisionCapsule3D::is_inside);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0,1,0.001,or_greater,suffix:m"), "set_radius", "get_radius");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0,1,0.001,or_greater,suffix:m"), "set_height", "get_height");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "mid_height", PROPERTY_HINT_RANGE, "0,1,0.001,or_greater,suffix:m", PROPERTY_USAGE_NONE), "set_mid_height", "get_mid_height");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "inside"), "set_inside", "is_inside");
}