|
@@ -758,8 +758,26 @@ real_t RigidDynamicBody3D::get_gravity_scale() const {
|
|
|
return gravity_scale;
|
|
|
}
|
|
|
|
|
|
+void RigidDynamicBody3D::set_linear_damp_mode(DampMode p_mode) {
|
|
|
+ linear_damp_mode = p_mode;
|
|
|
+ PhysicsServer3D::get_singleton()->body_set_param(get_rid(), PhysicsServer3D::BODY_PARAM_LINEAR_DAMP_MODE, linear_damp_mode);
|
|
|
+}
|
|
|
+
|
|
|
+RigidDynamicBody3D::DampMode RigidDynamicBody3D::get_linear_damp_mode() const {
|
|
|
+ return linear_damp_mode;
|
|
|
+}
|
|
|
+
|
|
|
+void RigidDynamicBody3D::set_angular_damp_mode(DampMode p_mode) {
|
|
|
+ angular_damp_mode = p_mode;
|
|
|
+ PhysicsServer3D::get_singleton()->body_set_param(get_rid(), PhysicsServer3D::BODY_PARAM_ANGULAR_DAMP_MODE, angular_damp_mode);
|
|
|
+}
|
|
|
+
|
|
|
+RigidDynamicBody3D::DampMode RigidDynamicBody3D::get_angular_damp_mode() const {
|
|
|
+ return angular_damp_mode;
|
|
|
+}
|
|
|
+
|
|
|
void RigidDynamicBody3D::set_linear_damp(real_t p_linear_damp) {
|
|
|
- ERR_FAIL_COND(p_linear_damp < -1);
|
|
|
+ ERR_FAIL_COND(p_linear_damp < 0.0);
|
|
|
linear_damp = p_linear_damp;
|
|
|
PhysicsServer3D::get_singleton()->body_set_param(get_rid(), PhysicsServer3D::BODY_PARAM_LINEAR_DAMP, linear_damp);
|
|
|
}
|
|
@@ -769,7 +787,7 @@ real_t RigidDynamicBody3D::get_linear_damp() const {
|
|
|
}
|
|
|
|
|
|
void RigidDynamicBody3D::set_angular_damp(real_t p_angular_damp) {
|
|
|
- ERR_FAIL_COND(p_angular_damp < -1);
|
|
|
+ ERR_FAIL_COND(p_angular_damp < 0.0);
|
|
|
angular_damp = p_angular_damp;
|
|
|
PhysicsServer3D::get_singleton()->body_set_param(get_rid(), PhysicsServer3D::BODY_PARAM_ANGULAR_DAMP, angular_damp);
|
|
|
}
|
|
@@ -970,6 +988,12 @@ void RigidDynamicBody3D::_bind_methods() {
|
|
|
ClassDB::bind_method(D_METHOD("set_gravity_scale", "gravity_scale"), &RigidDynamicBody3D::set_gravity_scale);
|
|
|
ClassDB::bind_method(D_METHOD("get_gravity_scale"), &RigidDynamicBody3D::get_gravity_scale);
|
|
|
|
|
|
+ ClassDB::bind_method(D_METHOD("set_linear_damp_mode", "linear_damp_mode"), &RigidDynamicBody3D::set_linear_damp_mode);
|
|
|
+ ClassDB::bind_method(D_METHOD("get_linear_damp_mode"), &RigidDynamicBody3D::get_linear_damp_mode);
|
|
|
+
|
|
|
+ ClassDB::bind_method(D_METHOD("set_angular_damp_mode", "angular_damp_mode"), &RigidDynamicBody3D::set_angular_damp_mode);
|
|
|
+ ClassDB::bind_method(D_METHOD("get_angular_damp_mode"), &RigidDynamicBody3D::get_angular_damp_mode);
|
|
|
+
|
|
|
ClassDB::bind_method(D_METHOD("set_linear_damp", "linear_damp"), &RigidDynamicBody3D::set_linear_damp);
|
|
|
ClassDB::bind_method(D_METHOD("get_linear_damp"), &RigidDynamicBody3D::get_linear_damp);
|
|
|
|
|
@@ -1035,10 +1059,12 @@ void RigidDynamicBody3D::_bind_methods() {
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "freeze_mode", PROPERTY_HINT_ENUM, "Static,Kinematic"), "set_freeze_mode", "get_freeze_mode");
|
|
|
ADD_GROUP("Linear", "linear_");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "linear_velocity"), "set_linear_velocity", "get_linear_velocity");
|
|
|
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "linear_damp", PROPERTY_HINT_RANGE, "-1,100,0.001,or_greater"), "set_linear_damp", "get_linear_damp");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "linear_damp_mode", PROPERTY_HINT_ENUM, "Combine,Replace"), "set_linear_damp_mode", "get_linear_damp_mode");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "linear_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_linear_damp", "get_linear_damp");
|
|
|
ADD_GROUP("Angular", "angular_");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "angular_velocity"), "set_angular_velocity", "get_angular_velocity");
|
|
|
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_damp", PROPERTY_HINT_RANGE, "-1,100,0.001,or_greater"), "set_angular_damp", "get_angular_damp");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "angular_damp_mode", PROPERTY_HINT_ENUM, "Combine,Replace"), "set_angular_damp_mode", "get_angular_damp_mode");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_angular_damp", "get_angular_damp");
|
|
|
|
|
|
ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
|
|
|
ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::RID, "body_rid"), PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node"), PropertyInfo(Variant::INT, "body_shape_index"), PropertyInfo(Variant::INT, "local_shape_index")));
|
|
@@ -1051,6 +1077,9 @@ void RigidDynamicBody3D::_bind_methods() {
|
|
|
|
|
|
BIND_ENUM_CONSTANT(CENTER_OF_MASS_MODE_AUTO);
|
|
|
BIND_ENUM_CONSTANT(CENTER_OF_MASS_MODE_CUSTOM);
|
|
|
+
|
|
|
+ BIND_ENUM_CONSTANT(DAMP_MODE_COMBINE);
|
|
|
+ BIND_ENUM_CONSTANT(DAMP_MODE_REPLACE);
|
|
|
}
|
|
|
|
|
|
void RigidDynamicBody3D::_validate_property(PropertyInfo &property) const {
|
|
@@ -2823,6 +2852,12 @@ void PhysicalBone3D::_bind_methods() {
|
|
|
ClassDB::bind_method(D_METHOD("set_gravity_scale", "gravity_scale"), &PhysicalBone3D::set_gravity_scale);
|
|
|
ClassDB::bind_method(D_METHOD("get_gravity_scale"), &PhysicalBone3D::get_gravity_scale);
|
|
|
|
|
|
+ ClassDB::bind_method(D_METHOD("set_linear_damp_mode", "linear_damp_mode"), &PhysicalBone3D::set_linear_damp_mode);
|
|
|
+ ClassDB::bind_method(D_METHOD("get_linear_damp_mode"), &PhysicalBone3D::get_linear_damp_mode);
|
|
|
+
|
|
|
+ ClassDB::bind_method(D_METHOD("set_angular_damp_mode", "angular_damp_mode"), &PhysicalBone3D::set_angular_damp_mode);
|
|
|
+ ClassDB::bind_method(D_METHOD("get_angular_damp_mode"), &PhysicalBone3D::get_angular_damp_mode);
|
|
|
+
|
|
|
ClassDB::bind_method(D_METHOD("set_linear_damp", "linear_damp"), &PhysicalBone3D::set_linear_damp);
|
|
|
ClassDB::bind_method(D_METHOD("get_linear_damp"), &PhysicalBone3D::get_linear_damp);
|
|
|
|
|
@@ -2843,10 +2878,15 @@ void PhysicalBone3D::_bind_methods() {
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "friction", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_friction", "get_friction");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_bounce", "get_bounce");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gravity_scale", PROPERTY_HINT_RANGE, "-10,10,0.01"), "set_gravity_scale", "get_gravity_scale");
|
|
|
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "linear_damp", PROPERTY_HINT_RANGE, "-1,100,0.001,or_greater"), "set_linear_damp", "get_linear_damp");
|
|
|
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_damp", PROPERTY_HINT_RANGE, "-1,100,0.001,or_greater"), "set_angular_damp", "get_angular_damp");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "linear_damp_mode", PROPERTY_HINT_ENUM, "Combine,Replace"), "set_linear_damp_mode", "get_linear_damp_mode");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "linear_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_linear_damp", "get_linear_damp");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "angular_damp_mode", PROPERTY_HINT_ENUM, "Combine,Replace"), "set_angular_damp_mode", "get_angular_damp_mode");
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_angular_damp", "get_angular_damp");
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "can_sleep"), "set_can_sleep", "is_able_to_sleep");
|
|
|
|
|
|
+ BIND_ENUM_CONSTANT(DAMP_MODE_COMBINE);
|
|
|
+ BIND_ENUM_CONSTANT(DAMP_MODE_REPLACE);
|
|
|
+
|
|
|
BIND_ENUM_CONSTANT(JOINT_TYPE_NONE);
|
|
|
BIND_ENUM_CONSTANT(JOINT_TYPE_PIN);
|
|
|
BIND_ENUM_CONSTANT(JOINT_TYPE_CONE);
|
|
@@ -3144,8 +3184,27 @@ real_t PhysicalBone3D::get_gravity_scale() const {
|
|
|
return gravity_scale;
|
|
|
}
|
|
|
|
|
|
+void PhysicalBone3D::set_linear_damp_mode(DampMode p_mode) {
|
|
|
+ linear_damp_mode = p_mode;
|
|
|
+ PhysicsServer3D::get_singleton()->body_set_param(get_rid(), PhysicsServer3D::BODY_PARAM_LINEAR_DAMP_MODE, linear_damp_mode);
|
|
|
+}
|
|
|
+
|
|
|
+PhysicalBone3D::DampMode PhysicalBone3D::get_linear_damp_mode() const {
|
|
|
+ return linear_damp_mode;
|
|
|
+}
|
|
|
+
|
|
|
+void PhysicalBone3D::set_angular_damp_mode(DampMode p_mode) {
|
|
|
+ angular_damp_mode = p_mode;
|
|
|
+ PhysicsServer3D::get_singleton()->body_set_param(get_rid(), PhysicsServer3D::BODY_PARAM_ANGULAR_DAMP_MODE, angular_damp_mode);
|
|
|
+}
|
|
|
+
|
|
|
+PhysicalBone3D::DampMode PhysicalBone3D::get_angular_damp_mode() const {
|
|
|
+ return angular_damp_mode;
|
|
|
+}
|
|
|
+
|
|
|
void PhysicalBone3D::set_linear_damp(real_t p_linear_damp) {
|
|
|
- ERR_FAIL_COND(p_linear_damp < -1);
|
|
|
+ ERR_FAIL_COND(p_linear_damp < 0);
|
|
|
+
|
|
|
linear_damp = p_linear_damp;
|
|
|
PhysicsServer3D::get_singleton()->body_set_param(get_rid(), PhysicsServer3D::BODY_PARAM_LINEAR_DAMP, linear_damp);
|
|
|
}
|
|
@@ -3155,7 +3214,8 @@ real_t PhysicalBone3D::get_linear_damp() const {
|
|
|
}
|
|
|
|
|
|
void PhysicalBone3D::set_angular_damp(real_t p_angular_damp) {
|
|
|
- ERR_FAIL_COND(p_angular_damp < -1);
|
|
|
+ ERR_FAIL_COND(p_angular_damp < 0);
|
|
|
+
|
|
|
angular_damp = p_angular_damp;
|
|
|
PhysicsServer3D::get_singleton()->body_set_param(get_rid(), PhysicsServer3D::BODY_PARAM_ANGULAR_DAMP, angular_damp);
|
|
|
}
|