Declared variables:
Code: Select all
btVector3 objectLoc;
btMatrix3x3 objectSubMatrix;
SIO2transform * _SIO2transform = NULL;
Code: Select all
cube = sio2ResourceGetObject( sio2->_SIO2resource, "object/Cube");
if( cube )
{
_SIO2transform = cube->_SIO2transform;
cube->_SIO2objectphysic->_btRigidBody->setMassProps( btScalar( 0.0f), btVector3( 0.0f, 0.0f, 0.0f ) );
cube->_SIO2objectphysic->mass = 0.0f;
cube->_SIO2objectphysic->_btRigidBody->setCollisionFlags( cube->_SIO2objectphysic->_btRigidBody->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT );
cube->_SIO2objectphysic->_btRigidBody->forceActivationState(DISABLE_DEACTIVATION);
sio2ObjectInitAnimationAttributes( cube );
sio2ObjectSetAction( cube, get_action( sio2->_SIO2resource, "3_03.sio2", "action/cubeTurn" ), 0.5f, 25.0f );
cube->_SIO2objectanimation->_SIO2objectactionCallback = update_convex_hull;
//sio2ObjectPlay( cube, cube->_SIO2objectanimation->loop );
}
Code: Select all
void update_convex_hull( void *_ptr )
{
SIO2object *_SIO2object = ( SIO2object * )_ptr;
unsigned int i = 0,
n_vert = sio2ObjectGetNumVert( _SIO2object );
btVector3 *pts = _SIO2object->_SIO2objectphysic->_btConvexHullShape->getUnscaledPoints();
while( i != n_vert )
{
memcpy( &pts[ i ], &_SIO2object->buf[ i * 12 ], 12 );
++i;
}
_SIO2object->_SIO2objectphysic->_btConvexHullShape->recalcLocalAabb();
}
Code: Select all
cube = sio2ResourceGetObject( sio2->_SIO2resource, "object/Cube");
if( cube )
{
objectSubMatrix.setFromOpenGLSubMatrix( cube->_SIO2transform->mat );
cube->_SIO2objectphysic->_btRigidBody->getWorldTransform().setBasis( objectSubMatrix );
cube->_SIO2objectphysic->_btRigidBody->getWorldTransform().setOrigin( btVector3( _SIO2transform->mat[ 12 ],
_SIO2transform->mat[ 13 ],
_SIO2transform->mat[ 14 ] ) );
}
Thanks,
~KeithK