more camera movement

This commit is contained in:
Asuro
2025-02-12 02:01:39 +01:00
parent 03aecb6d44
commit 137d8fa539
6 changed files with 56 additions and 6 deletions

View File

@@ -174,18 +174,31 @@ namespace Game
{
GetInstance().GameLevel.Update();
float delta = GetInstance().Delta;
constexpr float moveSpeed = 10.0f;
constexpr float rotSpeed = 1.0f;
float forwardInput =
(GetKey(ScanCode::SDL_SCANCODE_W) ? 1.0f : 0.0f) + (GetKey(ScanCode::SDL_SCANCODE_S) ? -1.0f : 0.0f);
float rightInput =
(GetKey(ScanCode::SDL_SCANCODE_D) ? 1.0f : 0.0f) + (GetKey(ScanCode::SDL_SCANCODE_A) ? -1.0f : 0.0f);
Vec3 inputVec = {rightInput, 0.0f, forwardInput};
Vec2 moveInput = Vec2{rightInput, forwardInput};
moveInput.Normalize();
Vec3 inputVec = {moveInput.X * delta * moveSpeed, 0.0f, moveInput.Y * delta * moveSpeed};
Vec3 camForward = Cam.Transform.Forward();
Vec3 camRight = Cam.Transform.Right();
Cam.Transform.Translate(
{camForward.X * forwardInput, camForward.Y * forwardInput, camForward.Z * forwardInput});
Cam.Transform.Translate({camRight.X * rightInput, camRight.Y * rightInput, camRight.Z * rightInput});
Vec3 rotInput = {shared.Window.MouseDeltaY * delta, shared.Window.MouseDeltaX * delta, 0.0f};
Cam.Transform.Rotate({0.0f, rotInput.Y, 0.0f});
// TODO: split transform into rot matrix and translation
// Cam.Transform.Translate(
// {camForward.X * forwardInput, camForward.Y * forwardInput, camForward.Z * forwardInput});
Cam.Transform.TranslateLocal({0.0f, 0.0f, -forwardInput});
Cam.Transform.TranslateLocal({-rightInput, 0.0f, 0.0f});
bgfx::dbgTextPrintf(1, 4, 0x0f, "Cam forward: %.2f %.2f %.2f", camForward.X, camForward.Y, camForward.Z);
}
// Set view and projection matrix for view 0.