Physics: Properly obsolete friction and bounce properties

Without this change any new PhysicsBody would show deprecation warnings
due to default values for friction and bounce being defined.

It also enforced a physics material override even when using default
values.
This commit is contained in:
Rémi Verschelde 2018-08-29 17:03:48 +02:00
parent 39cbb992c3
commit 060988408b
2 changed files with 25 additions and 47 deletions

View File

@ -35,18 +35,8 @@
#include "engine.h" #include "engine.h"
#include "math_funcs.h" #include "math_funcs.h"
#include "scene/scene_string_names.h" #include "scene/scene_string_names.h"
void PhysicsBody2D::_notification(int p_what) { void PhysicsBody2D::_notification(int p_what) {
/*
switch(p_what) {
case NOTIFICATION_TRANSFORM_CHANGED: {
Physics2DServer::get_singleton()->body_set_state(get_rid(),Physics2DServer::BODY_STATE_TRANSFORM,get_global_transform());
} break;
}
*/
} }
void PhysicsBody2D::_set_layers(uint32_t p_mask) { void PhysicsBody2D::_set_layers(uint32_t p_mask) {
@ -190,7 +180,7 @@ real_t StaticBody2D::get_constant_angular_velocity() const {
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
void StaticBody2D::set_friction(real_t p_friction) { void StaticBody2D::set_friction(real_t p_friction) {
ERR_EXPLAIN("The method set_friction has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method set_friction has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
ERR_FAIL_COND(p_friction < 0 || p_friction > 1); ERR_FAIL_COND(p_friction < 0 || p_friction > 1);
@ -204,7 +194,7 @@ void StaticBody2D::set_friction(real_t p_friction) {
real_t StaticBody2D::get_friction() const { real_t StaticBody2D::get_friction() const {
ERR_EXPLAIN("The method get_friction has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method get_friction has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
if (physics_material_override.is_null()) { if (physics_material_override.is_null()) {
@ -216,7 +206,7 @@ real_t StaticBody2D::get_friction() const {
void StaticBody2D::set_bounce(real_t p_bounce) { void StaticBody2D::set_bounce(real_t p_bounce) {
ERR_EXPLAIN("The method set_bounce has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method set_bounce has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
ERR_FAIL_COND(p_bounce < 0 || p_bounce > 1); ERR_FAIL_COND(p_bounce < 0 || p_bounce > 1);
@ -230,7 +220,7 @@ void StaticBody2D::set_bounce(real_t p_bounce) {
real_t StaticBody2D::get_bounce() const { real_t StaticBody2D::get_bounce() const {
ERR_EXPLAIN("The method get_bounce has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method get_bounce has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
if (physics_material_override.is_null()) { if (physics_material_override.is_null()) {
@ -282,8 +272,8 @@ void StaticBody2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "constant_linear_velocity"), "set_constant_linear_velocity", "get_constant_linear_velocity"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "constant_linear_velocity"), "set_constant_linear_velocity", "get_constant_linear_velocity");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "constant_angular_velocity"), "set_constant_angular_velocity", "get_constant_angular_velocity"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "constant_angular_velocity"), "set_constant_angular_velocity", "get_constant_angular_velocity");
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
ADD_PROPERTY(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_friction", "get_friction"); ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_friction", "get_friction");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_bounce", "get_bounce"); ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_bounce", "get_bounce");
#endif // DISABLE_DEPRECATED #endif // DISABLE_DEPRECATED
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");
} }
@ -609,7 +599,7 @@ real_t RigidBody2D::get_weight() const {
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
void RigidBody2D::set_friction(real_t p_friction) { void RigidBody2D::set_friction(real_t p_friction) {
ERR_EXPLAIN("The method set_friction has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method set_friction has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
ERR_FAIL_COND(p_friction < 0 || p_friction > 1); ERR_FAIL_COND(p_friction < 0 || p_friction > 1);
@ -621,7 +611,7 @@ void RigidBody2D::set_friction(real_t p_friction) {
} }
real_t RigidBody2D::get_friction() const { real_t RigidBody2D::get_friction() const {
ERR_EXPLAIN("The method get_friction has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method get_friction has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
if (physics_material_override.is_null()) { if (physics_material_override.is_null()) {
@ -633,7 +623,7 @@ real_t RigidBody2D::get_friction() const {
void RigidBody2D::set_bounce(real_t p_bounce) { void RigidBody2D::set_bounce(real_t p_bounce) {
ERR_EXPLAIN("The method set_bounce has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method set_bounce has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
ERR_FAIL_COND(p_bounce < 0 || p_bounce > 1); ERR_FAIL_COND(p_bounce < 0 || p_bounce > 1);
@ -646,7 +636,7 @@ void RigidBody2D::set_bounce(real_t p_bounce) {
} }
real_t RigidBody2D::get_bounce() const { real_t RigidBody2D::get_bounce() const {
ERR_EXPLAIN("The method get_bounce has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method get_bounce has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
if (physics_material_override.is_null()) { if (physics_material_override.is_null()) {
@ -1035,8 +1025,8 @@ void RigidBody2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "inertia", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", 0), "set_inertia", "get_inertia"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "inertia", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", 0), "set_inertia", "get_inertia");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "weight", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", PROPERTY_USAGE_EDITOR), "set_weight", "get_weight"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "weight", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", PROPERTY_USAGE_EDITOR), "set_weight", "get_weight");
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
ADD_PROPERTY(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_friction", "get_friction"); ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_friction", "get_friction");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_bounce", "get_bounce"); ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_bounce", "get_bounce");
#endif // DISABLE_DEPRECATED #endif // DISABLE_DEPRECATED
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::REAL, "gravity_scale", PROPERTY_HINT_RANGE, "-128,128,0.01"), "set_gravity_scale", "get_gravity_scale"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "gravity_scale", PROPERTY_HINT_RANGE, "-128,128,0.01"), "set_gravity_scale", "get_gravity_scale");

View File

@ -40,17 +40,6 @@
#endif #endif
void PhysicsBody::_notification(int p_what) { void PhysicsBody::_notification(int p_what) {
/*
switch(p_what) {
case NOTIFICATION_TRANSFORM_CHANGED: {
PhysicsServer::get_singleton()->body_set_state(get_rid(),PhysicsServer::BODY_STATE_TRANSFORM,get_global_transform());
} break;
}
*/
} }
Vector3 PhysicsBody::get_linear_velocity() const { Vector3 PhysicsBody::get_linear_velocity() const {
@ -182,7 +171,7 @@ PhysicsBody::PhysicsBody(PhysicsServer::BodyMode p_mode) :
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
void StaticBody::set_friction(real_t p_friction) { void StaticBody::set_friction(real_t p_friction) {
ERR_EXPLAIN("The method set_friction has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method set_friction has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
ERR_FAIL_COND(p_friction < 0 || p_friction > 1); ERR_FAIL_COND(p_friction < 0 || p_friction > 1);
@ -191,13 +180,12 @@ void StaticBody::set_friction(real_t p_friction) {
physics_material_override.instance(); physics_material_override.instance();
set_physics_material_override(physics_material_override); set_physics_material_override(physics_material_override);
} }
physics_material_override->set_friction(p_friction); physics_material_override->set_friction(p_friction);
} }
real_t StaticBody::get_friction() const { real_t StaticBody::get_friction() const {
ERR_EXPLAIN("The method get_friction has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method get_friction has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
if (physics_material_override.is_null()) { if (physics_material_override.is_null()) {
@ -209,7 +197,7 @@ real_t StaticBody::get_friction() const {
void StaticBody::set_bounce(real_t p_bounce) { void StaticBody::set_bounce(real_t p_bounce) {
ERR_EXPLAIN("The method set_bounce has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method set_bounce has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
ERR_FAIL_COND(p_bounce < 0 || p_bounce > 1); ERR_FAIL_COND(p_bounce < 0 || p_bounce > 1);
@ -223,7 +211,7 @@ void StaticBody::set_bounce(real_t p_bounce) {
real_t StaticBody::get_bounce() const { real_t StaticBody::get_bounce() const {
ERR_EXPLAIN("The method get_bounce has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method get_bounce has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
if (physics_material_override.is_null()) { if (physics_material_override.is_null()) {
@ -297,8 +285,8 @@ void StaticBody::_bind_methods() {
ClassDB::bind_method(D_METHOD("remove_collision_exception_with", "body"), &PhysicsBody::remove_collision_exception_with); ClassDB::bind_method(D_METHOD("remove_collision_exception_with", "body"), &PhysicsBody::remove_collision_exception_with);
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
ADD_PROPERTY(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_friction", "get_friction"); ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_friction", "get_friction");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_bounce", "get_bounce"); ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_bounce", "get_bounce");
#endif // DISABLE_DEPRECATED #endif // DISABLE_DEPRECATED
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::VECTOR3, "constant_linear_velocity"), "set_constant_linear_velocity", "get_constant_linear_velocity"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "constant_linear_velocity"), "set_constant_linear_velocity", "get_constant_linear_velocity");
@ -618,7 +606,7 @@ real_t RigidBody::get_weight() const {
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
void RigidBody::set_friction(real_t p_friction) { void RigidBody::set_friction(real_t p_friction) {
ERR_EXPLAIN("The method set_friction has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method set_friction has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
ERR_FAIL_COND(p_friction < 0 || p_friction > 1); ERR_FAIL_COND(p_friction < 0 || p_friction > 1);
@ -630,7 +618,7 @@ void RigidBody::set_friction(real_t p_friction) {
} }
real_t RigidBody::get_friction() const { real_t RigidBody::get_friction() const {
ERR_EXPLAIN("The method get_friction has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method get_friction has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
if (physics_material_override.is_null()) { if (physics_material_override.is_null()) {
return 1; return 1;
@ -640,7 +628,7 @@ real_t RigidBody::get_friction() const {
} }
void RigidBody::set_bounce(real_t p_bounce) { void RigidBody::set_bounce(real_t p_bounce) {
ERR_EXPLAIN("The method set_bounce has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method set_bounce has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
ERR_FAIL_COND(p_bounce < 0 || p_bounce > 1); ERR_FAIL_COND(p_bounce < 0 || p_bounce > 1);
@ -651,7 +639,7 @@ void RigidBody::set_bounce(real_t p_bounce) {
physics_material_override->set_bounce(p_bounce); physics_material_override->set_bounce(p_bounce);
} }
real_t RigidBody::get_bounce() const { real_t RigidBody::get_bounce() const {
ERR_EXPLAIN("The method get_bounce has been deprecated and will be removed in the future, use physical material") ERR_EXPLAIN("The method get_bounce has been deprecated and will be removed in the future, use physics material instead.")
WARN_DEPRECATED WARN_DEPRECATED
if (physics_material_override.is_null()) { if (physics_material_override.is_null()) {
return 0; return 0;
@ -998,8 +986,8 @@ void RigidBody::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "mass", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01"), "set_mass", "get_mass"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "mass", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01"), "set_mass", "get_mass");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "weight", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", PROPERTY_USAGE_EDITOR), "set_weight", "get_weight"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "weight", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", PROPERTY_USAGE_EDITOR), "set_weight", "get_weight");
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
ADD_PROPERTY(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_friction", "get_friction"); ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_friction", "get_friction");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_bounce", "get_bounce"); ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_bounce", "get_bounce");
#endif // DISABLE_DEPRECATED #endif // DISABLE_DEPRECATED
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::REAL, "gravity_scale", PROPERTY_HINT_RANGE, "-128,128,0.01"), "set_gravity_scale", "get_gravity_scale"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "gravity_scale", PROPERTY_HINT_RANGE, "-128,128,0.01"), "set_gravity_scale", "get_gravity_scale");