Age | Commit message (Collapse) | Author |
|
Use wakeup() function to wake sleeping bodies on impulse, force and velocities. Fix for PR #52967
|
|
direct body state changes (forces, impulses and veloicities). this 'bug' was introduced in PR #52967
added wakeup to 2d direct body
|
|
|
|
-Physics servers test body motion use a class to hold parameters instead
of multiple arguments to make it more readable and flexible since there
are many options
-Improved documentation for test body motion and kinematic collision
-Removed read-only properties for body motion results (not handled in
scripts, so they should be get_ methods only instead)
|
|
|
|
|
|
Replaced Mesh with mesh RID in Godot Physics 3D and Bullet.
|
|
|
|
Shape metadata was only used to get tile information when colliding with
tilemaps. It's not needed anymore since there's an API in tilemap using
body ids instead.
|
|
|
|
|
|
Clarify RigidDynamicBody modes
|
|
|
|
Allows 2D character controller to work without applying gravity when
touching the ground (also more safely in 3D), and collision detection
is more flexible with different safe margin values.
Character body motion changes in 2D and 3D:
-Recovery only for depth > min contact depth to help with collision
detection consistency (rest info could be lost if recovery was too much)
-Adaptive min contact depth (based on margin) instead of space parameter
Extra CharacterBody changes:
-2D: apply changes made in 3D for stop on slope and floor snap that help
fixing some jittering cases
-3D: fix minor inconsistencies in stop on slope and floor snap logic
|
|
|
|
Co-authored-by: Camille Mohr-Daurat <pouleyketchoup@gmail.com>
|
|
|
|
|
|
RigidDynamicBody modes are replaced with several properties to make their
usage clearer:
-lock_rotation: disable body's rotation (instead of MODE_LOCKED)
-freeze: no gravity or forces (instead of MODE_STATIC and MODE_KINEMATIC)
-freeze_mode: Static (can be only teleported) or Kinematic (can be animated)
Also renamed MODE_DYNAMIC_LOCKED to MODE_DYNAMIC_LINEAR in the physics
servers.
|
|
Initialize variables in servers/physics
|
|
Rename WorldMarginShape to WorldBoundaryShape
|
|
|
|
|
|
|
|
Port raycast accelerator from Bullet's btHeightfieldTerrainShape.
|
|
Changes:
-Added support for custom inertia and center of mass in 3D
-Added support for custom center of mass in 2D
-Calculated center of mass from shapes in 2D (same as in 3D)
-Fixed mass properties calculation with disabled shapes in 2D/3D
-Removed first_integration which is not used in 2D and doesn't seem to
make a lot of sense (prevents omit_force_integration to work during the
first frame)
-Support for custom inertia on different axes for RigidBody3D
|
|
Harmonize default value for collision mask in ray/shape queries
|
|
Instead of having a physics node named Static that can be either Static
or Kinematic, AnimatableBody is added again as a separate node:
-Inherited from StaticBody to make its usage clearer
-Still separated from CharacterBody to make its usage more focused
Properly implemented constant velocity for kinematic bodies in godot
physics servers (induced velocity without actually moving).
Also updated description for the different physics nodes to make their
usage clearer.
|
|
Clean physics direct body state usage in 2D and 3D physics
|
|
The default mask for queries was 0, 0x7FFFFFFF or 0xFFFFFFFF depending
on the cases.
Now always using 0xFFFFFFFF (in the form of UINT32_MAX to make it clear)
in order to use all layers by default.
|
|
Fix point gravity calculation
|
|
Whenever contact points are not needed, collision checks with concave
shapes (triangle mesh and heightmap) stop at the first colliding
triangle.
|
|
Refactor RayShape and rename to SeparationRayShape
|
|
One-directional layer check for Area vs. RigidBody/SoftBody/Area
|
|
Use a C++ callback instead of Callable for synchronizing physics nodes' state with physics servers.
Remove usage of PhysicsDirectBodyState in physics nodes when not
necessary.
Store PhysicsDirectBodyState for bodies individually instead of a
singleton to avoid issues when accessing direct body state for multiple
bodies.
PhysicsDirectBodyState is initialized only when needed, so it doesn't
have to be created when using the physics server directly.
Move PhysicsDirectBodyState2D and PhysicsDirectBodyState3D to separate
cpp files.
|
|
Makes it clearer that it's used for special cases when picking a
collision shape.
|
|
Also added some precision to the documentation.
|
|
Make separation ray shapes work properly in move_and_slide, wihtout the
specific code in CharacterBody like before.
Now most of the logic is handled inside the physics server. The only
thing that's needed is to use ray shapes only for recovery and ignore
them when performing the motion itself (unless we're snapping or slips
on slope is on).
|
|
One-way collision is disabled for both rigid bodies and character
bodies.
Kinematic margin is now applied to ray shapes to help getting consistent
results in slopes and flat surfaces.
Convex shapes don't return inverted normals when a segment test starts
inside (raycasting will be made consistent in a separate patch).
Ray shapes also discard contacts when fully contained inside a shape
and when the contact direction is inverted, so the behavior is
consistent with all shape types. Now they always separate only when
intersecting the top of a shape (for downward rays).
|
|
Partial revert from previously removing ray shapes completely, added
back as a shape type but without the specific character controller code.
|
|
Removing the + 1 in point gravity formula when using distance scale to
make it more accurate for standard gravitation.
Fixes precession in orbits for games using gravitation.
Also moved gravity calculation to area to use it for both rigid bodies
and soft bodies in 3D (same change in 2D for consistency).
Co-authored-by: Ryan Peach <ryan.peach@keysight.com>
|
|
Created an area-specific wind force that interacts with soft bodies
|
|
|
|
|
|
|
|
Same thing that was already done for rigid body and character body
collision detection.
|
|
|
|
API improvement on the physics (CharacterBody and related classes)
|
|
gravity for soft bodies.
|
|
Changes:
- Rename few methods/property and group them in the editor when it's possible
- Make MotionResult API consistency with KinematicCollision
- Return a boolean in move_and_slide if there was a collision
- New methods:
- get_floor_angle on CharacterBody to get the floor angle.
- get_angle on KinematicCollision to get the collision angle.
- get_last_slide_collision to quickly get the latest collision of move_and_slide.
|