summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <remi@verschelde.fr>2022-03-04 12:25:36 +0100
committerGitHub <noreply@github.com>2022-03-04 12:25:36 +0100
commit0ff45dd3a7ff28b7fb686cb6e8640926f885038a (patch)
tree525367bb4fdc1b804d16de6bef13b90281c2a0df
parent7de48982fed1bcc60ae3f4a9a08d04b167b26356 (diff)
parent4219485a827ff37dc25c72786c8786962e5b55f2 (diff)
Merge pull request #58673 from Calinou/smooth-trimesh-collision-always-setting
-rw-r--r--core/config/project_settings.cpp3
-rw-r--r--doc/classes/ProjectSettings.xml4
-rw-r--r--modules/bullet/shape_bullet.cpp2
3 files changed, 8 insertions, 1 deletions
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp
index 3a7fc828aa..c9b615fb0a 100644
--- a/core/config/project_settings.cpp
+++ b/core/config/project_settings.cpp
@@ -1240,6 +1240,9 @@ ProjectSettings::ProjectSettings() {
custom_prop_info["rendering/driver/threads/thread_model"] = PropertyInfo(Variant::INT, "rendering/driver/threads/thread_model", PROPERTY_HINT_ENUM, "Single-Unsafe,Single-Safe,Multi-Threaded");
GLOBAL_DEF("physics/2d/run_on_separate_thread", false);
GLOBAL_DEF("physics/3d/run_on_separate_thread", false);
+ // Required to make the project setting appear even if the physics engine is GodotPhysics,
+ // while also making it appear in the ProjectSettings class documentation.
+ GLOBAL_DEF("physics/3d/smooth_trimesh_collision", false);
GLOBAL_DEF("debug/settings/profiler/max_functions", 16384);
custom_prop_info["debug/settings/profiler/max_functions"] = PropertyInfo(Variant::INT, "debug/settings/profiler/max_functions", PROPERTY_HINT_RANGE, "128,65535,1");
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index a3810bb575..be2c1ad372 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -1504,6 +1504,10 @@
<member name="physics/3d/sleep_threshold_linear" type="float" setter="" getter="" default="0.1">
Threshold linear velocity under which a 3D physics body will be considered inactive. See [constant PhysicsServer3D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD].
</member>
+ <member name="physics/3d/smooth_trimesh_collision" type="bool" setter="" getter="" default="false">
+ If [code]true[/code], smooths out collision with trimesh shapes ([ConcavePolygonShape3D]) by telling the Bullet physics engine to generate internal edge information for every trimesh shape created.
+ [b]Note:[/b] Only effective if [member physics/3d/physics_engine] is set to [code]Bullet[/code], [i]not[/i] [code]DEFAULT[/code] or [code]GodotPhysics[/code].
+ </member>
<member name="physics/3d/solver/contact_max_allowed_penetration" type="float" setter="" getter="" default="0.01">
Maximum distance a shape can penetrate another shape before it is considered a collision. See [constant PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION].
</member>
diff --git a/modules/bullet/shape_bullet.cpp b/modules/bullet/shape_bullet.cpp
index 77a583ad86..cf6bcb6c85 100644
--- a/modules/bullet/shape_bullet.cpp
+++ b/modules/bullet/shape_bullet.cpp
@@ -422,7 +422,7 @@ void ConcavePolygonShapeBullet::setup(Vector<Vector3> p_faces) {
meshShape = bulletnew(btBvhTriangleMeshShape(shapeInterface, useQuantizedAabbCompression));
- if (GLOBAL_DEF("physics/3d/smooth_trimesh_collision", false)) {
+ if (GLOBAL_GET("physics/3d/smooth_trimesh_collision")) {
btTriangleInfoMap *triangleInfoMap = new btTriangleInfoMap();
btGenerateInternalEdgeInfo(meshShape, triangleInfoMap);
}