Improve RigidDynamicBody force and torque API

Makes the API for forces and impulses more flexible, easier to
understand and harmonized between 2D and 3D.

Rigid bodies now have 3 sets of methods for forces and impulses:
-apply_impulse() for impulses (one-shot and time independent)
-apply_force() for forces (time dependent) applied for the current step
-add_constant_force() for forces that keeps being applied each step

Also updated the documentation to clarify the different methods and
parameters in rigid body nodes, body direct state and physics servers.
This commit is contained in:
PouleyKetchoupp 2021-12-07 18:09:54 -07:00
parent e69fa16eb3
commit 940f3fde5c
28 changed files with 1082 additions and 395 deletions

View file

@ -61,13 +61,24 @@ public:
virtual Vector2 get_velocity_at_local_position(const Vector2 &p_position) const override;
virtual void add_central_force(const Vector2 &p_force) override;
virtual void add_force(const Vector2 &p_force, const Vector2 &p_position = Vector2()) override;
virtual void add_torque(real_t p_torque) override;
virtual void apply_central_impulse(const Vector2 &p_impulse) override;
virtual void apply_impulse(const Vector2 &p_impulse, const Vector2 &p_position = Vector2()) override;
virtual void apply_torque_impulse(real_t p_torque) override;
virtual void apply_central_force(const Vector2 &p_force) override;
virtual void apply_force(const Vector2 &p_force, const Vector2 &p_position = Vector2()) override;
virtual void apply_torque(real_t p_torque) override;
virtual void add_constant_central_force(const Vector2 &p_force) override;
virtual void add_constant_force(const Vector2 &p_force, const Vector2 &p_position = Vector2()) override;
virtual void add_constant_torque(real_t p_torque) override;
virtual void set_constant_force(const Vector2 &p_force) override;
virtual Vector2 get_constant_force() const override;
virtual void set_constant_torque(real_t p_torque) override;
virtual real_t get_constant_torque() const override;
virtual void set_sleep_state(bool p_enable) override;
virtual bool is_sleeping() const override;