5 #include "GlobeCamera.h"
9 #include "GlobeCameraControllerConfiguration.h"
10 #include "EcefTangentBasis.h"
11 #include "GlobeCameraModeTransition.h"
12 #include "GlobeCameraTerrainFollower.h"
13 #include "GlobeCameraTouchSettings.h"
14 #include "IInterestPointProvider.h"
15 #include "CameraState.h"
16 #include "RenderCamera.h"
17 #include "IGlobeCameraDistanceBasedPitchControl.h"
18 #include "IGlobeCameraDistanceBasedFovControl.h"
55 virtual void Update(
float deltaSeconds);
60 virtual float GetDistanceToInterest()
const {
return m_distanceToInterest; }
62 dv3 GetEcefInterestPoint()
const;
65 virtual void SetView(
Space::EcefTangentBasis interestBasis,
float distanceToInterest,
bool snapToTerrain =
false);
67 virtual void SetProjection(
float fovRadians,
68 float nearClipDistance,
69 float farClipDistance);
71 virtual bool IsZoomDistanceAboveGlobeModeThreshold()
const;
78 virtual dv3 ComputeNonFlattenedCameraPosition()
const;
80 void ApplyTilt(
float tiltDegrees) { m_tiltDegrees = tiltDegrees; };
81 const float GetTiltDegrees()
const {
return m_tiltDegrees; }
83 virtual float CalculatePitchDegrees()
const;
84 virtual float CalculateMaximumAltitude()
const;
94 void SetVerticallyLocked(
bool isVerticallyLocked);
97 virtual float CalculateFovDegrees()
const;
103 TransitioningToGlobeMode,
107 Mode DetermineMode()
const;
109 void UpdateCityMode(
float deltaSeconds,
const v2& touchPanPixelDelta,
float touchRotateAngleDelta,
float touchTiltAngleDelta);
110 void UpdateGlobeMode(
float deltaSeconds,
const v2& touchPanPixelDelta);
111 void UpdateTransitionMode(
float deltaSeconds,
const v2& touchPanPixelDelta);
113 void ApplyZoom(
float deltaSeconds,
float touchZoomDelta,
float& out_distanceToInterest)
const;
114 void ApplyRotation(
float deltaSeconds,
float touchRotateAngleDelta,
v3& out_heading)
const;
115 void ApplyTilt(
float touchTiltAngleDelta,
float& out_tilt)
const;
116 void ApplyPanCityMode(
float deltaSeconds,
const v2& touchPanPixelDelta,
dv3& out_interestPointEcef)
const;
117 void ApplyPanGlobeMode(
float deltaSeconds,
const v2& touchPanPixelDelta,
dv3& out_interestPointEcef)
const;
118 float ClampedDistanceToInterest(
float distanceToInterest)
const;
120 void SetRenderCameraTransforms();
121 void SetRenderCameraViewTransform(
float pitchRadians);
122 void SetRenderCameraProjectionTransform(
float verticalFovRadians);
134 bool m_snapToTerrain;
135 bool m_isVerticallyLocked;
137 float m_distanceToInterest;