コード例 #1
0
        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;
            }
        }