INNER CODE UNIT · C++
idealDist
TombEngine/TombEngine · TombEngine/Game/camera.cpp:180
float idealDist = -std::max(Camera.targetDistance * CAMERA_DIST_COEFF, CAMERA_DIST_MAX);
// Define absolute camera orientation.
auto orient = player.Control.Look.Orientation +
EulerAngles(item.Pose.Orientation.x, item.Pose.Orientation.y, 0) +
EulerAngles(0, Camera.targetAngle, 0);
orient.x = std::clamp(orient.x, LOOKCAM_ORIENT_CONSTRAINT.first.x, LOOKCAM_ORIENT_CONSTRAINT.second.x);
// Determine base position.
bool isInSwamp = TestEnvironment(ENV_FLAG_SWAMP, item.RoomNumber);
auto basePos = Vector3i(
item.Pose.Position.x,
isInSwamp ? g_Level.Rooms[item.RoomNumber].TopHeight : item.Pose.Position.y,
item.Pose.Position.z);
// Define landmarks.
auto pivotPos = Geometry::TranslatePoint(basePos, item.Pose.Orientation.y, pivotOffset);
auto idealPos = Geometry::TranslatePoint(pivotPos, orient, idealDist);