|
@@ -273,6 +273,10 @@ public:
|
|
|
void integrate_forces(real_t p_step);
|
|
|
void integrate_velocities(real_t p_step);
|
|
|
|
|
|
+ _FORCE_INLINE_ Vector2 get_velocity_in_local_point(const Vector2 &rel_pos) const {
|
|
|
+ return linear_velocity + Vector2(-angular_velocity * rel_pos.y, angular_velocity * rel_pos.x);
|
|
|
+ }
|
|
|
+
|
|
|
_FORCE_INLINE_ Vector2 get_motion() const {
|
|
|
if (mode > Physics2DServer::BODY_MODE_KINEMATIC) {
|
|
|
return new_transform.get_origin() - get_transform().get_origin();
|
|
@@ -359,6 +363,8 @@ public:
|
|
|
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); }
|