INNER CODE UNIT · C++
orient
TombEngine/TombEngine · TombEngine/Game/camera.cpp:183
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);
auto lookAtPos = Geometry::TranslatePoint(pivotPos, orient, LOOK_AT_DIST);
// Determine best position.