camera stuff
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user