diff options
Diffstat (limited to 'scene/2d/physics_body_2d.h')
-rw-r--r-- | scene/2d/physics_body_2d.h | 86 |
1 files changed, 31 insertions, 55 deletions
diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h index 5b7db35fe8..e51b512302 100644 --- a/scene/2d/physics_body_2d.h +++ b/scene/2d/physics_body_2d.h @@ -33,57 +33,52 @@ #include "servers/physics_2d_server.h" #include "vset.h" - class PhysicsBody2D : public CollisionObject2D { - GDCLASS(PhysicsBody2D,CollisionObject2D); + GDCLASS(PhysicsBody2D, CollisionObject2D); uint32_t mask; uint32_t collision_mask; Vector2 one_way_collision_direction; float one_way_collision_max_depth; - void _set_layers(uint32_t p_mask); uint32_t _get_layers() const; protected: - void _notification(int p_what); PhysicsBody2D(Physics2DServer::BodyMode p_mode); static void _bind_methods(); -public: +public: void set_collision_layer(uint32_t p_mask); uint32_t get_collision_layer() const; void set_collision_mask(uint32_t p_mask); uint32_t get_collision_mask() const; - void set_collision_mask_bit(int p_bit, bool p_value); bool get_collision_mask_bit(int p_bit) const; void set_collision_layer_bit(int p_bit, bool p_value); bool get_collision_layer_bit(int p_bit) const; - void add_collision_exception_with(Node* p_node); //must be physicsbody - void remove_collision_exception_with(Node* p_node); + void add_collision_exception_with(Node *p_node); //must be physicsbody + void remove_collision_exception_with(Node *p_node); - void set_one_way_collision_direction(const Vector2& p_dir); + void set_one_way_collision_direction(const Vector2 &p_dir); Vector2 get_one_way_collision_direction() const; void set_one_way_collision_max_depth(float p_dir); float get_one_way_collision_max_depth() const; PhysicsBody2D(); - }; class StaticBody2D : public PhysicsBody2D { - GDCLASS(StaticBody2D,PhysicsBody2D); + GDCLASS(StaticBody2D, PhysicsBody2D); Vector2 constant_linear_velocity; real_t constant_angular_velocity; @@ -91,21 +86,17 @@ class StaticBody2D : public PhysicsBody2D { real_t bounce; real_t friction; - protected: - static void _bind_methods(); public: - void set_friction(real_t p_friction); real_t get_friction() const; void set_bounce(real_t p_bounce); real_t get_bounce() const; - - void set_constant_linear_velocity(const Vector2& p_vel); + void set_constant_linear_velocity(const Vector2 &p_vel); void set_constant_angular_velocity(real_t p_vel); Vector2 get_constant_linear_velocity() const; @@ -113,14 +104,13 @@ public: StaticBody2D(); ~StaticBody2D(); - }; class RigidBody2D : public PhysicsBody2D { - GDCLASS(RigidBody2D,PhysicsBody2D); -public: + GDCLASS(RigidBody2D, PhysicsBody2D); +public: enum Mode { MODE_RIGID, MODE_STATIC, @@ -135,7 +125,6 @@ public: }; private: - bool can_sleep; Physics2DDirectBodyState *state; Mode mode; @@ -151,35 +140,34 @@ private: real_t angular_velocity; bool sleeping; - int max_contacts_reported; bool custom_integrator; CCDMode ccd_mode; - struct ShapePair { int body_shape; int local_shape; bool tagged; - bool operator<(const ShapePair& p_sp) const { - if (body_shape==p_sp.body_shape) + bool operator<(const ShapePair &p_sp) const { + if (body_shape == p_sp.body_shape) return local_shape < p_sp.local_shape; else return body_shape < p_sp.body_shape; } ShapePair() {} - ShapePair(int p_bs, int p_ls) { body_shape=p_bs; local_shape=p_ls; } + ShapePair(int p_bs, int p_ls) { + body_shape = p_bs; + local_shape = p_ls; + } }; struct RigidBody2D_RemoveAction { - ObjectID body_id; ShapePair pair; - }; struct BodyState { @@ -191,26 +179,22 @@ private: struct ContactMonitor { bool locked; - Map<ObjectID,BodyState> body_map; - + Map<ObjectID, BodyState> body_map; }; - ContactMonitor *contact_monitor; void _body_enter_tree(ObjectID p_id); void _body_exit_tree(ObjectID p_id); - - void _body_inout(int p_status, ObjectID p_instance, int p_body_shape,int p_local_shape); + void _body_inout(int p_status, ObjectID p_instance, int p_body_shape, int p_local_shape); void _direct_state_changed(Object *p_state); - bool _test_motion(const Vector2& p_motion,float p_margin=0.08,const Ref<Physics2DTestMotionResult>& p_result=Ref<Physics2DTestMotionResult>()); + bool _test_motion(const Vector2 &p_motion, float p_margin = 0.08, const Ref<Physics2DTestMotionResult> &p_result = Ref<Physics2DTestMotionResult>()); protected: - static void _bind_methods(); -public: +public: void set_mode(Mode p_mode); Mode get_mode() const; @@ -238,10 +222,10 @@ public: void set_angular_damp(real_t p_angular_damp); real_t get_angular_damp() const; - void set_linear_velocity(const Vector2& p_velocity); + void set_linear_velocity(const Vector2 &p_velocity); Vector2 get_linear_velocity() const; - void set_axis_velocity(const Vector2& p_axis); + void set_axis_velocity(const Vector2 &p_axis); void set_angular_velocity(real_t p_velocity); real_t get_angular_velocity() const; @@ -264,33 +248,28 @@ public: void set_continuous_collision_detection_mode(CCDMode p_mode); CCDMode get_continuous_collision_detection_mode() const; - void apply_impulse(const Vector2& p_offset, const Vector2& p_impulse); + void apply_impulse(const Vector2 &p_offset, const Vector2 &p_impulse); - void set_applied_force(const Vector2& p_force); + void set_applied_force(const Vector2 &p_force); Vector2 get_applied_force() const; void set_applied_torque(const float p_torque); float get_applied_torque() const; - void add_force(const Vector2& p_offset, const Vector2& p_force); - - + void add_force(const Vector2 &p_offset, const Vector2 &p_force); Array get_colliding_bodies() const; //function for script RigidBody2D(); ~RigidBody2D(); - }; VARIANT_ENUM_CAST(RigidBody2D::Mode); VARIANT_ENUM_CAST(RigidBody2D::CCDMode); - - class KinematicBody2D : public PhysicsBody2D { - GDCLASS(KinematicBody2D,PhysicsBody2D); + GDCLASS(KinematicBody2D, PhysicsBody2D); float margin; bool colliding; @@ -311,15 +290,15 @@ class KinematicBody2D : public PhysicsBody2D { Variant _get_collider() const; _FORCE_INLINE_ bool _ignores_mode(Physics2DServer::BodyMode) const; -protected: +protected: static void _bind_methods(); -public: - Vector2 move(const Vector2& p_motion); - Vector2 move_to(const Vector2& p_position); +public: + Vector2 move(const Vector2 &p_motion); + Vector2 move_to(const Vector2 &p_position); - bool test_move(const Transform2D &p_from, const Vector2& p_motion); + bool test_move(const Transform2D &p_from, const Vector2 &p_motion); bool is_colliding() const; Vector2 get_travel() const; @@ -335,17 +314,14 @@ public: void set_collision_margin(float p_margin); float get_collision_margin() const; - Vector2 move_and_slide(const Vector2& p_linear_velocity, const Vector2& p_floor_direction=Vector2(0,0), float p_slope_stop_min_velocity=5, int p_max_bounces=4); + Vector2 move_and_slide(const Vector2 &p_linear_velocity, const Vector2 &p_floor_direction = Vector2(0, 0), float p_slope_stop_min_velocity = 5, int p_max_bounces = 4); bool is_move_and_slide_on_floor() const; bool is_move_and_slide_on_wall() const; bool is_move_and_slide_on_ceiling() const; Array get_move_and_slide_colliders() const; - KinematicBody2D(); ~KinematicBody2D(); - }; - #endif // PHYSICS_BODY_2D_H |