Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added wakeup to 2D and 3D body impulse and force functions. #53113

Merged
merged 1 commit into from
Sep 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 32 additions & 8 deletions servers/physics/body_sw.h
Original file line number Diff line number Diff line change
Expand Up @@ -393,23 +393,47 @@ class PhysicsDirectBodyStateSW : public PhysicsDirectBodyState {
virtual Vector3 get_inverse_inertia() const { return body->get_inv_inertia(); } // get density of this body space
virtual Basis get_inverse_inertia_tensor() const { return body->get_inv_inertia_tensor(); } // get density of this body space

virtual void set_linear_velocity(const Vector3 &p_velocity) { body->set_linear_velocity(p_velocity); }
virtual void set_linear_velocity(const Vector3 &p_velocity) {
body->wakeup();
body->set_linear_velocity(p_velocity);
}
virtual Vector3 get_linear_velocity() const { return body->get_linear_velocity(); }

virtual void set_angular_velocity(const Vector3 &p_velocity) { body->set_angular_velocity(p_velocity); }
virtual void set_angular_velocity(const Vector3 &p_velocity) {
body->wakeup();
body->set_angular_velocity(p_velocity);
}
virtual Vector3 get_angular_velocity() const { return body->get_angular_velocity(); }

virtual void set_transform(const Transform &p_transform) { body->set_state(PhysicsServer::BODY_STATE_TRANSFORM, p_transform); }
virtual Transform get_transform() const { return body->get_transform(); }

virtual Vector3 get_velocity_at_local_position(const Vector3 &p_position) const { return body->get_velocity_in_local_point(p_position); }

virtual void add_central_force(const Vector3 &p_force) { body->add_central_force(p_force); }
virtual void add_force(const Vector3 &p_force, const Vector3 &p_pos) { body->add_force(p_force, p_pos); }
virtual void add_torque(const Vector3 &p_torque) { body->add_torque(p_torque); }
virtual void apply_central_impulse(const Vector3 &p_j) { body->apply_central_impulse(p_j); }
virtual void apply_impulse(const Vector3 &p_pos, const Vector3 &p_j) { body->apply_impulse(p_pos, p_j); }
virtual void apply_torque_impulse(const Vector3 &p_j) { body->apply_torque_impulse(p_j); }
virtual void add_central_force(const Vector3 &p_force) {
body->wakeup();
body->add_central_force(p_force);
}
virtual void add_force(const Vector3 &p_force, const Vector3 &p_pos) {
body->wakeup();
body->add_force(p_force, p_pos);
}
virtual void add_torque(const Vector3 &p_torque) {
body->wakeup();
body->add_torque(p_torque);
}
virtual void apply_central_impulse(const Vector3 &p_j) {
body->wakeup();
body->apply_central_impulse(p_j);
}
virtual void apply_impulse(const Vector3 &p_pos, const Vector3 &p_j) {
body->wakeup();
body->apply_impulse(p_pos, p_j);
}
virtual void apply_torque_impulse(const Vector3 &p_j) {
body->wakeup();
body->apply_torque_impulse(p_j);
}

virtual void set_sleep_state(bool p_enable) { body->set_active(!p_enable); }
virtual bool is_sleeping() const { return !body->is_active(); }
Expand Down
40 changes: 32 additions & 8 deletions servers/physics_2d/body_2d_sw.h
Original file line number Diff line number Diff line change
Expand Up @@ -354,23 +354,47 @@ class Physics2DDirectBodyStateSW : public Physics2DDirectBodyState {
virtual real_t get_inverse_mass() const { return body->get_inv_mass(); } // get the mass
virtual real_t get_inverse_inertia() const { return body->get_inv_inertia(); } // get density of this body space

virtual void set_linear_velocity(const Vector2 &p_velocity) { body->set_linear_velocity(p_velocity); }
virtual void set_linear_velocity(const Vector2 &p_velocity) {
body->wakeup();
body->set_linear_velocity(p_velocity);
}
virtual Vector2 get_linear_velocity() const { return body->get_linear_velocity(); }

virtual void set_angular_velocity(real_t p_velocity) { body->set_angular_velocity(p_velocity); }
virtual void set_angular_velocity(real_t p_velocity) {
body->wakeup();
body->set_angular_velocity(p_velocity);
}
virtual real_t get_angular_velocity() const { return body->get_angular_velocity(); }

virtual void set_transform(const Transform2D &p_transform) { body->set_state(Physics2DServer::BODY_STATE_TRANSFORM, p_transform); }
virtual Transform2D get_transform() const { return body->get_transform(); }

virtual Vector2 get_velocity_at_local_position(const Vector2 &p_position) const { return body->get_velocity_in_local_point(p_position); }

virtual void add_central_force(const Vector2 &p_force) { body->add_central_force(p_force); }
virtual void add_force(const Vector2 &p_offset, const Vector2 &p_force) { body->add_force(p_offset, p_force); }
virtual void add_torque(real_t p_torque) { body->add_torque(p_torque); }
virtual void apply_central_impulse(const Vector2 &p_impulse) { body->apply_central_impulse(p_impulse); }
virtual void apply_impulse(const Vector2 &p_offset, const Vector2 &p_force) { body->apply_impulse(p_offset, p_force); }
virtual void apply_torque_impulse(real_t p_torque) { body->apply_torque_impulse(p_torque); }
virtual void add_central_force(const Vector2 &p_force) {
body->wakeup();
body->add_central_force(p_force);
}
virtual void add_force(const Vector2 &p_offset, const Vector2 &p_force) {
body->wakeup();
body->add_force(p_offset, p_force);
}
virtual void add_torque(real_t p_torque) {
body->wakeup();
body->add_torque(p_torque);
}
virtual void apply_central_impulse(const Vector2 &p_impulse) {
body->wakeup();
body->apply_central_impulse(p_impulse);
}
virtual void apply_impulse(const Vector2 &p_offset, const Vector2 &p_force) {
body->wakeup();
body->apply_impulse(p_offset, p_force);
}
virtual void apply_torque_impulse(real_t p_torque) {
body->wakeup();
body->apply_torque_impulse(p_torque);
}

virtual void set_sleep_state(bool p_enable) { body->set_active(!p_enable); }
virtual bool is_sleeping() const { return !body->is_active(); }
Expand Down