summaryrefslogtreecommitdiffstats
path: root/scene/3d/physics_body.h
diff options
context:
space:
mode:
Diffstat (limited to 'scene/3d/physics_body.h')
-rw-r--r--scene/3d/physics_body.h89
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