1#include "position_class.h"
3position_class::position_class()
11 m_leftTurnSpeed = 0.0f;
12 m_rightTurnSpeed = 0.0f;
13 m_horizontalTurnSpeed = 0.0f;
14 m_verticalTurnSpeed = 0.0f;
16 m_speed = m_cameraSpeed;
25position_class::~position_class()
29void position_class::SetFrameTime(
float time)
35void position_class::GetRotation(
float& y,
float& x)
const
42void position_class::GetPosition(
float& x,
float& y,
float& z)
const
50void position_class::TurnLeft(
bool keydown)
55 m_leftTurnSpeed += m_frameTime * 1.5f;
57 if (m_leftTurnSpeed > (m_frameTime * 200.0f))
59 m_leftTurnSpeed = m_frameTime * 200.0f;
64 m_leftTurnSpeed -= m_frameTime * 1.0f;
66 if (m_leftTurnSpeed < 0.0f)
68 m_leftTurnSpeed = 0.0f;
73 m_rotationY -= m_leftTurnSpeed;
74 if (m_rotationY < 0.0f)
76 m_rotationY += 360.0f;
83void position_class::TurnRight(
bool keydown)
88 m_rightTurnSpeed += m_frameTime * 1.5f;
90 if (m_rightTurnSpeed > (m_frameTime * 200.0f))
92 m_rightTurnSpeed = m_frameTime * 200.0f;
97 m_rightTurnSpeed -= m_frameTime * 1.0f;
99 if (m_rightTurnSpeed < 0.0f)
101 m_rightTurnSpeed = 0.0f;
106 m_rotationY += m_rightTurnSpeed;
107 if (m_rotationY > 360.0f)
109 m_rotationY -= 360.0f;
115void position_class::TurnMouse(
float deltaX,
float deltaY,
float sensitivity,
bool rightMouseDown)
118 m_horizontalTurnSpeed = deltaX * sensitivity;
123 m_rotationY += m_horizontalTurnSpeed;
124 if (m_rotationY < 0.0f)
126 m_rotationY += 360.0f;
128 else if (m_rotationY > 360.0f)
130 m_rotationY -= 360.0f;
134 m_verticalTurnSpeed = deltaY * sensitivity;
137 m_rotationX += m_verticalTurnSpeed;
138 if (m_rotationX < -90.0f)
140 m_rotationX = -90.0f;
142 else if (m_rotationX > 90.0f)
150void position_class::MoveCamera(
bool forward,
bool backward,
bool left,
bool right,
bool up,
bool down,
bool scrollUp,
bool scrollDown,
bool rightClick)
152 float radiansY, radiansX, speed;
155 if (scrollUp && rightClick)
157 m_cameraSpeed *= 1.1f;
159 if (scrollDown && rightClick)
161 m_cameraSpeed *= 0.9f;
163 if (m_cameraSpeed < 0.25f)
165 m_cameraSpeed = 0.25f;
170 radiansY = m_rotationY * 0.0174532925f;
171 radiansX = m_rotationX * 0.0174532925f;
178 if (scrollUp && !rightClick)
180 speed = m_speed * 20 * m_frameTime;
181 m_positionX += sinf(radiansY) * cosf(radiansX) * speed;
182 m_positionZ += cosf(radiansY) * cosf(radiansX) * speed;
183 m_positionY -= sinf(radiansX) * speed;
187 if (scrollDown && !rightClick)
189 speed = m_speed * 20 * m_frameTime;
190 m_positionX -= sinf(radiansY) * cosf(radiansX) * speed;
191 m_positionZ -= cosf(radiansY) * cosf(radiansX) * speed;
192 m_positionY += sinf(radiansX) * speed;
196 speed = m_cameraSpeed * m_frameTime;
201 m_positionX += sinf(radiansY) * cosf(radiansX) * speed;
202 m_positionZ += cosf(radiansY) * cosf(radiansX) * speed;
203 m_positionY -= sinf(radiansX) * speed;
209 m_positionX -= sinf(radiansY) * cosf(radiansX) * speed;
210 m_positionZ -= cosf(radiansY) * cosf(radiansX) * speed;
211 m_positionY += sinf(radiansX) * speed;
217 m_positionX -= cosf(radiansY) * speed;
218 m_positionZ += sinf(radiansY) * speed;
224 m_positionX += cosf(radiansY) * speed;
225 m_positionZ -= sinf(radiansY) * speed;
231 m_positionY += speed;
237 m_positionY -= speed;