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

Function AlignLaraPosition

TombEngine/Game/collision/collide_item.cpp:377–401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

375}
376
377bool AlignLaraPosition(const Vector3i& offset, ItemInfo* item, ItemInfo* laraItem)
378{
379 auto* lara = GetLaraInfo(laraItem);
380
381 laraItem->Pose.Orientation = item->Pose.Orientation;
382
383 auto rotMatrix = item->Pose.Orientation.ToRotationMatrix();
384 auto pos = Vector3::Transform(offset.ToVector3(), rotMatrix);
385 auto target = item->Pose.Position.ToVector3() + pos;
386
387 int height = GetPointCollision(target, laraItem->RoomNumber).GetFloorHeight();
388 if ((laraItem->Pose.Position.y - height) <= CLICK(2))
389 {
390 laraItem->Pose.Position = Vector3i(target);
391 return true;
392 }
393
394 if (lara->Control.IsMoving)
395 {
396 lara->Control.IsMoving = false;
397 lara->Control.HandStatus = HandStatus::Free;
398 }
399
400 return false;
401}
402
403bool MoveLaraPosition(const Vector3i& offset, ItemInfo* item, ItemInfo* laraItem)
404{

Callers 5

JumpSwitchCollisionFunction · 0.85
PoleCollisionFunction · 0.85
CeilingTrapDoorCollisionFunction · 0.85
PickupCollisionFunction · 0.85

Calls 5

GetPointCollisionFunction · 0.85
Vector3iClass · 0.50
ToRotationMatrixMethod · 0.45
ToVector3Method · 0.45
GetFloorHeightMethod · 0.45

Tested by

no test coverage detected