| 1764 | //---------------------------------------------------------------------------- |
| 1765 | |
| 1766 | void Camera::autoFitRadius( F32 radius ) |
| 1767 | { |
| 1768 | F32 fov = mDegToRad( getCameraFov() ); |
| 1769 | F32 viewradius = (radius * 2.0f) / mTan(fov * 0.5f); |
| 1770 | |
| 1771 | // Be careful of infinite sized objects. Clip to 16km |
| 1772 | if(viewradius > 16000.0f) |
| 1773 | viewradius = 16000.0f; |
| 1774 | |
| 1775 | if(mMode == EditOrbitMode && mValidEditOrbitPoint) |
| 1776 | { |
| 1777 | mCurrentEditOrbitDist = viewradius; |
| 1778 | } |
| 1779 | else if(mValidEditOrbitPoint) |
| 1780 | { |
| 1781 | mCurrentEditOrbitDist = viewradius; |
| 1782 | |
| 1783 | Point3F currentPos; |
| 1784 | mObjToWorld.getColumn(3,¤tPos); |
| 1785 | |
| 1786 | Point3F dir = mEditOrbitPoint - currentPos; |
| 1787 | dir.normalize(); |
| 1788 | |
| 1789 | F32 yaw, pitch; |
| 1790 | MathUtils::getAnglesFromVector(dir, yaw, pitch); |
| 1791 | mRot.x = -pitch; |
| 1792 | mRot.z = yaw; |
| 1793 | |
| 1794 | mPosition = mEditOrbitPoint; |
| 1795 | _setPosition(mPosition, mRot); |
| 1796 | _calcEditOrbitPoint(&mObjToWorld, mRot); |
| 1797 | } |
| 1798 | } |
| 1799 | |
| 1800 | //============================================================================= |
| 1801 | // Console API. |
no test coverage detected