diff options
Diffstat (limited to 'servers')
-rw-r--r-- | servers/physics_2d/godot_body_2d.cpp | 86 | ||||
-rw-r--r-- | servers/physics_2d/godot_body_2d.h | 18 | ||||
-rw-r--r-- | servers/physics_2d/godot_body_direct_state_2d.cpp | 4 | ||||
-rw-r--r-- | servers/physics_3d/godot_body_3d.cpp | 78 | ||||
-rw-r--r-- | servers/physics_3d/godot_body_3d.h | 15 | ||||
-rw-r--r-- | servers/physics_3d/godot_body_direct_state_3d.cpp | 4 | ||||
-rw-r--r-- | servers/physics_server_2d.cpp | 5 | ||||
-rw-r--r-- | servers/physics_server_2d.h | 9 | ||||
-rw-r--r-- | servers/physics_server_3d.cpp | 5 | ||||
-rw-r--r-- | servers/physics_server_3d.h | 8 |
10 files changed, 144 insertions, 88 deletions
diff --git a/servers/physics_2d/godot_body_2d.cpp b/servers/physics_2d/godot_body_2d.cpp index 56f191c203..109914d585 100644 --- a/servers/physics_2d/godot_body_2d.cpp +++ b/servers/physics_2d/godot_body_2d.cpp @@ -187,6 +187,14 @@ void GodotBody2D::set_param(PhysicsServer2D::BodyParameter p_param, const Varian case PhysicsServer2D::BODY_PARAM_GRAVITY_SCALE: { gravity_scale = p_value; } break; + case PhysicsServer2D::BODY_PARAM_LINEAR_DAMP_MODE: { + int mode_value = p_value; + linear_damp_mode = (PhysicsServer2D::BodyDampMode)mode_value; + } break; + case PhysicsServer2D::BODY_PARAM_ANGULAR_DAMP_MODE: { + int mode_value = p_value; + angular_damp_mode = (PhysicsServer2D::BodyDampMode)mode_value; + } break; case PhysicsServer2D::BODY_PARAM_LINEAR_DAMP: { linear_damp = p_value; } break; @@ -218,6 +226,12 @@ Variant GodotBody2D::get_param(PhysicsServer2D::BodyParameter p_param) const { case PhysicsServer2D::BODY_PARAM_GRAVITY_SCALE: { return gravity_scale; } + case PhysicsServer2D::BODY_PARAM_LINEAR_DAMP_MODE: { + return linear_damp_mode; + } + case PhysicsServer2D::BODY_PARAM_ANGULAR_DAMP_MODE: { + return angular_damp_mode; + } case PhysicsServer2D::BODY_PARAM_LINEAR_DAMP: { return linear_damp; } @@ -401,8 +415,8 @@ void GodotBody2D::_compute_area_gravity_and_damping(const GodotArea2D *p_area) { p_area->compute_gravity(get_transform().get_origin(), area_gravity); gravity += area_gravity; - area_linear_damp += p_area->get_linear_damp(); - area_angular_damp += p_area->get_angular_damp(); + total_linear_damp += p_area->get_linear_damp(); + total_angular_damp += p_area->get_angular_damp(); } void GodotBody2D::_update_transform_dependent() { @@ -414,19 +428,17 @@ void GodotBody2D::integrate_forces(real_t p_step) { return; } - GodotArea2D *def_area = get_space()->get_default_area(); - // GodotArea2D *damp_area = def_area; - ERR_FAIL_COND(!def_area); - int ac = areas.size(); bool stopped = false; gravity = Vector2(0, 0); - area_angular_damp = 0; - area_linear_damp = 0; + + total_linear_damp = 0.0; + total_angular_damp = 0.0; + + // Combine gravity and damping from overlapping areas in priority order. if (ac) { areas.sort(); const AreaCMP *aa = &areas[0]; - // damp_area = aa[ac-1].area; for (int i = ac - 1; i >= 0 && !stopped; i--) { PhysicsServer2D::AreaSpaceOverrideMode mode = aa[i].area->get_space_override_mode(); switch (mode) { @@ -438,8 +450,8 @@ void GodotBody2D::integrate_forces(real_t p_step) { case PhysicsServer2D::AREA_SPACE_OVERRIDE_REPLACE: case PhysicsServer2D::AREA_SPACE_OVERRIDE_REPLACE_COMBINE: { gravity = Vector2(0, 0); - area_angular_damp = 0; - area_linear_damp = 0; + total_linear_damp = 0.0; + total_angular_damp = 0.0; _compute_area_gravity_and_damping(aa[i].area); stopped = mode == PhysicsServer2D::AREA_SPACE_OVERRIDE_REPLACE; } break; @@ -448,27 +460,36 @@ void GodotBody2D::integrate_forces(real_t p_step) { } } } + + // Override linear damping with body's value. if (!stopped) { + GodotArea2D *def_area = get_space()->get_default_area(); + ERR_FAIL_COND(!def_area); + _compute_area_gravity_and_damping(def_area); } - gravity *= gravity_scale; - // If less than 0, override dampenings with that of the Body2D - if (angular_damp >= 0) { - area_angular_damp = angular_damp; + // Override linear damping with body's value. + switch (linear_damp_mode) { + case PhysicsServer2D::BODY_DAMP_MODE_COMBINE: { + total_linear_damp += linear_damp; + } break; + case PhysicsServer2D::BODY_DAMP_MODE_REPLACE: { + total_linear_damp = linear_damp; + } break; } - /* - else - area_angular_damp=damp_area->get_angular_damp(); - */ - if (linear_damp >= 0) { - area_linear_damp = linear_damp; + // Override angular damping with body's value. + switch (angular_damp_mode) { + case PhysicsServer2D::BODY_DAMP_MODE_COMBINE: { + total_angular_damp += angular_damp; + } break; + case PhysicsServer2D::BODY_DAMP_MODE_REPLACE: { + total_angular_damp = angular_damp; + } break; } - /* - else - area_linear_damp=damp_area->get_linear_damp(); - */ + + gravity *= gravity_scale; Vector2 motion; bool do_motion = false; @@ -483,13 +504,6 @@ void GodotBody2D::integrate_forces(real_t p_step) { do_motion = true; - /* - for(int i=0;i<get_shape_count();i++) { - set_shape_kinematic_advance(i,Vector2()); - set_shape_kinematic_retreat(i,0); - } - */ - } else { if (!omit_force_integration) { //overridden by direct state query @@ -498,13 +512,13 @@ void GodotBody2D::integrate_forces(real_t p_step) { force += applied_force; real_t torque = applied_torque; - real_t damp = 1.0 - p_step * area_linear_damp; + real_t damp = 1.0 - p_step * total_linear_damp; if (damp < 0) { // reached zero in the given time damp = 0; } - real_t angular_damp = 1.0 - p_step * area_angular_damp; + real_t angular_damp = 1.0 - p_step * total_angular_damp; if (angular_damp < 0) { // reached zero in the given time angular_damp = 0; @@ -523,8 +537,6 @@ void GodotBody2D::integrate_forces(real_t p_step) { } } - //motion=linear_velocity*p_step; - biased_angular_velocity = 0; biased_linear_velocity = Vector2(); @@ -532,8 +544,6 @@ void GodotBody2D::integrate_forces(real_t p_step) { _update_shapes_with_motion(motion); } - // damp_area=nullptr; // clear the area, so it is set in the next frame - def_area = nullptr; // clear the area, so it is set in the next frame contact_count = 0; } diff --git a/servers/physics_2d/godot_body_2d.h b/servers/physics_2d/godot_body_2d.h index 5fce362fa7..817d5f1b0d 100644 --- a/servers/physics_2d/godot_body_2d.h +++ b/servers/physics_2d/godot_body_2d.h @@ -53,8 +53,15 @@ class GodotBody2D : public GodotCollisionObject2D { Vector2 constant_linear_velocity; real_t constant_angular_velocity = 0.0; - real_t linear_damp = -1.0; - real_t angular_damp = -1.0; + PhysicsServer2D::BodyDampMode linear_damp_mode = PhysicsServer2D::BODY_DAMP_MODE_COMBINE; + PhysicsServer2D::BodyDampMode angular_damp_mode = PhysicsServer2D::BODY_DAMP_MODE_COMBINE; + + real_t linear_damp = 0.0; + real_t angular_damp = 0.0; + + real_t total_linear_damp = 0.0; + real_t total_angular_damp = 0.0; + real_t gravity_scale = 1.0; real_t bounce = 0.0; @@ -73,8 +80,6 @@ class GodotBody2D : public GodotCollisionObject2D { bool calculate_center_of_mass = true; Vector2 gravity; - real_t area_linear_damp = 0.0; - real_t area_angular_damp = 0.0; real_t still_time = 0.0; @@ -276,14 +281,11 @@ public: void update_mass_properties(); void reset_mass_properties(); - _FORCE_INLINE_ Vector2 get_center_of_mass() const { return center_of_mass; } + _FORCE_INLINE_ const Vector2 &get_center_of_mass() const { return center_of_mass; } _FORCE_INLINE_ real_t get_inv_mass() const { return _inv_mass; } _FORCE_INLINE_ real_t get_inv_inertia() const { return _inv_inertia; } _FORCE_INLINE_ real_t get_friction() const { return friction; } - _FORCE_INLINE_ Vector2 get_gravity() const { return gravity; } _FORCE_INLINE_ real_t get_bounce() const { return bounce; } - _FORCE_INLINE_ real_t get_linear_damp() const { return linear_damp; } - _FORCE_INLINE_ real_t get_angular_damp() const { return angular_damp; } void integrate_forces(real_t p_step); void integrate_velocities(real_t p_step); diff --git a/servers/physics_2d/godot_body_direct_state_2d.cpp b/servers/physics_2d/godot_body_direct_state_2d.cpp index 300c302c79..deebc57f37 100644 --- a/servers/physics_2d/godot_body_direct_state_2d.cpp +++ b/servers/physics_2d/godot_body_direct_state_2d.cpp @@ -39,11 +39,11 @@ Vector2 GodotPhysicsDirectBodyState2D::get_total_gravity() const { } real_t GodotPhysicsDirectBodyState2D::get_total_angular_damp() const { - return body->area_angular_damp; + return body->total_angular_damp; } real_t GodotPhysicsDirectBodyState2D::get_total_linear_damp() const { - return body->area_linear_damp; + return body->total_linear_damp; } Vector2 GodotPhysicsDirectBodyState2D::get_center_of_mass() const { diff --git a/servers/physics_3d/godot_body_3d.cpp b/servers/physics_3d/godot_body_3d.cpp index 02929eeaed..768c9e6572 100644 --- a/servers/physics_3d/godot_body_3d.cpp +++ b/servers/physics_3d/godot_body_3d.cpp @@ -229,6 +229,14 @@ void GodotBody3D::set_param(PhysicsServer3D::BodyParameter p_param, const Varian case PhysicsServer3D::BODY_PARAM_GRAVITY_SCALE: { gravity_scale = p_value; } break; + case PhysicsServer3D::BODY_PARAM_LINEAR_DAMP_MODE: { + int mode_value = p_value; + linear_damp_mode = (PhysicsServer3D::BodyDampMode)mode_value; + } break; + case PhysicsServer3D::BODY_PARAM_ANGULAR_DAMP_MODE: { + int mode_value = p_value; + angular_damp_mode = (PhysicsServer3D::BodyDampMode)mode_value; + } break; case PhysicsServer3D::BODY_PARAM_LINEAR_DAMP: { linear_damp = p_value; } break; @@ -264,6 +272,12 @@ Variant GodotBody3D::get_param(PhysicsServer3D::BodyParameter p_param) const { case PhysicsServer3D::BODY_PARAM_GRAVITY_SCALE: { return gravity_scale; } break; + case PhysicsServer3D::BODY_PARAM_LINEAR_DAMP_MODE: { + return linear_damp_mode; + } + case PhysicsServer3D::BODY_PARAM_ANGULAR_DAMP_MODE: { + return angular_damp_mode; + } case PhysicsServer3D::BODY_PARAM_LINEAR_DAMP: { return linear_damp; } break; @@ -448,8 +462,8 @@ void GodotBody3D::_compute_area_gravity_and_damping(const GodotArea3D *p_area) { p_area->compute_gravity(get_transform().get_origin(), area_gravity); gravity += area_gravity; - area_linear_damp += p_area->get_linear_damp(); - area_angular_damp += p_area->get_angular_damp(); + total_linear_damp += p_area->get_linear_damp(); + total_angular_damp += p_area->get_angular_damp(); } void GodotBody3D::set_axis_lock(PhysicsServer3D::BodyAxis p_axis, bool lock) { @@ -469,19 +483,17 @@ void GodotBody3D::integrate_forces(real_t p_step) { return; } - GodotArea3D *def_area = get_space()->get_default_area(); - - ERR_FAIL_COND(!def_area); - int ac = areas.size(); bool stopped = false; gravity = Vector3(0, 0, 0); - area_linear_damp = 0; - area_angular_damp = 0; + + total_linear_damp = 0.0; + total_angular_damp = 0.0; + + // Combine gravity and damping from overlapping areas in priority order. if (ac) { areas.sort(); const AreaCMP *aa = &areas[0]; - // damp_area = aa[ac-1].area; for (int i = ac - 1; i >= 0 && !stopped; i--) { PhysicsServer3D::AreaSpaceOverrideMode mode = aa[i].area->get_space_override_mode(); switch (mode) { @@ -493,8 +505,8 @@ void GodotBody3D::integrate_forces(real_t p_step) { case PhysicsServer3D::AREA_SPACE_OVERRIDE_REPLACE: case PhysicsServer3D::AREA_SPACE_OVERRIDE_REPLACE_COMBINE: { gravity = Vector3(0, 0, 0); - area_angular_damp = 0; - area_linear_damp = 0; + total_linear_damp = 0.0; + total_angular_damp = 0.0; _compute_area_gravity_and_damping(aa[i].area); stopped = mode == PhysicsServer3D::AREA_SPACE_OVERRIDE_REPLACE; } break; @@ -504,28 +516,35 @@ void GodotBody3D::integrate_forces(real_t p_step) { } } + // Add default gravity and damping from space area. if (!stopped) { + GodotArea3D *def_area = get_space()->get_default_area(); + ERR_FAIL_COND(!def_area); + _compute_area_gravity_and_damping(def_area); } - gravity *= gravity_scale; - - // If less than 0, override dampenings with that of the Body - if (angular_damp >= 0) { - area_angular_damp = angular_damp; + // Override linear damping with body's value. + switch (linear_damp_mode) { + case PhysicsServer3D::BODY_DAMP_MODE_COMBINE: { + total_linear_damp += linear_damp; + } break; + case PhysicsServer3D::BODY_DAMP_MODE_REPLACE: { + total_linear_damp = linear_damp; + } break; } - /* - else - area_angular_damp=damp_area->get_angular_damp(); - */ - if (linear_damp >= 0) { - area_linear_damp = linear_damp; + // Override angular damping with body's value. + switch (angular_damp_mode) { + case PhysicsServer3D::BODY_DAMP_MODE_COMBINE: { + total_angular_damp += angular_damp; + } break; + case PhysicsServer3D::BODY_DAMP_MODE_REPLACE: { + total_angular_damp = angular_damp; + } break; } - /* - else - area_linear_damp=damp_area->get_linear_damp(); - */ + + gravity *= gravity_scale; Vector3 motion; bool do_motion = false; @@ -552,13 +571,13 @@ void GodotBody3D::integrate_forces(real_t p_step) { force += applied_force; Vector3 torque = applied_torque; - real_t damp = 1.0 - p_step * area_linear_damp; + real_t damp = 1.0 - p_step * total_linear_damp; if (damp < 0) { // reached zero in the given time damp = 0; } - real_t angular_damp = 1.0 - p_step * area_angular_damp; + real_t angular_damp = 1.0 - p_step * total_angular_damp; if (angular_damp < 0) { // reached zero in the given time angular_damp = 0; @@ -580,8 +599,6 @@ void GodotBody3D::integrate_forces(real_t p_step) { applied_force = Vector3(); applied_torque = Vector3(); - //motion=linear_velocity*p_step; - biased_angular_velocity = Vector3(); biased_linear_velocity = Vector3(); @@ -589,7 +606,6 @@ void GodotBody3D::integrate_forces(real_t p_step) { _update_shapes_with_motion(motion); } - def_area = nullptr; // clear the area, so it is set in the next frame contact_count = 0; } diff --git a/servers/physics_3d/godot_body_3d.h b/servers/physics_3d/godot_body_3d.h index 5acdab9d13..4993ea6a1b 100644 --- a/servers/physics_3d/godot_body_3d.h +++ b/servers/physics_3d/godot_body_3d.h @@ -55,8 +55,15 @@ class GodotBody3D : public GodotCollisionObject3D { real_t friction = 1.0; Vector3 inertia; - real_t linear_damp = -1.0; - real_t angular_damp = -1.0; + PhysicsServer3D::BodyDampMode linear_damp_mode = PhysicsServer3D::BODY_DAMP_MODE_COMBINE; + PhysicsServer3D::BodyDampMode angular_damp_mode = PhysicsServer3D::BODY_DAMP_MODE_COMBINE; + + real_t linear_damp = 0.0; + real_t angular_damp = 0.0; + + real_t total_linear_damp = 0.0; + real_t total_angular_damp = 0.0; + real_t gravity_scale = 1.0; uint16_t locked_axis = 0; @@ -83,9 +90,6 @@ class GodotBody3D : public GodotCollisionObject3D { Vector3 applied_force; Vector3 applied_torque; - real_t area_angular_damp = 0.0; - real_t area_linear_damp = 0.0; - SelfList<GodotBody3D> active_list; SelfList<GodotBody3D> mass_properties_update_list; SelfList<GodotBody3D> direct_state_query_list; @@ -285,7 +289,6 @@ public: _FORCE_INLINE_ const Vector3 &get_inv_inertia() const { return _inv_inertia; } _FORCE_INLINE_ const Basis &get_inv_inertia_tensor() const { return _inv_inertia_tensor; } _FORCE_INLINE_ real_t get_friction() const { return friction; } - _FORCE_INLINE_ const Vector3 &get_gravity() const { return gravity; } _FORCE_INLINE_ real_t get_bounce() const { return bounce; } void set_axis_lock(PhysicsServer3D::BodyAxis p_axis, bool lock); diff --git a/servers/physics_3d/godot_body_direct_state_3d.cpp b/servers/physics_3d/godot_body_direct_state_3d.cpp index db09657f8a..9c234a5752 100644 --- a/servers/physics_3d/godot_body_direct_state_3d.cpp +++ b/servers/physics_3d/godot_body_direct_state_3d.cpp @@ -38,11 +38,11 @@ Vector3 GodotPhysicsDirectBodyState3D::get_total_gravity() const { } real_t GodotPhysicsDirectBodyState3D::get_total_angular_damp() const { - return body->area_angular_damp; + return body->total_angular_damp; } real_t GodotPhysicsDirectBodyState3D::get_total_linear_damp() const { - return body->area_linear_damp; + return body->total_linear_damp; } Vector3 GodotPhysicsDirectBodyState3D::get_center_of_mass() const { diff --git a/servers/physics_server_2d.cpp b/servers/physics_server_2d.cpp index a6cb7dbdd9..300f9c7d8b 100644 --- a/servers/physics_server_2d.cpp +++ b/servers/physics_server_2d.cpp @@ -758,10 +758,15 @@ void PhysicsServer2D::_bind_methods() { BIND_ENUM_CONSTANT(BODY_PARAM_INERTIA); BIND_ENUM_CONSTANT(BODY_PARAM_CENTER_OF_MASS); BIND_ENUM_CONSTANT(BODY_PARAM_GRAVITY_SCALE); + BIND_ENUM_CONSTANT(BODY_PARAM_LINEAR_DAMP_MODE); + BIND_ENUM_CONSTANT(BODY_PARAM_ANGULAR_DAMP_MODE); BIND_ENUM_CONSTANT(BODY_PARAM_LINEAR_DAMP); BIND_ENUM_CONSTANT(BODY_PARAM_ANGULAR_DAMP); BIND_ENUM_CONSTANT(BODY_PARAM_MAX); + BIND_ENUM_CONSTANT(BODY_DAMP_MODE_COMBINE); + BIND_ENUM_CONSTANT(BODY_DAMP_MODE_REPLACE); + BIND_ENUM_CONSTANT(BODY_STATE_TRANSFORM); BIND_ENUM_CONSTANT(BODY_STATE_LINEAR_VELOCITY); BIND_ENUM_CONSTANT(BODY_STATE_ANGULAR_VELOCITY); diff --git a/servers/physics_server_2d.h b/servers/physics_server_2d.h index f83c57407d..584da56c66 100644 --- a/servers/physics_server_2d.h +++ b/servers/physics_server_2d.h @@ -400,11 +400,18 @@ public: BODY_PARAM_INERTIA, BODY_PARAM_CENTER_OF_MASS, BODY_PARAM_GRAVITY_SCALE, + BODY_PARAM_LINEAR_DAMP_MODE, + BODY_PARAM_ANGULAR_DAMP_MODE, BODY_PARAM_LINEAR_DAMP, BODY_PARAM_ANGULAR_DAMP, BODY_PARAM_MAX, }; + enum BodyDampMode { + BODY_DAMP_MODE_COMBINE, + BODY_DAMP_MODE_REPLACE, + }; + virtual void body_set_param(RID p_body, BodyParameter p_param, const Variant &p_value) = 0; virtual Variant body_get_param(RID p_body, BodyParameter p_param) const = 0; @@ -692,12 +699,12 @@ VARIANT_ENUM_CAST(PhysicsServer2D::AreaParameter); VARIANT_ENUM_CAST(PhysicsServer2D::AreaSpaceOverrideMode); VARIANT_ENUM_CAST(PhysicsServer2D::BodyMode); VARIANT_ENUM_CAST(PhysicsServer2D::BodyParameter); +VARIANT_ENUM_CAST(PhysicsServer2D::BodyDampMode); VARIANT_ENUM_CAST(PhysicsServer2D::BodyState); VARIANT_ENUM_CAST(PhysicsServer2D::CCDMode); VARIANT_ENUM_CAST(PhysicsServer2D::JointParam); VARIANT_ENUM_CAST(PhysicsServer2D::JointType); VARIANT_ENUM_CAST(PhysicsServer2D::DampedSpringParam); -//VARIANT_ENUM_CAST( PhysicsServer2D::ObjectType ); VARIANT_ENUM_CAST(PhysicsServer2D::AreaBodyStatus); VARIANT_ENUM_CAST(PhysicsServer2D::ProcessInfo); diff --git a/servers/physics_server_3d.cpp b/servers/physics_server_3d.cpp index 90922cc250..c68cd7696b 100644 --- a/servers/physics_server_3d.cpp +++ b/servers/physics_server_3d.cpp @@ -863,10 +863,15 @@ void PhysicsServer3D::_bind_methods() { BIND_ENUM_CONSTANT(BODY_PARAM_INERTIA); BIND_ENUM_CONSTANT(BODY_PARAM_CENTER_OF_MASS); BIND_ENUM_CONSTANT(BODY_PARAM_GRAVITY_SCALE); + BIND_ENUM_CONSTANT(BODY_PARAM_LINEAR_DAMP_MODE); + BIND_ENUM_CONSTANT(BODY_PARAM_ANGULAR_DAMP_MODE); BIND_ENUM_CONSTANT(BODY_PARAM_LINEAR_DAMP); BIND_ENUM_CONSTANT(BODY_PARAM_ANGULAR_DAMP); BIND_ENUM_CONSTANT(BODY_PARAM_MAX); + BIND_ENUM_CONSTANT(BODY_DAMP_MODE_COMBINE); + BIND_ENUM_CONSTANT(BODY_DAMP_MODE_REPLACE); + BIND_ENUM_CONSTANT(BODY_STATE_TRANSFORM); BIND_ENUM_CONSTANT(BODY_STATE_LINEAR_VELOCITY); BIND_ENUM_CONSTANT(BODY_STATE_ANGULAR_VELOCITY); diff --git a/servers/physics_server_3d.h b/servers/physics_server_3d.h index 6f55e287c9..79369bd459 100644 --- a/servers/physics_server_3d.h +++ b/servers/physics_server_3d.h @@ -364,6 +364,11 @@ public: BODY_MODE_DYNAMIC_LINEAR, }; + enum BodyDampMode { + BODY_DAMP_MODE_COMBINE, + BODY_DAMP_MODE_REPLACE, + }; + virtual RID body_create() = 0; virtual void body_set_space(RID p_body, RID p_space) = 0; @@ -408,6 +413,8 @@ public: BODY_PARAM_INERTIA, BODY_PARAM_CENTER_OF_MASS, BODY_PARAM_GRAVITY_SCALE, + BODY_PARAM_LINEAR_DAMP_MODE, + BODY_PARAM_ANGULAR_DAMP_MODE, BODY_PARAM_LINEAR_DAMP, BODY_PARAM_ANGULAR_DAMP, BODY_PARAM_MAX, @@ -890,6 +897,7 @@ VARIANT_ENUM_CAST(PhysicsServer3D::AreaParameter); VARIANT_ENUM_CAST(PhysicsServer3D::AreaSpaceOverrideMode); VARIANT_ENUM_CAST(PhysicsServer3D::BodyMode); VARIANT_ENUM_CAST(PhysicsServer3D::BodyParameter); +VARIANT_ENUM_CAST(PhysicsServer3D::BodyDampMode); VARIANT_ENUM_CAST(PhysicsServer3D::BodyState); VARIANT_ENUM_CAST(PhysicsServer3D::BodyAxis); VARIANT_ENUM_CAST(PhysicsServer3D::PinJointParam); |