|
@@ -111,31 +111,31 @@ public:
|
|
|
};
|
|
|
|
|
|
protected:
|
|
|
- bool can_sleep;
|
|
|
- PhysicsDirectBodyState3D *state;
|
|
|
- Mode mode;
|
|
|
+ bool can_sleep = true;
|
|
|
+ PhysicsDirectBodyState3D *state = nullptr;
|
|
|
+ Mode mode = MODE_RIGID;
|
|
|
|
|
|
- real_t mass;
|
|
|
+ real_t mass = 1.0;
|
|
|
Ref<PhysicsMaterial> physics_material_override;
|
|
|
|
|
|
Vector3 linear_velocity;
|
|
|
Vector3 angular_velocity;
|
|
|
Basis inverse_inertia_tensor;
|
|
|
- real_t gravity_scale;
|
|
|
- real_t linear_damp;
|
|
|
- real_t angular_damp;
|
|
|
+ real_t gravity_scale = 1.0;
|
|
|
+ real_t linear_damp = -1.0;
|
|
|
+ real_t angular_damp = -1.0;
|
|
|
|
|
|
- bool sleeping;
|
|
|
- bool ccd;
|
|
|
+ bool sleeping = false;
|
|
|
+ bool ccd = false;
|
|
|
|
|
|
- int max_contacts_reported;
|
|
|
+ int max_contacts_reported = 0;
|
|
|
|
|
|
- bool custom_integrator;
|
|
|
+ bool custom_integrator = false;
|
|
|
|
|
|
struct ShapePair {
|
|
|
- int body_shape;
|
|
|
- int local_shape;
|
|
|
- bool tagged;
|
|
|
+ int body_shape = 0;
|
|
|
+ int local_shape = 0;
|
|
|
+ bool tagged = false;
|
|
|
bool operator<(const ShapePair &p_sp) const {
|
|
|
if (body_shape == p_sp.body_shape) {
|
|
|
return local_shape < p_sp.local_shape;
|
|
@@ -157,16 +157,16 @@ protected:
|
|
|
};
|
|
|
struct BodyState {
|
|
|
//int rc;
|
|
|
- bool in_tree;
|
|
|
+ bool in_tree = false;
|
|
|
VSet<ShapePair> shapes;
|
|
|
};
|
|
|
|
|
|
struct ContactMonitor {
|
|
|
- bool locked;
|
|
|
+ bool locked = false;
|
|
|
Map<ObjectID, BodyState> body_map;
|
|
|
};
|
|
|
|
|
|
- ContactMonitor *contact_monitor;
|
|
|
+ ContactMonitor *contact_monitor = nullptr;
|
|
|
void _body_enter_tree(ObjectID p_id);
|
|
|
void _body_exit_tree(ObjectID p_id);
|
|
|
|
|
@@ -261,27 +261,27 @@ public:
|
|
|
Vector3 collider_vel;
|
|
|
ObjectID collider;
|
|
|
RID collider_rid;
|
|
|
- int collider_shape;
|
|
|
+ int collider_shape = 0;
|
|
|
Variant collider_metadata;
|
|
|
Vector3 remainder;
|
|
|
Vector3 travel;
|
|
|
- int local_shape;
|
|
|
+ int local_shape = 0;
|
|
|
};
|
|
|
|
|
|
private:
|
|
|
Vector3 linear_velocity;
|
|
|
Vector3 angular_velocity;
|
|
|
|
|
|
- uint16_t locked_axis;
|
|
|
+ uint16_t locked_axis = 0;
|
|
|
|
|
|
real_t margin;
|
|
|
|
|
|
Vector3 floor_normal;
|
|
|
Vector3 floor_velocity;
|
|
|
RID on_floor_body;
|
|
|
- bool on_floor;
|
|
|
- bool on_ceiling;
|
|
|
- bool on_wall;
|
|
|
+ bool on_floor = false;
|
|
|
+ bool on_ceiling = false;
|
|
|
+ bool on_wall = false;
|
|
|
Vector<Collision> colliders;
|
|
|
Vector<Ref<KinematicCollision3D>> slide_colliders;
|
|
|
Ref<KinematicCollision3D> motion_cache;
|
|
@@ -385,10 +385,8 @@ public:
|
|
|
virtual void _get_property_list(List<PropertyInfo> *p_list) const;
|
|
|
|
|
|
real_t bias = 0.3;
|
|
|
- real_t damping = 1.;
|
|
|
- real_t impulse_clamp = 0;
|
|
|
-
|
|
|
- PinJointData() {}
|
|
|
+ real_t damping = 1.0;
|
|
|
+ real_t impulse_clamp = 0.0;
|
|
|
};
|
|
|
|
|
|
struct ConeJointData : public JointData {
|
|
@@ -398,14 +396,11 @@ public:
|
|
|
virtual bool _get(const StringName &p_name, Variant &r_ret) const;
|
|
|
virtual void _get_property_list(List<PropertyInfo> *p_list) const;
|
|
|
|
|
|
- real_t swing_span;
|
|
|
+ real_t swing_span = Math_PI * 0.25;
|
|
|
real_t twist_span = Math_PI;
|
|
|
real_t bias = 0.3;
|
|
|
real_t softness = 0.8;
|
|
|
real_t relaxation = 1.;
|
|
|
-
|
|
|
- ConeJointData() :
|
|
|
- swing_span(Math_PI * 0.25) {}
|
|
|
};
|
|
|
|
|
|
struct HingeJointData : public JointData {
|
|
@@ -416,16 +411,11 @@ public:
|
|
|
virtual void _get_property_list(List<PropertyInfo> *p_list) const;
|
|
|
|
|
|
bool angular_limit_enabled = false;
|
|
|
- real_t angular_limit_upper;
|
|
|
- real_t angular_limit_lower;
|
|
|
+ real_t angular_limit_upper = Math_PI * 0.5;
|
|
|
+ real_t angular_limit_lower = -Math_PI * 0.5;
|
|
|
real_t angular_limit_bias = 0.3;
|
|
|
real_t angular_limit_softness = 0.9;
|
|
|
real_t angular_limit_relaxation = 1.;
|
|
|
-
|
|
|
- HingeJointData() :
|
|
|
-
|
|
|
- angular_limit_upper(Math_PI * 0.5),
|
|
|
- angular_limit_lower(-Math_PI * 0.5) {}
|
|
|
};
|
|
|
|
|
|
struct SliderJointData : public JointData {
|
|
@@ -435,45 +425,41 @@ public:
|
|
|
virtual bool _get(const StringName &p_name, Variant &r_ret) const;
|
|
|
virtual void _get_property_list(List<PropertyInfo> *p_list) const;
|
|
|
|
|
|
- real_t linear_limit_upper = 1.;
|
|
|
- real_t linear_limit_lower = -1.;
|
|
|
- real_t linear_limit_softness = 1.;
|
|
|
+ real_t linear_limit_upper = 1.0;
|
|
|
+ real_t linear_limit_lower = -1.0;
|
|
|
+ real_t linear_limit_softness = 1.0;
|
|
|
real_t linear_limit_restitution = 0.7;
|
|
|
- real_t linear_limit_damping = 1.;
|
|
|
- real_t angular_limit_upper = 0;
|
|
|
- real_t angular_limit_lower = 0;
|
|
|
- real_t angular_limit_softness = 1.;
|
|
|
+ real_t linear_limit_damping = 1.0;
|
|
|
+ real_t angular_limit_upper = 0.0;
|
|
|
+ real_t angular_limit_lower = 0.0;
|
|
|
+ real_t angular_limit_softness = 1.0;
|
|
|
real_t angular_limit_restitution = 0.7;
|
|
|
- real_t angular_limit_damping = 1.;
|
|
|
-
|
|
|
- SliderJointData() {}
|
|
|
+ real_t angular_limit_damping = 1.0;
|
|
|
};
|
|
|
|
|
|
struct SixDOFJointData : public JointData {
|
|
|
struct SixDOFAxisData {
|
|
|
bool linear_limit_enabled = true;
|
|
|
- real_t linear_limit_upper = 0;
|
|
|
- real_t linear_limit_lower = 0;
|
|
|
+ real_t linear_limit_upper = 0.0;
|
|
|
+ real_t linear_limit_lower = 0.0;
|
|
|
real_t linear_limit_softness = 0.7;
|
|
|
real_t linear_restitution = 0.5;
|
|
|
- real_t linear_damping = 1.;
|
|
|
+ real_t linear_damping = 1.0;
|
|
|
bool linear_spring_enabled = false;
|
|
|
- real_t linear_spring_stiffness = 0;
|
|
|
- real_t linear_spring_damping = 0;
|
|
|
- real_t linear_equilibrium_point = 0;
|
|
|
+ real_t linear_spring_stiffness = 0.0;
|
|
|
+ real_t linear_spring_damping = 0.0;
|
|
|
+ real_t linear_equilibrium_point = 0.0;
|
|
|
bool angular_limit_enabled = true;
|
|
|
- real_t angular_limit_upper = 0;
|
|
|
- real_t angular_limit_lower = 0;
|
|
|
+ real_t angular_limit_upper = 0.0;
|
|
|
+ real_t angular_limit_lower = 0.0;
|
|
|
real_t angular_limit_softness = 0.5;
|
|
|
- real_t angular_restitution = 0;
|
|
|
- real_t angular_damping = 1.;
|
|
|
+ real_t angular_restitution = 0.0;
|
|
|
+ real_t angular_damping = 1.0;
|
|
|
real_t erp = 0.5;
|
|
|
bool angular_spring_enabled = false;
|
|
|
- real_t angular_spring_stiffness = 0;
|
|
|
- real_t angular_spring_damping = 0.;
|
|
|
- real_t angular_equilibrium_point = 0;
|
|
|
-
|
|
|
- SixDOFAxisData() {}
|
|
|
+ real_t angular_spring_stiffness = 0.0;
|
|
|
+ real_t angular_spring_damping = 0.0;
|
|
|
+ real_t angular_equilibrium_point = 0.0;
|
|
|
};
|
|
|
|
|
|
virtual JointType get_joint_type() { return JOINT_TYPE_6DOF; }
|
|
@@ -505,12 +491,12 @@ private:
|
|
|
int bone_id = -1;
|
|
|
|
|
|
String bone_name;
|
|
|
- real_t bounce = 0;
|
|
|
- real_t mass = 1;
|
|
|
- real_t friction = 1;
|
|
|
- real_t gravity_scale = 1;
|
|
|
- real_t linear_damp = -1;
|
|
|
- real_t angular_damp = -1;
|
|
|
+ real_t bounce = 0.0;
|
|
|
+ real_t mass = 1.0;
|
|
|
+ real_t friction = 1.0;
|
|
|
+ real_t gravity_scale = 1.0;
|
|
|
+ real_t linear_damp = -1.0;
|
|
|
+ real_t angular_damp = -1.0;
|
|
|
bool can_sleep = true;
|
|
|
|
|
|
protected:
|