void HK_CALL VehicleApiUtils::syncDisplayWheels(hkDemoEnvironment* environment, hkpVehicleInstance& vehicle, const hkArray<int>& wheels, int tag) { // // Sync wheels. This is necessary only because they do not "exist" as bodies in simulation, // and so are not automatically updated by the current display. We must explicity tell the // display that some other "display obects" (objects which are drawn but are not physical) // have moved. // for (int i = 0; i < wheels.getSize(); i++) { hkVector4 pos; hkQuaternion rot; // // XXX Check if this is the same value as the m_hardPointWS in wheelsInfo // // vehicle.calcCurrentPositionAndRotation( vehicle.getChassis(), vehicle.m_suspension, i, pos, rot ); hkTransform trans(rot, pos); environment->m_displayHandler->updateGeometry(trans, wheels[i], tag); } }
void VehicleSetup::setupWheelCollide( const hkpWorld* world, const hkpVehicleInstance& vehicle, hkpVehicleRayCastWheelCollide& wheelCollide ) { // Set the wheels to have the same collision filter info as the chassis. wheelCollide.m_wheelCollisionFilterInfo = vehicle.getChassis()->getCollisionFilterInfo(); }
void SixWheelTruckSetup::setupWheelCollide( hkpWorld* world, const hkpVehicleInstance& vehicle, hkpVehicleRaycastWheelCollide& wheelCollide ) { wheelCollide.m_wheelCollisionFilterInfo = vehicle.getChassis()->getCollisionFilterInfo(); }