|
@@ -491,15 +491,15 @@ void RigidBody3D::_notification(int p_what) {
|
|
void RigidBody3D::set_mode(Mode p_mode) {
|
|
void RigidBody3D::set_mode(Mode p_mode) {
|
|
mode = p_mode;
|
|
mode = p_mode;
|
|
switch (p_mode) {
|
|
switch (p_mode) {
|
|
- case MODE_RIGID: {
|
|
|
|
- PhysicsServer3D::get_singleton()->body_set_mode(get_rid(), PhysicsServer3D::BODY_MODE_RIGID);
|
|
|
|
|
|
+ case MODE_DYNAMIC: {
|
|
|
|
+ PhysicsServer3D::get_singleton()->body_set_mode(get_rid(), PhysicsServer3D::BODY_MODE_DYNAMIC);
|
|
} break;
|
|
} break;
|
|
case MODE_STATIC: {
|
|
case MODE_STATIC: {
|
|
PhysicsServer3D::get_singleton()->body_set_mode(get_rid(), PhysicsServer3D::BODY_MODE_STATIC);
|
|
PhysicsServer3D::get_singleton()->body_set_mode(get_rid(), PhysicsServer3D::BODY_MODE_STATIC);
|
|
|
|
|
|
} break;
|
|
} break;
|
|
- case MODE_CHARACTER: {
|
|
|
|
- PhysicsServer3D::get_singleton()->body_set_mode(get_rid(), PhysicsServer3D::BODY_MODE_CHARACTER);
|
|
|
|
|
|
+ case MODE_DYNAMIC_LOCKED: {
|
|
|
|
+ PhysicsServer3D::get_singleton()->body_set_mode(get_rid(), PhysicsServer3D::BODY_MODE_DYNAMIC_LOCKED);
|
|
|
|
|
|
} break;
|
|
} break;
|
|
case MODE_KINEMATIC: {
|
|
case MODE_KINEMATIC: {
|
|
@@ -743,8 +743,8 @@ TypedArray<String> RigidBody3D::get_configuration_warnings() const {
|
|
|
|
|
|
TypedArray<String> warnings = Node::get_configuration_warnings();
|
|
TypedArray<String> warnings = Node::get_configuration_warnings();
|
|
|
|
|
|
- if ((get_mode() == MODE_RIGID || get_mode() == MODE_CHARACTER) && (ABS(t.basis.get_axis(0).length() - 1.0) > 0.05 || ABS(t.basis.get_axis(1).length() - 1.0) > 0.05 || ABS(t.basis.get_axis(2).length() - 1.0) > 0.05)) {
|
|
|
|
- warnings.push_back(TTR("Size changes to RigidBody3D (in character or rigid modes) will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."));
|
|
|
|
|
|
+ if ((get_mode() == MODE_DYNAMIC || get_mode() == MODE_DYNAMIC_LOCKED) && (ABS(t.basis.get_axis(0).length() - 1.0) > 0.05 || ABS(t.basis.get_axis(1).length() - 1.0) > 0.05 || ABS(t.basis.get_axis(2).length() - 1.0) > 0.05)) {
|
|
|
|
+ warnings.push_back(TTR("Size changes to RigidBody3D (in dynamic modes) will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."));
|
|
}
|
|
}
|
|
|
|
|
|
return warnings;
|
|
return warnings;
|
|
@@ -809,7 +809,7 @@ void RigidBody3D::_bind_methods() {
|
|
|
|
|
|
BIND_VMETHOD(MethodInfo("_integrate_forces", PropertyInfo(Variant::OBJECT, "state", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsDirectBodyState3D")));
|
|
BIND_VMETHOD(MethodInfo("_integrate_forces", PropertyInfo(Variant::OBJECT, "state", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsDirectBodyState3D")));
|
|
|
|
|
|
- ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Rigid,Static,Character,Kinematic"), "set_mode", "get_mode");
|
|
|
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Dynamic,Static,DynamicLocked,Kinematic"), "set_mode", "get_mode");
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "mass", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01"), "set_mass", "get_mass");
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "mass", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01"), "set_mass", "get_mass");
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "physics_material_override", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsMaterial"), "set_physics_material_override", "get_physics_material_override");
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "physics_material_override", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsMaterial"), "set_physics_material_override", "get_physics_material_override");
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gravity_scale", PROPERTY_HINT_RANGE, "-128,128,0.01"), "set_gravity_scale", "get_gravity_scale");
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gravity_scale", PROPERTY_HINT_RANGE, "-128,128,0.01"), "set_gravity_scale", "get_gravity_scale");
|
|
@@ -832,14 +832,14 @@ void RigidBody3D::_bind_methods() {
|
|
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
|
|
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
|
|
ADD_SIGNAL(MethodInfo("sleeping_state_changed"));
|
|
ADD_SIGNAL(MethodInfo("sleeping_state_changed"));
|
|
|
|
|
|
- BIND_ENUM_CONSTANT(MODE_RIGID);
|
|
|
|
|
|
+ BIND_ENUM_CONSTANT(MODE_DYNAMIC);
|
|
BIND_ENUM_CONSTANT(MODE_STATIC);
|
|
BIND_ENUM_CONSTANT(MODE_STATIC);
|
|
- BIND_ENUM_CONSTANT(MODE_CHARACTER);
|
|
|
|
|
|
+ BIND_ENUM_CONSTANT(MODE_DYNAMIC_LOCKED);
|
|
BIND_ENUM_CONSTANT(MODE_KINEMATIC);
|
|
BIND_ENUM_CONSTANT(MODE_KINEMATIC);
|
|
}
|
|
}
|
|
|
|
|
|
RigidBody3D::RigidBody3D() :
|
|
RigidBody3D::RigidBody3D() :
|
|
- PhysicsBody3D(PhysicsServer3D::BODY_MODE_RIGID) {
|
|
|
|
|
|
+ PhysicsBody3D(PhysicsServer3D::BODY_MODE_DYNAMIC) {
|
|
PhysicsServer3D::get_singleton()->body_set_force_integration_callback(get_rid(), callable_mp(this, &RigidBody3D::_direct_state_changed));
|
|
PhysicsServer3D::get_singleton()->body_set_force_integration_callback(get_rid(), callable_mp(this, &RigidBody3D::_direct_state_changed));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2496,7 +2496,7 @@ void PhysicalBone3D::_start_physics_simulation() {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
reset_to_rest_position();
|
|
reset_to_rest_position();
|
|
- PhysicsServer3D::get_singleton()->body_set_mode(get_rid(), PhysicsServer3D::BODY_MODE_RIGID);
|
|
|
|
|
|
+ PhysicsServer3D::get_singleton()->body_set_mode(get_rid(), PhysicsServer3D::BODY_MODE_DYNAMIC);
|
|
PhysicsServer3D::get_singleton()->body_set_collision_layer(get_rid(), get_collision_layer());
|
|
PhysicsServer3D::get_singleton()->body_set_collision_layer(get_rid(), get_collision_layer());
|
|
PhysicsServer3D::get_singleton()->body_set_collision_mask(get_rid(), get_collision_mask());
|
|
PhysicsServer3D::get_singleton()->body_set_collision_mask(get_rid(), get_collision_mask());
|
|
PhysicsServer3D::get_singleton()->body_set_force_integration_callback(get_rid(), callable_mp(this, &PhysicalBone3D::_direct_state_changed));
|
|
PhysicsServer3D::get_singleton()->body_set_force_integration_callback(get_rid(), callable_mp(this, &PhysicalBone3D::_direct_state_changed));
|