private void UpdateControl(float deltatime) { OpenTK.Vector4 dirVec = new OpenTK.Vector4(0, 0, 1, 1); OpenTK.Vector4 rightVec = new OpenTK.Vector4(1, 0, 0, 1); Matrix4x4 rot = activeCam.GetRotationMatrix(); OpenTK.Matrix4 testMat = new OpenTK.Matrix4(rot.M11, rot.M12, rot.M13, rot.M14, rot.M21, rot.M22, rot.M23, rot.M24, rot.M31, rot.M32, rot.M33, rot.M34, rot.M41, rot.M42, rot.M43, rot.M44); testMat.Transpose(); dirVec = testMat * dirVec; rightVec = testMat * rightVec; dirVec.Normalize(); rightVec.Normalize(); Vector3 dirVecConvert = new Vector3(dirVec.X, dirVec.Y, dirVec.Z); Vector3 rightVecConvert = new Vector3(rightVec.X, rightVec.Y, rightVec.Z); MouseState mstate = Mouse.GetState(); if (mouseClicked) { Vector2 mDiff = (mousePos - mouseClickedPos); RotateCam(new Vector2(mDiff.Y, mDiff.X) * deltatime * mouseSpeed); } KeyboardState kstate = Keyboard.GetState(); Vector3 tmpMovementSpeed = movementSpeed; if (kstate.IsKeyDown(Key.ShiftLeft)) { tmpMovementSpeed *= shiftSpeedFactor; } if (kstate.IsKeyDown(Key.A)) { MoveCam(rightVecConvert * deltatime * -1 * tmpMovementSpeed.X); } if (kstate.IsKeyDown(Key.D)) { MoveCam(rightVecConvert * deltatime * 1 * tmpMovementSpeed.X); } if (kstate.IsKeyDown(Key.W)) { MoveCam(dirVecConvert * -1 * deltatime * tmpMovementSpeed.Z); } if (kstate.IsKeyDown(Key.S)) { MoveCam(dirVecConvert * 1 * deltatime * tmpMovementSpeed.Z); } if (kstate.IsKeyDown(Key.Q)) { MoveCam(new Vector3(0, 1 * deltatime * tmpMovementSpeed.Y, 0)); } if (kstate.IsKeyDown(Key.E)) { MoveCam(new Vector3(0, -1 * deltatime * tmpMovementSpeed.Y, 0)); } if (kstate.IsKeyDown(Key.Up)) { RotateCam(new Vector2(-rotSpeedX * deltatime, 0)); } if (kstate.IsKeyDown(Key.Down)) { RotateCam(new Vector2(rotSpeedX * deltatime, 0)); } if (kstate.IsKeyDown(Key.Left)) { RotateCam(new Vector2(0, -rotSpeedY * deltatime)); } if (kstate.IsKeyDown(Key.Right)) { RotateCam(new Vector2(0, rotSpeedY * deltatime)); } if (kstate.IsKeyDown(Key.F1)) { Debug.WriteLine("Camera Positon: " + campos + "\nCamera Rotation: " + camrot); } if (kstate.IsKeyDown(Key.F4)) { renderer.currentRenderMode = DeferredRenderer.RenderMode.deferred; } if (kstate.IsKeyDown(Key.F5)) { renderer.currentRenderMode = DeferredRenderer.RenderMode.postion; } if (kstate.IsKeyDown(Key.F6)) { renderer.currentRenderMode = DeferredRenderer.RenderMode.color; } if (kstate.IsKeyDown(Key.F7)) { renderer.currentRenderMode = DeferredRenderer.RenderMode.normal; } if (kstate.IsKeyDown(Key.F8)) { renderer.currentRenderMode = DeferredRenderer.RenderMode.shadow; } if (kstate.IsKeyDown(Key.F9)) { renderer.currentRenderMode = DeferredRenderer.RenderMode.directional; } if (kstate.IsKeyDown(Key.F10)) { renderer.currentRenderMode = DeferredRenderer.RenderMode.pointlight; } }