diff options
Diffstat (limited to 'scene/3d/physics_body.h')
-rw-r--r-- | scene/3d/physics_body.h | 89 |
1 files changed, 31 insertions, 58 deletions
diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h index 86be98f81e..1cef946836 100644 --- a/scene/3d/physics_body.h +++ b/scene/3d/physics_body.h @@ -33,10 +33,9 @@ #include "servers/physics_server.h" #include "vset.h" - class PhysicsBody : public CollisionObject { - GDCLASS(PhysicsBody,CollisionObject); + GDCLASS(PhysicsBody, CollisionObject); uint32_t layer_mask; uint32_t collision_mask; @@ -45,12 +44,11 @@ class PhysicsBody : public CollisionObject { uint32_t _get_layers() const; protected: - static void _bind_methods(); void _notification(int p_what); PhysicsBody(PhysicsServer::BodyMode p_mode); -public: +public: virtual Vector3 get_linear_velocity() const; virtual Vector3 get_angular_velocity() const; virtual float get_inverse_mass() const; @@ -67,18 +65,15 @@ public: void set_collision_mask_bit(int p_bit, bool p_value); bool get_collision_mask_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); PhysicsBody(); - }; class StaticBody : public PhysicsBody { - GDCLASS(StaticBody,PhysicsBody); + GDCLASS(StaticBody, PhysicsBody); Vector3 constant_linear_velocity; Vector3 constant_angular_velocity; @@ -86,37 +81,31 @@ class StaticBody : public PhysicsBody { 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 Vector3& p_vel); - void set_constant_angular_velocity(const Vector3& p_vel); + void set_constant_linear_velocity(const Vector3 &p_vel); + void set_constant_angular_velocity(const Vector3 &p_vel); Vector3 get_constant_linear_velocity() const; Vector3 get_constant_angular_velocity() const; StaticBody(); ~StaticBody(); - }; class RigidBody : public PhysicsBody { - GDCLASS(RigidBody,PhysicsBody); -public: + GDCLASS(RigidBody, PhysicsBody); +public: enum Mode { MODE_RIGID, MODE_STATIC, @@ -132,7 +121,6 @@ public: }; private: - bool can_sleep; PhysicsDirectBodyState *state; Mode mode; @@ -142,7 +130,7 @@ private: real_t friction; Vector3 linear_velocity; - Vector3 angular_velocity; + Vector3 angular_velocity; real_t gravity_scale; real_t linear_damp; real_t angular_damp; @@ -152,33 +140,32 @@ private: AxisLock axis_lock; - int max_contacts_reported; bool custom_integrator; - 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 RigidBody_RemoveAction { - ObjectID body_id; ShapePair pair; - }; struct BodyState { @@ -190,33 +177,28 @@ 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); - protected: - void _notification(int p_what); static void _bind_methods(); -public: +public: void set_mode(Mode p_mode); Mode get_mode() const; void set_mass(real_t p_mass); real_t get_mass() const; - virtual float get_inverse_mass() const { return 1.0/mass; } + virtual float get_inverse_mass() const { return 1.0 / mass; } void set_weight(real_t p_weight); real_t get_weight() const; @@ -227,13 +209,13 @@ public: void set_bounce(real_t p_bounce); real_t get_bounce() const; - void set_linear_velocity(const Vector3& p_velocity); + void set_linear_velocity(const Vector3 &p_velocity); Vector3 get_linear_velocity() const; - void set_axis_velocity(const Vector3& p_axis); + void set_axis_velocity(const Vector3 &p_axis); - void set_angular_velocity(const Vector3&p_velocity); - Vector3 get_angular_velocity() const; + void set_angular_velocity(const Vector3 &p_velocity); + Vector3 get_angular_velocity() const; void set_gravity_scale(real_t p_gravity_scale); real_t get_gravity_scale() const; @@ -244,7 +226,6 @@ public: void set_angular_damp(real_t p_angular_damp); real_t get_angular_damp() const; - void set_use_custom_integrator(bool p_enable); bool is_using_custom_integrator(); @@ -268,23 +249,18 @@ public: Array get_colliding_bodies() const; - void apply_impulse(const Vector3& p_pos, const Vector3& p_impulse); + void apply_impulse(const Vector3 &p_pos, const Vector3 &p_impulse); RigidBody(); ~RigidBody(); - }; VARIANT_ENUM_CAST(RigidBody::Mode); VARIANT_ENUM_CAST(RigidBody::AxisLock); - - - - class KinematicBody : public PhysicsBody { - GDCLASS(KinematicBody,PhysicsBody); + GDCLASS(KinematicBody, PhysicsBody); float margin; bool collide_static; @@ -299,26 +275,24 @@ class KinematicBody : public PhysicsBody { ObjectID collider; int collider_shape; - - Variant _get_collider() const; _FORCE_INLINE_ bool _ignores_mode(PhysicsServer::BodyMode) const; -protected: +protected: static void _bind_methods(); -public: +public: enum { SLIDE_FLAG_FLOOR, SLIDE_FLAG_WALL, SLIDE_FLAG_ROOF }; - Vector3 move(const Vector3& p_motion); - Vector3 move_to(const Vector3& p_position); + Vector3 move(const Vector3 &p_motion); + Vector3 move_to(const Vector3 &p_position); - bool can_teleport_to(const Vector3& p_position); + bool can_teleport_to(const Vector3 &p_position); bool is_colliding() const; Vector3 get_collision_pos() const; Vector3 get_collision_normal() const; @@ -343,7 +317,6 @@ public: KinematicBody(); ~KinematicBody(); - }; #endif // PHYSICS_BODY__H |