Skip to content

Commit

Permalink
Merge pull request #53498 from nekomatata/body-test-motion-thread-saf…
Browse files Browse the repository at this point in the history
…e-3.x

[3.x] Make body_test_motion thread safe for multi-threaded physics
  • Loading branch information
akien-mga authored Oct 7, 2021
2 parents e1de198 + 11aeaaa commit 26aefbb
Showing 1 changed file with 2 additions and 9 deletions.
11 changes: 2 additions & 9 deletions servers/physics_2d/physics_2d_server_wrap_mt.h
Original file line number Diff line number Diff line change
Expand Up @@ -251,15 +251,8 @@ class Physics2DServerWrapMT : public Physics2DServer {

FUNC2(body_set_pickable, RID, bool);

bool body_test_motion(RID p_body, const Transform2D &p_from, const Vector2 &p_motion, bool p_infinite_inertia, real_t p_margin = 0.08, MotionResult *r_result = nullptr, bool p_exclude_raycast_shapes = true, const Set<RID> &p_exclude = Set<RID>()) {
ERR_FAIL_COND_V(main_thread != Thread::get_caller_id(), false);
return physics_2d_server->body_test_motion(p_body, p_from, p_motion, p_infinite_inertia, p_margin, r_result, p_exclude_raycast_shapes, p_exclude);
}

int body_test_ray_separation(RID p_body, const Transform2D &p_transform, bool p_infinite_inertia, Vector2 &r_recover_motion, SeparationResult *r_results, int p_result_max, float p_margin = 0.08) {
ERR_FAIL_COND_V(main_thread != Thread::get_caller_id(), false);
return physics_2d_server->body_test_ray_separation(p_body, p_transform, p_infinite_inertia, r_recover_motion, r_results, p_result_max, p_margin);
}
FUNC8R(bool, body_test_motion, RID, const Transform2D &, const Vector2 &, bool, real_t, MotionResult *, bool, const Set<RID> &);
FUNC7R(int, body_test_ray_separation, RID, const Transform2D &, bool, Vector2 &, SeparationResult *, int, float);

// this function only works on physics process, errors and returns null otherwise
Physics2DDirectBodyState *body_get_direct_state(RID p_body) {
Expand Down

0 comments on commit 26aefbb

Please sign in to comment.