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

Function CheckItemCollideCamera

TombEngine/Game/camera.cpp:1411–1433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1409}
1410
1411bool CheckItemCollideCamera(ItemInfo* item)
1412{
1413 bool isCloseEnough = Vector3i::Distance(item->Pose.Position, Camera.pos.ToVector3i()) <= COLL_CHECK_THRESHOLD;
1414
1415 if (!isCloseEnough || !item->Collidable || item->IsLara() || Objects[item->ObjectNumber].Hidden)
1416 return false;
1417
1418 // TODO: Find a better way to define objects which are collidable with camera.
1419 auto* object = &Objects[item->ObjectNumber];
1420 if (object->intelligent || object->isPickup || object->isPuzzleHole || object->collision == nullptr)
1421 return false;
1422
1423 // Check extents; if any 2 bounds are smaller than threshold, discard.
1424 auto extents = GameBoundingBox(item).ToBoundingOrientedBox(item->Pose).Extents;
1425 if ((abs(extents.x) < COLL_DISCARD_THRESHOLD && abs(extents.y) < COLL_DISCARD_THRESHOLD) ||
1426 (abs(extents.x) < COLL_DISCARD_THRESHOLD && abs(extents.z) < COLL_DISCARD_THRESHOLD) ||
1427 (abs(extents.y) < COLL_DISCARD_THRESHOLD && abs(extents.z) < COLL_DISCARD_THRESHOLD))
1428 {
1429 return false;
1430 }
1431
1432 return true;
1433}
1434
1435static std::vector<int> FillCollideableItemList()
1436{

Callers 1

FillCollideableItemListFunction · 0.85

Calls 4

IsLaraMethod · 0.80
ToBoundingOrientedBoxMethod · 0.80
GameBoundingBoxClass · 0.70
ToVector3iMethod · 0.45

Tested by

no test coverage detected