Ajout : scroll sur la camera

feat:

+ scroll fait bouger la camera en avant ou en arriere
+ scroll et clic droit, augmente ou diminue la vitesse de la camera
This commit is contained in:
StratiX0
2024-04-12 15:07:30 +02:00
parent 13729b62fc
commit d0d655781e
6 changed files with 64 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ PositionClass::PositionClass()
m_positionZ = 0.0f;
m_leftTurnSpeed = 0.0f;
m_rightTurnSpeed = 0.0f;
m_cameraSpeed = 4.0f;
}
@@ -144,13 +145,24 @@ void PositionClass::TurnMouse(float deltaX, float deltaY, bool rightMouseDown)
return;
}
void PositionClass::MoveCamera(bool forward, bool backward, bool left, bool right, bool up, bool down)
void PositionClass::MoveCamera(bool forward, bool backward, bool left, bool right, bool up, bool down, bool scrollUp, bool scrollDown, bool rightClick)
{
float radiansY, radiansX;
float speed;
float radiansY, radiansX, speed;
// Set the speed of the camera.
speed = 2.0f * m_frameTime;
if (scrollUp && rightClick)
{
m_cameraSpeed *= 1.1f;
}
if (scrollDown && rightClick)
{
m_cameraSpeed *= 0.9f;
if (m_cameraSpeed < 0.25f)
{
m_cameraSpeed = 0.25f;
}
}
// Convert degrees to radians.
radiansY = m_rotationY * 0.0174532925f;
@@ -158,6 +170,24 @@ void PositionClass::MoveCamera(bool forward, bool backward, bool left, bool righ
// Update the position.
if (scrollUp && !rightClick)
{
speed = m_cameraSpeed * 20 * m_frameTime;
m_positionX += sinf(radiansY) * cosf(radiansX) * speed;
m_positionZ += cosf(radiansY) * cosf(radiansX) * speed;
m_positionY -= sinf(radiansX) * speed;
}
speed = m_cameraSpeed * m_frameTime;
if (scrollDown && !rightClick)
{
speed = m_cameraSpeed * 20 * m_frameTime;
m_positionX -= sinf(radiansY) * cosf(radiansX) * speed;
m_positionZ -= cosf(radiansY) * cosf(radiansX) * speed;
m_positionY += sinf(radiansX) * speed;
}
// If moving forward, the position moves in the direction of the camera and accordingly to its angle.
if (forward)
{