b0b6e0e5f0
- Jolt does have solver priorities, now you can set them
40 lines
2.8 KiB
XML
40 lines
2.8 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="Joint3D" inherits="Node3D" api_type="core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
|
<brief_description>
|
|
Abstract base class for all 3D physics joints.
|
|
</brief_description>
|
|
<description>
|
|
Abstract base class for all joints in 3D physics. 3D joints bind together two physics bodies ([member node_a] and [member node_b]) and apply a constraint. If only one body is defined, it is attached to a fixed [StaticBody3D] without collision shapes.
|
|
</description>
|
|
<tutorials>
|
|
<link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
|
|
</tutorials>
|
|
<methods>
|
|
<method name="get_rid" qualifiers="const">
|
|
<return type="RID" />
|
|
<description>
|
|
Returns the joint's internal [RID] from the [PhysicsServer3D].
|
|
</description>
|
|
</method>
|
|
</methods>
|
|
<members>
|
|
<member name="exclude_nodes_from_collision" type="bool" setter="set_exclude_nodes_from_collision" getter="get_exclude_nodes_from_collision" default="true">
|
|
If [code]true[/code], the two bodies bound together do not collide with each other.
|
|
</member>
|
|
<member name="node_a" type="NodePath" setter="set_node_a" getter="get_node_a" default="NodePath("")">
|
|
Path to the first node (A) attached to the joint. The node must inherit [PhysicsBody3D].
|
|
If left empty and [member node_b] is set, the body is attached to a fixed [StaticBody3D] without collision shapes.
|
|
</member>
|
|
<member name="node_b" type="NodePath" setter="set_node_b" getter="get_node_b" default="NodePath("")">
|
|
Path to the second node (B) attached to the joint. The node must inherit [PhysicsBody3D].
|
|
If left empty and [member node_a] is set, the body is attached to a fixed [StaticBody3D] without collision shapes.
|
|
</member>
|
|
<member name="solver_priority" type="int" setter="set_solver_priority" getter="get_solver_priority" default="1">
|
|
The priority specifies how accurately a joint is solved. Generally, higher values improve accuracy. This has very different implementations between Godot Physics and Jolt Physics:
|
|
[b]Godot Physics:[/b] [i]Values above 1 have a performance impact[/i]. Joint is solved [code]max(1, solver_priority) * iterations[/code] times. A value of [code]4[/code] would solve the same joint [i]4x additional times per physics step[/i].
|
|
[b]Jolt Physics:[/b] Aside from sorting the joints, there is no performance impact with higher values. Joints with [i]high[/i] priorities are solved [i]later[/i]. A value of [code]4[/code] would solve [i]after priorities of 0, 1, 2, and 3[/i]. Later joints have the final say between the two bodies they connect.
|
|
Negative values are not allowed and will be silently [code]max(0, solver_priority)[/code] when set.
|
|
</member>
|
|
</members>
|
|
</class>
|