|
@@ -34,8 +34,8 @@
|
|
#include "scene/scene_string_names.h"
|
|
#include "scene/scene_string_names.h"
|
|
|
|
|
|
void PhysicsBody3D::_bind_methods() {
|
|
void PhysicsBody3D::_bind_methods() {
|
|
- ClassDB::bind_method(D_METHOD("move_and_collide", "distance", "test_only", "safe_margin", "recovery_as_collision", "max_collisions"), &PhysicsBody3D::_move, DEFVAL(false), DEFVAL(0.001), DEFVAL(false), DEFVAL(1));
|
|
|
|
- ClassDB::bind_method(D_METHOD("test_move", "from", "distance", "collision", "safe_margin", "recovery_as_collision", "max_collisions"), &PhysicsBody3D::test_move, DEFVAL(Variant()), DEFVAL(0.001), DEFVAL(false), DEFVAL(1));
|
|
|
|
|
|
+ ClassDB::bind_method(D_METHOD("move_and_collide", "motion", "test_only", "safe_margin", "recovery_as_collision", "max_collisions"), &PhysicsBody3D::_move, DEFVAL(false), DEFVAL(0.001), DEFVAL(false), DEFVAL(1));
|
|
|
|
+ ClassDB::bind_method(D_METHOD("test_move", "from", "motion", "collision", "safe_margin", "recovery_as_collision", "max_collisions"), &PhysicsBody3D::test_move, DEFVAL(Variant()), DEFVAL(0.001), DEFVAL(false), DEFVAL(1));
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("set_axis_lock", "axis", "lock"), &PhysicsBody3D::set_axis_lock);
|
|
ClassDB::bind_method(D_METHOD("set_axis_lock", "axis", "lock"), &PhysicsBody3D::set_axis_lock);
|
|
ClassDB::bind_method(D_METHOD("get_axis_lock", "axis"), &PhysicsBody3D::get_axis_lock);
|
|
ClassDB::bind_method(D_METHOD("get_axis_lock", "axis"), &PhysicsBody3D::get_axis_lock);
|
|
@@ -91,8 +91,8 @@ void PhysicsBody3D::remove_collision_exception_with(Node *p_node) {
|
|
PhysicsServer3D::get_singleton()->body_remove_collision_exception(get_rid(), collision_object->get_rid());
|
|
PhysicsServer3D::get_singleton()->body_remove_collision_exception(get_rid(), collision_object->get_rid());
|
|
}
|
|
}
|
|
|
|
|
|
-Ref<KinematicCollision3D> PhysicsBody3D::_move(const Vector3 &p_distance, bool p_test_only, real_t p_margin, bool p_recovery_as_collision, int p_max_collisions) {
|
|
|
|
- PhysicsServer3D::MotionParameters parameters(get_global_transform(), p_distance, p_margin);
|
|
|
|
|
|
+Ref<KinematicCollision3D> PhysicsBody3D::_move(const Vector3 &p_motion, bool p_test_only, real_t p_margin, bool p_recovery_as_collision, int p_max_collisions) {
|
|
|
|
+ PhysicsServer3D::MotionParameters parameters(get_global_transform(), p_motion, p_margin);
|
|
parameters.max_collisions = p_max_collisions;
|
|
parameters.max_collisions = p_max_collisions;
|
|
parameters.recovery_as_collision = p_recovery_as_collision;
|
|
parameters.recovery_as_collision = p_recovery_as_collision;
|
|
|
|
|
|
@@ -169,7 +169,7 @@ bool PhysicsBody3D::move_and_collide(const PhysicsServer3D::MotionParameters &p_
|
|
return colliding;
|
|
return colliding;
|
|
}
|
|
}
|
|
|
|
|
|
-bool PhysicsBody3D::test_move(const Transform3D &p_from, const Vector3 &p_distance, const Ref<KinematicCollision3D> &r_collision, real_t p_margin, bool p_recovery_as_collision, int p_max_collisions) {
|
|
|
|
|
|
+bool PhysicsBody3D::test_move(const Transform3D &p_from, const Vector3 &p_motion, const Ref<KinematicCollision3D> &r_collision, real_t p_margin, bool p_recovery_as_collision, int p_max_collisions) {
|
|
ERR_FAIL_COND_V(!is_inside_tree(), false);
|
|
ERR_FAIL_COND_V(!is_inside_tree(), false);
|
|
|
|
|
|
PhysicsServer3D::MotionResult *r = nullptr;
|
|
PhysicsServer3D::MotionResult *r = nullptr;
|
|
@@ -181,7 +181,7 @@ bool PhysicsBody3D::test_move(const Transform3D &p_from, const Vector3 &p_distan
|
|
r = &temp_result;
|
|
r = &temp_result;
|
|
}
|
|
}
|
|
|
|
|
|
- PhysicsServer3D::MotionParameters parameters(p_from, p_distance, p_margin);
|
|
|
|
|
|
+ PhysicsServer3D::MotionParameters parameters(p_from, p_motion, p_margin);
|
|
parameters.recovery_as_collision = p_recovery_as_collision;
|
|
parameters.recovery_as_collision = p_recovery_as_collision;
|
|
|
|
|
|
return PhysicsServer3D::get_singleton()->body_test_motion(get_rid(), parameters, r);
|
|
return PhysicsServer3D::get_singleton()->body_test_motion(get_rid(), parameters, r);
|