MCPcopy Create free account
hub / github.com/OpenNFS/OpenNFS / update

Method update

src/Physics/Car.cpp:257–335  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

255}
256
257void Car::update(){
258 btTransform trans;
259 vehicleMotionState->getWorldTransform(trans);
260 car_body_model.position = Utils::bulletToGlm(trans.getOrigin()) + (car_body_model.initialPosition * glm::inverse(Utils::bulletToGlm(trans.getRotation())));
261 car_body_model.orientation = Utils::bulletToGlm(trans.getRotation());
262 car_body_model.update();
263
264 // Might as well apply the body transform to the Miscellaneous models
265 for(auto &misc_model : misc_models){
266 misc_model.position = Utils::bulletToGlm(trans.getOrigin()) + (misc_model.initialPosition * glm::inverse(Utils::bulletToGlm(trans.getRotation())));
267 misc_model.orientation = Utils::bulletToGlm(trans.getRotation());
268 misc_model.update();
269 }
270
271 for (int i = 0; i <m_vehicle->getNumWheels(); i++) {
272 m_vehicle->updateWheelTransform(i, true);
273 trans = m_vehicle->getWheelInfo(i).m_worldTransform;
274 switch(i){
275 case 0:
276 left_front_wheel_model.position = Utils::bulletToGlm(trans.getOrigin());
277 left_front_wheel_model.orientation = Utils::bulletToGlm(trans.getRotation());
278 left_front_wheel_model.update();
279 break;
280 case 1:
281 right_front_wheel_model.position = Utils::bulletToGlm(trans.getOrigin());
282 right_front_wheel_model.orientation = Utils::bulletToGlm(trans.getRotation());
283 right_front_wheel_model.update();
284 break;
285 case 2:
286 left_rear_wheel_model.position = Utils::bulletToGlm(trans.getOrigin());
287 left_rear_wheel_model.orientation = Utils::bulletToGlm(trans.getRotation());
288 left_rear_wheel_model.update();
289 break;
290 case 3:
291 right_rear_wheel_model.position = Utils::bulletToGlm(trans.getOrigin());
292 right_rear_wheel_model.orientation = Utils::bulletToGlm(trans.getRotation());
293 right_rear_wheel_model.update();
294 break;
295 default:
296 ASSERT(false, "More than 4 wheels currently unsupported");
297 break;
298 }
299 }
300
301 // Set back wheels steering value
302 int wheelIndex = 2;
303 m_vehicle->applyEngineForce(gEngineForce,wheelIndex);
304 m_vehicle->setBrake(gBreakingForce,wheelIndex);
305
306 wheelIndex = 3;
307 m_vehicle->applyEngineForce(gEngineForce,wheelIndex);
308 m_vehicle->setBrake(gBreakingForce,wheelIndex);
309
310 // update front wheels steering value
311 if (steerRight)
312 {
313 gVehicleSteering -= steeringIncrement;
314 if (gVehicleSteering < -steeringClamp) gVehicleSteering = -steeringClamp;

Callers 1

stepSimulationMethod · 0.45

Calls 1

bulletToGlmFunction · 0.85

Tested by

no test coverage detected