MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / SpeedboatDoBoatShift

Function SpeedboatDoBoatShift

TombEngine/Objects/TR2/Vehicles/speedboat.cpp:303–330  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

301 }
302
303 void SpeedboatDoBoatShift(ItemInfo* speedboatItem, int itemNumber)
304 {
305 short itemNumber2 = g_Level.Rooms[speedboatItem->RoomNumber].itemNumber;
306 while (itemNumber2 != NO_VALUE)
307 {
308 auto* item = &g_Level.Items[itemNumber2];
309
310 if (item->ObjectNumber == ID_SPEEDBOAT && itemNumber2 != itemNumber && Lara.Context.Vehicle != itemNumber2)
311 {
312 int x = item->Pose.Position.x - speedboatItem->Pose.Position.x;
313 int z = item->Pose.Position.z - speedboatItem->Pose.Position.z;
314
315 int distance = pow(x, 2) + pow(z, 2);
316 int radius = pow(SPEEDBOAT_RADIUS * 2, 2);
317 if (distance < radius)
318 {
319 speedboatItem->Pose.Position.x = item->Pose.Position.x - x * radius / distance;
320 speedboatItem->Pose.Position.z = item->Pose.Position.z - z * radius / distance;
321 }
322
323 return;
324 }
325
326 // TODO: mine and gondola
327
328 itemNumber2 = item->NextItem;
329 }
330 }
331
332 short SpeedboatDoShift(ItemInfo* speedboatItem, Vector3i* pos, Vector3i* old)
333 {

Callers 1

SpeedboatDynamicsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected