void RaycastVehicle::ResetWheels() { ResetSuspension(); for (int i = 0; i < GetNumWheels(); i++) { UpdateWheelTransform(i, true); Vector3 origin = GetWheelPosition(i); Node* wheelNode = GetWheelNode(i); wheelNode->SetWorldPosition(origin); } }
void CarSuspension::SetDisplacement ( const btScalar & value ) { last_displacement = displacement; displacement = value; if (displacement > info.travel) displacement = info.travel; if (displacement < 0) displacement = 0; overtravel = value - info.travel; if (overtravel < 0) overtravel = 0; //enforce maximum compression velocity /*if (displacement - last_displacement < -max_compression_velocity*dt) displacement = last_displacement - max_compression_velocity*dt; if (displacement - last_displacement > max_compression_velocity*dt) displacement = last_displacement + max_compression_velocity*dt;*/ // update wheel position position = GetWheelPosition(displacement / info.travel); }