camera stuff

This commit is contained in:
Asuro
2025-02-18 02:46:25 +01:00
parent 2c32a261c1
commit b992a826ea
11 changed files with 95 additions and 29 deletions

View File

@@ -67,9 +67,11 @@ namespace Game
void Level::Update()
{
START_PERF();
PlayerData& player = GetInstance().Player;
float delta = GetInstance().Time.Delta;
delta = 1.0f / 144.0f;
constexpr float moveSpeed = 10.0f;
constexpr float rotSpeed = 0.6f;
@@ -78,25 +80,42 @@ namespace Game
bx::Vec3 moveInput = bx::Vec3{rightInput, forwardInput, 0.0f};
moveInput = bx::normalize(moveInput);
bx::Vec3 inputVec = {moveInput.x * delta * moveSpeed, 0.0f, moveInput.y * delta * moveSpeed};
Vec2 mouseMovement = GetMouseMovement();
bx::Vec3 rotInput = {mouseMovement.y * delta * rotSpeed, mouseMovement.x * delta * rotSpeed, 0.0f};
bx::Vec3 camForward = player.FreeflyCamTransform.Forward();
bx::Vec3 camRight = player.FreeflyCamTransform.Right();
if (GetMouseButton(MouseButton::Left))
if (GetKeyPressedNow(ScanCode::F1))
{
Vec2 mouseMovement = GetMouseMovement();
bx::Vec3 rotInput = {mouseMovement.y * delta * rotSpeed, mouseMovement.x * delta * rotSpeed, 0.0f};
player.FreeflyXRot += rotInput.x;
player.FreeflyYRot += rotInput.y;
bx::mtxRotateY(player.FreeflyCamTransform.Rotation.M, player.FreeflyYRot);
player.FreeflyCamTransform.RotateLocal({player.FreeflyXRot, 0.0f, 0.0f});
player.Mode = player.Mode == PlayerMode::Walk ? PlayerMode::Freefly : PlayerMode::Walk;
}
player.FreeflyCamTransform.TranslateLocal({0.0f, 0.0f, -inputVec.z});
player.FreeflyCamTransform.TranslateLocal({-inputVec.x, 0.0f, 0.0f});
if (player.Mode == PlayerMode::Freefly)
{
if (GetMouseButton(MouseButton::Left))
{
player.FreeflyXRot += rotInput.x;
player.FreeflyYRot += rotInput.y;
bx::mtxRotateY(player.FreeflyCamTransform.Rotation.M, player.FreeflyYRot);
player.FreeflyCamTransform.RotateLocal({player.FreeflyXRot, 0.0f, 0.0f});
}
player.FreeflyCamTransform.TranslateLocal({0.0f, 0.0f, -inputVec.z});
player.FreeflyCamTransform.TranslateLocal({-inputVec.x, 0.0f, 0.0f});
}
else if (player.Mode == PlayerMode::Walk)
{
player.PlayerCamTransform.TranslateLocal({0.0f, 0.0f, -inputVec.z});
player.PlayerCamTransform.TranslateLocal({-inputVec.x, 0.0f, 0.0f});
player.PlayerCamTransform.Position.y = -3.0f;
player.WalkXRot += rotInput.x;
player.WalkYRot += rotInput.y;
bx::mtxRotateY(player.PlayerCamTransform.Rotation.M, player.WalkYRot);
player.PlayerCamTransform.RotateLocal({player.WalkXRot, 0.0f, 0.0f});
}
Cubes.Update();
Tests.Update();
END_PERF(GetShared().Window.PerfCounters, PerfCounterType::GameLevelUpdate, GetShared().Window.FrameCounter);
}
void Cube::Setup()