Changeset 528 for trunk


Ignore:
Timestamp:
11/09/16 01:07:34 (9 years ago)
Author:
epyon
Message:
  • physics updates
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/bullet/bullet_world.hh

    r527 r528  
    3131                virtual collision_shape create_static_plane( const vec3& norm, float cst );
    3232                virtual collision_shape create_mesh( array_view< vec3 > vtx, array_view< uint32 > idx );
     33                virtual void set_local_scaling( collision_shape shape, const vec3& value );
     34                virtual vec3 get_local_scaling( collision_shape shape );
    3335                virtual rigid_body create_rigid_body( float mass, const transform& tr, collision_shape shape, const vec3& com_offset = vec3() );
    3436                virtual constraint create_hinge_constraint( rigid_body a, const transform& ta, rigid_body b, const transform& tb, const vec2& low_high, const vec3& params = vec3( 0.9f, 0.3f, 1.0f ) );
     
    4345                virtual void set_rigid_body_linear_velocity( rigid_body body, const vec3& velocity );
    4446                virtual void set_rigid_body_ccd( rigid_body body, float radius, float threshold );
    45 
     47                virtual vec3 get_rigid_body_linear_velocity( rigid_body body );
     48                virtual void apply_central_impulse( rigid_body body, const vec3& impulse );
    4649                virtual nv::transform get_world_transform( rigid_body body );
    4750                virtual void set_world_transform( rigid_body body, const nv::transform& tr );
  • trunk/nv/interface/physics_world.hh

    r527 r528  
    7474                virtual collision_shape create_box( const vec3& half_extens ) = 0;
    7575                virtual collision_shape create_static_plane( const vec3& norm, float cst ) = 0;
     76                virtual void set_local_scaling( collision_shape shape, const vec3& value ) = 0;
     77                virtual vec3 get_local_scaling( collision_shape shape ) = 0;
    7678                virtual rigid_body create_rigid_body( float mass, const transform& tr, collision_shape shape, const vec3& com_offset = vec3() ) = 0;
    7779                virtual constraint create_hinge_constraint( rigid_body a, const transform& ta, rigid_body b, const transform& tb, const vec2& low_high, const vec3& params = vec3( 0.9f, 0.3f, 1.0f ) ) = 0;
     
    8789                virtual void set_rigid_body_linear_velocity( rigid_body body, const vec3& velocity ) = 0;
    8890                virtual void set_rigid_body_ccd( rigid_body body, float radius, float threshold ) = 0;
     91                virtual vec3 get_rigid_body_linear_velocity( rigid_body body ) = 0;
    8992                virtual transform get_world_transform( rigid_body body ) = 0;
     93                virtual void apply_central_impulse( rigid_body body, const vec3& impulse ) = 0;
    9094                virtual void set_world_transform( rigid_body body, const transform& tr ) = 0;
    9195                virtual int get_collision_flags( rigid_body body ) = 0;
  • trunk/src/bullet/bullet_world.cc

    r527 r528  
    140140}
    141141
     142void nv::bullet_world::set_local_scaling( collision_shape shape, const vec3& value )
     143{
     144        btCollisionShape* sh = static_cast<btCollisionShape*>( shape.internal );
     145        sh->setLocalScaling( n2b( value ) );
     146}
     147
     148vec3 nv::bullet_world::get_local_scaling( collision_shape shape )
     149{
     150        btCollisionShape* sh = static_cast<btCollisionShape*>( shape.internal );
     151        return b2n( sh->getLocalScaling() );
     152}
     153
    142154constraint nv::bullet_world::create_hinge_constraint( rigid_body a, const transform& ta, rigid_body b, const transform& tb, const vec2& low_high, const vec3& params /*= vec3( 0.9f, 0.3f, 1.0f ) */ )
    143155{
     
    203215        rb->setCcdMotionThreshold( threshold );
    204216        rb->setCcdSweptSphereRadius( radius );
     217}
     218
     219vec3 nv::bullet_world::get_rigid_body_linear_velocity( rigid_body body )
     220{
     221        btRigidBody* rb = static_cast<btRigidBody*>( body.internal );
     222        return b2n( rb->getLinearVelocity() );
     223}
     224
     225void nv::bullet_world::apply_central_impulse( rigid_body body, const vec3& impulse )
     226{
     227        btRigidBody* rb = static_cast<btRigidBody*>( body.internal );
     228        rb->applyCentralImpulse( n2b( impulse ) );
     229        rb->forceActivationState( ACTIVE_TAG );
    205230}
    206231
Note: See TracChangeset for help on using the changeset viewer.