diff options
author | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2021-07-07 19:09:15 +0200 |
---|---|---|
committer | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2021-07-10 16:28:34 +0200 |
commit | f0a145bbf52b44c5e45ee292935163bc882fa063 (patch) | |
tree | 8916dffc139c16b29aae63d969ad897f81246fa1 /servers | |
parent | 56d712686496845cab3bfd6a6ed67e4efc2c39d5 (diff) |
Add a method to set the number of physics solver iterations in 3D
This is only for GodotPhysics, and adds a 3D counterpart to the 2D
method that was recently added.
Diffstat (limited to 'servers')
-rw-r--r-- | servers/physics_3d/physics_server_3d_sw.cpp | 4 | ||||
-rw-r--r-- | servers/physics_3d/physics_server_3d_sw.h | 2 | ||||
-rw-r--r-- | servers/physics_3d/physics_server_3d_wrap_mt.h | 1 | ||||
-rw-r--r-- | servers/physics_server_2d.h | 2 | ||||
-rw-r--r-- | servers/physics_server_3d.cpp | 2 | ||||
-rw-r--r-- | servers/physics_server_3d.h | 2 |
6 files changed, 12 insertions, 1 deletions
diff --git a/servers/physics_3d/physics_server_3d_sw.cpp b/servers/physics_3d/physics_server_3d_sw.cpp index f26129a404..c1a9d6259d 100644 --- a/servers/physics_3d/physics_server_3d_sw.cpp +++ b/servers/physics_3d/physics_server_3d_sw.cpp @@ -1584,6 +1584,10 @@ void PhysicsServer3DSW::set_active(bool p_active) { active = p_active; }; +void PhysicsServer3DSW::set_collision_iterations(int p_iterations) { + iterations = p_iterations; +}; + void PhysicsServer3DSW::init() { last_step = 0.001; iterations = 8; // 8? diff --git a/servers/physics_3d/physics_server_3d_sw.h b/servers/physics_3d/physics_server_3d_sw.h index 57b6385758..0ccd15fbb2 100644 --- a/servers/physics_3d/physics_server_3d_sw.h +++ b/servers/physics_3d/physics_server_3d_sw.h @@ -367,6 +367,8 @@ public: virtual void end_sync() override; virtual void finish() override; + virtual void set_collision_iterations(int p_iterations) override; + virtual bool is_flushing_queries() const override { return flushing_queries; } int get_process_info(ProcessInfo p_info) override; diff --git a/servers/physics_3d/physics_server_3d_wrap_mt.h b/servers/physics_3d/physics_server_3d_wrap_mt.h index bda2e30dd1..9beec22bcd 100644 --- a/servers/physics_3d/physics_server_3d_wrap_mt.h +++ b/servers/physics_3d/physics_server_3d_wrap_mt.h @@ -377,6 +377,7 @@ public: FUNC1(free, RID); FUNC1(set_active, bool); + FUNC1(set_collision_iterations, int); virtual void init() override; virtual void step(real_t p_step) override; diff --git a/servers/physics_server_2d.h b/servers/physics_server_2d.h index 6737aacaf0..e2bff2975e 100644 --- a/servers/physics_server_2d.h +++ b/servers/physics_server_2d.h @@ -564,7 +564,7 @@ public: virtual bool is_flushing_queries() const = 0; - virtual void set_collision_iterations(int iterations) = 0; + virtual void set_collision_iterations(int p_iterations) = 0; enum ProcessInfo { INFO_ACTIVE_OBJECTS, diff --git a/servers/physics_server_3d.cpp b/servers/physics_server_3d.cpp index 7a0253506c..3ed8841119 100644 --- a/servers/physics_server_3d.cpp +++ b/servers/physics_server_3d.cpp @@ -740,6 +740,8 @@ void PhysicsServer3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_active", "active"), &PhysicsServer3D::set_active); + ClassDB::bind_method(D_METHOD("set_collision_iterations", "iterations"), &PhysicsServer3D::set_collision_iterations); + ClassDB::bind_method(D_METHOD("get_process_info", "process_info"), &PhysicsServer3D::get_process_info); BIND_ENUM_CONSTANT(SHAPE_PLANE); diff --git a/servers/physics_server_3d.h b/servers/physics_server_3d.h index 78fc026747..17bae9a057 100644 --- a/servers/physics_server_3d.h +++ b/servers/physics_server_3d.h @@ -740,6 +740,8 @@ public: virtual bool is_flushing_queries() const = 0; + virtual void set_collision_iterations(int p_iterations) = 0; + enum ProcessInfo { INFO_ACTIVE_OBJECTS, INFO_COLLISION_PAIRS, |