virtualx-engine/doc/classes/PhysicsDirectBodyState3D.xml
PouleyKetchoupp fc8c766ef9 Expose local center of mass in physics servers
Center of mass in body's local space is more useful than the transformed
one in some cases, like drawing its position for debug.

It's especially useful to get the generated local center of mass when
in auto mode (by default).

Physics Server BODY_PARAM_CENTER_OF_MASS:
Now always returns the local center of mass, instead of setting a local
center of mass and getting a transformed one.
This causes compatibility breaking, but it makes more sense for the
parameter to be consistent between getter and setter.

Direct Body State:
There are now two properties, because both of them can be useful in
different situations.
center_of_mass: relative position in global coordinates (same as before)
center_of_mass_local: position in local coordinates
2021-11-08 16:17:57 -07:00

197 lines
8.3 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<class name="PhysicsDirectBodyState3D" inherits="Object" version="4.0">
<brief_description>
Direct access object to a physics body in the [PhysicsServer3D].
</brief_description>
<description>
Provides direct access to a physics body in the [PhysicsServer3D], allowing safe changes to physics properties. This object is passed via the direct state callback of dynamic bodies, and is intended for changing the direct state of that body. See [method RigidDynamicBody3D._integrate_forces].
</description>
<tutorials>
<link title="Physics introduction">https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html</link>
<link title="Ray-casting">https://docs.godotengine.org/en/latest/tutorials/physics/ray-casting.html</link>
</tutorials>
<methods>
<method name="add_central_force">
<return type="void" />
<argument index="0" name="force" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Adds a constant directional force without affecting rotation.
This is equivalent to [code]add_force(force, Vector3(0,0,0))[/code].
</description>
</method>
<method name="add_force">
<return type="void" />
<argument index="0" name="force" type="Vector3" />
<argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Adds a positioned force to the body. Both the force and the offset from the body origin are in global coordinates.
</description>
</method>
<method name="add_torque">
<return type="void" />
<argument index="0" name="torque" type="Vector3" />
<description>
Adds a constant rotational force without affecting position.
</description>
</method>
<method name="apply_central_impulse">
<return type="void" />
<argument index="0" name="impulse" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Applies a single directional impulse without affecting rotation.
This is equivalent to [code]apply_impulse(Vector3(0, 0, 0), impulse)[/code].
</description>
</method>
<method name="apply_impulse">
<return type="void" />
<argument index="0" name="impulse" type="Vector3" />
<argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Applies a positioned impulse to the body. An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason it should only be used when simulating one-time impacts. The position uses the rotation of the global coordinate system, but is centered at the object's origin.
</description>
</method>
<method name="apply_torque_impulse">
<return type="void" />
<argument index="0" name="impulse" type="Vector3" />
<description>
Apply a torque impulse (which will be affected by the body mass and shape). This will rotate the body around the vector [code]j[/code] passed as parameter.
</description>
</method>
<method name="get_contact_collider" qualifiers="const">
<return type="RID" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's [RID].
</description>
</method>
<method name="get_contact_collider_id" qualifiers="const">
<return type="int" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's object id.
</description>
</method>
<method name="get_contact_collider_object" qualifiers="const">
<return type="Object" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider object.
</description>
</method>
<method name="get_contact_collider_position" qualifiers="const">
<return type="Vector3" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the contact position in the collider.
</description>
</method>
<method name="get_contact_collider_shape" qualifiers="const">
<return type="int" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's shape index.
</description>
</method>
<method name="get_contact_collider_velocity_at_position" qualifiers="const">
<return type="Vector3" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the linear velocity vector at the collider's contact point.
</description>
</method>
<method name="get_contact_count" qualifiers="const">
<return type="int" />
<description>
Returns the number of contacts this body has with other bodies.
[b]Note:[/b] By default, this returns 0 unless bodies are configured to monitor contacts. See [member RigidDynamicBody3D.contact_monitor].
</description>
</method>
<method name="get_contact_impulse" qualifiers="const">
<return type="float" />
<argument index="0" name="contact_idx" type="int" />
<description>
Impulse created by the contact. Only implemented for Bullet physics.
</description>
</method>
<method name="get_contact_local_normal" qualifiers="const">
<return type="Vector3" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the local normal at the contact point.
</description>
</method>
<method name="get_contact_local_position" qualifiers="const">
<return type="Vector3" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the local position of the contact point.
</description>
</method>
<method name="get_contact_local_shape" qualifiers="const">
<return type="int" />
<argument index="0" name="contact_idx" type="int" />
<description>
Returns the local shape index of the collision.
</description>
</method>
<method name="get_space_state">
<return type="PhysicsDirectSpaceState3D" />
<description>
Returns the current state of the space, useful for queries.
</description>
</method>
<method name="get_velocity_at_local_position" qualifiers="const">
<return type="Vector3" />
<argument index="0" name="local_position" type="Vector3" />
<description>
Returns the body's velocity at the given relative position, including both translation and rotation.
</description>
</method>
<method name="integrate_forces">
<return type="void" />
<description>
Calls the built-in force integration code.
</description>
</method>
</methods>
<members>
<member name="angular_velocity" type="Vector3" setter="set_angular_velocity" getter="get_angular_velocity">
The body's rotational velocity.
</member>
<member name="center_of_mass" type="Vector3" setter="" getter="get_center_of_mass">
The body's center of mass position relative to the body's center in the global coordinate system.
</member>
<member name="center_of_mass_local" type="Vector3" setter="" getter="get_center_of_mass_local">
The body's center of mass position in the body's local coordinate system.
</member>
<member name="inverse_inertia" type="Vector3" setter="" getter="get_inverse_inertia">
The inverse of the inertia of the body.
</member>
<member name="inverse_mass" type="float" setter="" getter="get_inverse_mass">
The inverse of the mass of the body.
</member>
<member name="linear_velocity" type="Vector3" setter="set_linear_velocity" getter="get_linear_velocity">
The body's linear velocity.
</member>
<member name="principal_inertia_axes" type="Basis" setter="" getter="get_principal_inertia_axes">
</member>
<member name="sleeping" type="bool" setter="set_sleep_state" getter="is_sleeping">
If [code]true[/code], this body is currently sleeping (not active).
</member>
<member name="step" type="float" setter="" getter="get_step">
The timestep (delta) used for the simulation.
</member>
<member name="total_angular_damp" type="float" setter="" getter="get_total_angular_damp">
The rate at which the body stops rotating, if there are not any other forces moving it.
</member>
<member name="total_gravity" type="Vector3" setter="" getter="get_total_gravity">
The total gravity vector being currently applied to this body.
</member>
<member name="total_linear_damp" type="float" setter="" getter="get_total_linear_damp">
The rate at which the body stops moving, if there are not any other forces moving it.
</member>
<member name="transform" type="Transform3D" setter="set_transform" getter="get_transform">
The body's transformation matrix.
</member>
</members>
</class>