예제 #1
0
        private void openGlCtrl_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Mouse.Capture(sender as System.Windows.IInputElement);
            Debug.WriteLine("LMBDown");

            Point mousePos = e.GetPosition(openGlCtrl);

            _ShaderRenderer.GetDepth((int)(mousePos.X) / _RaytracerOptions._Resolution, (int)(mousePos.Y) / _RaytracerOptions._Resolution);

            Debug.WriteLine("click (x = " + mousePos.X + ", y=" + mousePos.Y + ")");

            Vector3 dir = (_Scene._Camera._Target - _Scene._Camera._Position);

            dir.Normalise();

            _Pitch = Math.Asin(dir.y);
            dir.y  = 0;
            dir.Normalise();
            _Yaw = Math.Asin(dir.x);
            if (dir.z < 0)
            {
                _Yaw = (Math.PI) - _Yaw;
            }

            _DragStart = e.GetPosition(this);
            //     Debug.WriteLine("dragstart (x = " + _DragStart.X + ", y=" + _DragStart.Y + ")");

            dir = (_Scene._Camera._Target - _Scene._Camera._Position);
            dir.Normalise();
            dir *= _Scene._Camera._FocusDepth;
            _Scene._Camera._Target = _Scene._Camera._Position + dir;
            _Scene._Camera.UpdateGUI();

            _ImageDrag = true;
        }