diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-03-04 12:25:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-04 12:25:36 +0100 |
commit | 0ff45dd3a7ff28b7fb686cb6e8640926f885038a (patch) | |
tree | 525367bb4fdc1b804d16de6bef13b90281c2a0df | |
parent | 7de48982fed1bcc60ae3f4a9a08d04b167b26356 (diff) | |
parent | 4219485a827ff37dc25c72786c8786962e5b55f2 (diff) |
Merge pull request #58673 from Calinou/smooth-trimesh-collision-always-setting
-rw-r--r-- | core/config/project_settings.cpp | 3 | ||||
-rw-r--r-- | doc/classes/ProjectSettings.xml | 4 | ||||
-rw-r--r-- | modules/bullet/shape_bullet.cpp | 2 |
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); } |