@ -52,6 +52,7 @@ class btBvhTriangleMeshShape;
class ShapeBullet : public RIDBullet {
Map < ShapeOwnerBullet * , int > owners ;
real_t margin ;
protected :
/// return self
@ -62,14 +63,17 @@ public:
ShapeBullet ( ) ;
virtual ~ ShapeBullet ( ) ;
btCollisionShape * create_bt_shape ( const Vector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) = 0 ;
btCollisionShape * create_bt_shape ( const Vector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) = 0 ;
void add_owner ( ShapeOwnerBullet * p_owner ) ;
void remove_owner ( ShapeOwnerBullet * p_owner , bool p_permanentlyFromThisBody = false ) ;
bool is_owner ( ShapeOwnerBullet * p_owner ) const ;
const Map < ShapeOwnerBullet * , int > & get_owners ( ) const ;
void set_margin ( real_t p_margin ) ;
real_t get_margin ( ) const ;
/// Setup the shape
virtual void set_data ( const Variant & p_data ) = 0 ;
virtual Variant get_data ( ) const = 0 ;
@ -99,7 +103,7 @@ public:
virtual void set_data ( const Variant & p_data ) ;
virtual Variant get_data ( ) const ;
virtual PhysicsServer : : ShapeType get_type ( ) const ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
private :
void setup ( const Plane & p_plane ) ;
@ -116,7 +120,7 @@ public:
virtual void set_data ( const Variant & p_data ) ;
virtual Variant get_data ( ) const ;
virtual PhysicsServer : : ShapeType get_type ( ) const ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
private :
void setup ( real_t p_radius ) ;
@ -133,7 +137,7 @@ public:
virtual void set_data ( const Variant & p_data ) ;
virtual Variant get_data ( ) const ;
virtual PhysicsServer : : ShapeType get_type ( ) const ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
private :
void setup ( const Vector3 & p_half_extents ) ;
@ -152,7 +156,7 @@ public:
virtual void set_data ( const Variant & p_data ) ;
virtual Variant get_data ( ) const ;
virtual PhysicsServer : : ShapeType get_type ( ) const ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
private :
void setup ( real_t p_height , real_t p_radius ) ;
@ -169,7 +173,7 @@ public:
void get_vertices ( Vector < Vector3 > & out_vertices ) ;
virtual Variant get_data ( ) const ;
virtual PhysicsServer : : ShapeType get_type ( ) const ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
private :
void setup ( const Vector < Vector3 > & p_vertices ) ;
@ -187,7 +191,7 @@ public:
virtual void set_data ( const Variant & p_data ) ;
virtual Variant get_data ( ) const ;
virtual PhysicsServer : : ShapeType get_type ( ) const ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
private :
void setup ( PoolVector < Vector3 > p_faces ) ;
@ -207,7 +211,7 @@ public:
virtual void set_data ( const Variant & p_data ) ;
virtual Variant get_data ( ) const ;
virtual PhysicsServer : : ShapeType get_type ( ) const ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
private :
void setup ( PoolVector < real_t > & p_heights , int p_width , int p_depth , real_t p_min_height , real_t p_max_height ) ;
@ -224,7 +228,7 @@ public:
virtual void set_data ( const Variant & p_data ) ;
virtual Variant get_data ( ) const ;
virtual PhysicsServer : : ShapeType get_type ( ) const ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ margin = 0 ) ;
virtual btCollisionShape * create_bt_shape ( const btVector3 & p_implicit_scale , real_t p_ extra_edge = 0 ) ;
private :
void setup ( real_t p_length , bool p_slips_on_slope ) ;