Example #1
0
void du_set_trans_quat(du_body_id body, float tx, float ty, float tz,
        float qx, float qy, float qz, float qw)
{
    btCollisionObject *bt_obj = reinterpret_cast <btCollisionObject*>(body);
    btMotionState *mstate = get_motion_state(bt_obj);

    btTransform transform;
    transform.setIdentity();
    transform.setOrigin(btVector3(tx, ty, tz));
    transform.setRotation(btQuaternion(qx, qy, qz, qw));

    bt_obj->setWorldTransform(transform);

    if (mstate)
        mstate->setWorldTransform(transform);
}
Example #2
0
void du_get_trans(du_body_id body, float *dest)
{
    btCollisionObject *bt_obj = reinterpret_cast <btCollisionObject*>(body);

    btMotionState *mstate = get_motion_state(bt_obj);
    btTransform transform;
    if (mstate)
        mstate->getWorldTransform(transform);
    else
        transform = bt_obj->getWorldTransform();

    btVector3 origin = transform.getOrigin();

    dest[0] = origin.x();
    dest[1] = origin.y();
    dest[2] = origin.z();
}
Example #3
0
void du_set_quat(du_body_id body, float qx, float qy, float qz, float qw)
{
    btCollisionObject *bt_obj = reinterpret_cast <btCollisionObject*>(body);
    btMotionState *mstate = get_motion_state(bt_obj);

    btTransform transform;
    if (mstate)
        mstate->getWorldTransform(transform);
    else
        transform = bt_obj->getWorldTransform();

    transform.setRotation(btQuaternion(qx, qy, qz, qw));

    bt_obj->setWorldTransform(transform);

    if (mstate)
        mstate->setWorldTransform(transform);
}
Example #4
0
void du_set_trans(du_body_id body, float tx, float ty, float tz)
{
    btCollisionObject *bt_obj = reinterpret_cast <btCollisionObject*>(body);
    btMotionState *mstate = get_motion_state(bt_obj);

    btTransform transform;
    if (mstate)
        mstate->getWorldTransform(transform);
    else
        transform = bt_obj->getWorldTransform();

    transform.setOrigin(btVector3(tx, ty, tz));

    // always set object transform since motion state may also be initialized
    // from that value during addition to world (enable_simulation)
    bt_obj->setWorldTransform(transform);

    if (mstate)
        mstate->setWorldTransform(transform);
}
Example #5
0
packet_information_t send_frame_motion(unsigned char option, unsigned char type, unsigned char command, message_abstract_u message) {
    message_abstract_u send;
    switch (command) {
        case DIFF_DRIVE_COORDINATE:
            send.diff_drive.coordinate = get_motion_coordinate();
            break;
        case DIFF_DRIVE_VEL_REF:
            send.diff_drive.velocity = get_motion_velocity_ref_unicycle();
            break;
        case DIFF_DRIVE_VEL:
            send.diff_drive.velocity = get_motion_velocity_meas_unicycle();
            break;
        case DIFF_DRIVE_STATE:
            send.diff_drive.state = get_motion_state();
            break;
        case DIFF_DRIVE_PARAMETER_UNICYCLE:
            send.diff_drive.parameter_unicycle = get_motion_parameter_unicycle();
            break;
        default:
            return CREATE_PACKET_NACK(command, type);
            break;
    }
    return CREATE_PACKET_DATA(command, type, send);
}