diff options
| author | Juan Linietsky <reduzio@gmail.com> | 2018-07-16 20:04:07 -0300 |
|---|---|---|
| committer | Juan Linietsky <reduzio@gmail.com> | 2018-07-16 20:04:07 -0300 |
| commit | 063a22851a4cc1568623363140e16bbaecfd7ec9 (patch) | |
| tree | 4d0854d76ac4b3208407bcc0d459ce9142496063 /scene/2d/physics_body_2d.h | |
| parent | de910f8c26407ea37b97a94a6fb1a8731d3694c6 (diff) | |
| download | redot-engine-063a22851a4cc1568623363140e16bbaecfd7ec9.tar.gz | |
-Added support for raycast in KinematicBody2D
-Added support for snapping in KinematicBody2D
Diffstat (limited to 'scene/2d/physics_body_2d.h')
| -rw-r--r-- | scene/2d/physics_body_2d.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h index 0fda3c5c05..5ab07cc754 100644 --- a/scene/2d/physics_body_2d.h +++ b/scene/2d/physics_body_2d.h @@ -290,26 +290,29 @@ private: bool on_floor; bool on_ceiling; bool on_wall; + bool snapped; Vector<Collision> colliders; Vector<Ref<KinematicCollision2D> > slide_colliders; Ref<KinematicCollision2D> motion_cache; _FORCE_INLINE_ bool _ignores_mode(Physics2DServer::BodyMode) const; - Ref<KinematicCollision2D> _move(const Vector2 &p_motion, bool p_infinite_inertia = true); + Ref<KinematicCollision2D> _move(const Vector2 &p_motion, bool p_infinite_inertia = true, bool p_exclude_raycast_shapes = true, bool p_only_move_if_collided = false, float p_custom_margin = -1); Ref<KinematicCollision2D> _get_slide_collision(int p_bounce); protected: static void _bind_methods(); public: - bool move_and_collide(const Vector2 &p_motion, bool p_infinite_inertia, Collision &r_collision); + bool move_and_collide(const Vector2 &p_motion, bool p_infinite_inertia, Collision &r_collision, bool p_exclude_raycast_shapes = true, bool p_only_move_if_collided = false, float p_custom_margin = -1); bool test_move(const Transform2D &p_from, const Vector2 &p_motion, bool p_infinite_inertia); + bool separate_raycast_shapes(bool p_infinite_inertia, Collision &r_collision); + void set_safe_margin(float p_margin); float get_safe_margin() const; - Vector2 move_and_slide(const Vector2 &p_linear_velocity, const Vector2 &p_floor_direction = Vector2(0, 0), bool p_infinite_inertia = true, float p_slope_stop_min_velocity = 5, int p_max_slides = 4, float p_floor_max_angle = Math::deg2rad((float)45)); + Vector2 move_and_slide(const Vector2 &p_linear_velocity, const Vector2 &p_floor_direction = Vector2(0, 0), bool p_infinite_inertia = true, float p_slope_stop_min_velocity = 5, int p_max_slides = 4, float p_floor_max_angle = Math::deg2rad((float)45), const Vector2 &p_snap = Vector2()); bool is_on_floor() const; bool is_on_wall() const; bool is_on_ceiling() const; |
