コード例 #1
0
        /// <summary>
        /// Timer tick event handler. Moves the cameras to their new position.
        /// </summary>
        void TimerTick(object sender, EventArgs e)
        {
            Camera.MovingDirectionIsLocked = WFUtils.IsCtrlDown() || Console.CapsLock;

            foreach (var camera in Cameras)
            {
                camera.Update();
            }

            UpdateHelperModels();

            if (TimerTicked != null)
            {
                TimerTicked(sender, e);
            }
        }
コード例 #2
0
        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            Focus();
            base.OnMouseDown(e);
            if (!IsInteractive)
            {
                return;
            }

            if (WFUtils.IsCtrlDown())
            {
                touchPoint = GetTouchPoint(e.GetPosition(this));

                if (adi != null && WFUtils.IsAltDown())
                {
                    adi.TargetPoint = touchPoint;
                    adi.Update(Camera);
                }
            }
        }
コード例 #3
0
        protected override void OnKeyDown(KeyEventArgs e)
        {
            base.OnKeyDown(e);
            if (!IsInteractive)
            {
                return;
            }

            //--- assume we are handling the key
            e.Handled = true;
            double amount = WFUtils.IsShiftDown() ? 1 : 0.2;

            if (WFUtils.IsCtrlDown())
            {
                amount *= WFUtils.IsAltDown() ? 0.1 : 0.5;
                amount *= Camera.Scale;
                switch (e.Key)
                {
                case Key.Up: Camera.Move(Camera.LookDirection, +amount); return;

                case Key.Down: Camera.Move(Camera.LookDirection, -amount); return;

                case Key.Left: Camera.Move(Camera.LeftDirection, +amount); return;

                case Key.Right: Camera.Move(Camera.LeftDirection, -amount); return;

                case Key.Prior: Camera.Move(Camera.UpDirection, +amount); return;

                case Key.Next: Camera.Move(Camera.UpDirection, -amount); return;

                default: e.Handled = false; return;
                }
            }

            switch (e.Key)
            {
            case Key.Up: Camera.ChangePitch(amount); break;

            case Key.Down: Camera.ChangePitch(-amount); break;

            case Key.Left: if (Camera.Speed == 0)
                {
                    Camera.ChangeYaw(amount);
                }
                else
                {
                    Camera.ChangeRoll(-amount);
                } break;

            case Key.Right: if (Camera.Speed == 0)
                {
                    Camera.ChangeYaw(-amount);
                }
                else
                {
                    Camera.ChangeRoll(+amount);
                } break;

            case Key.Prior: Camera.ChangeRoll(-amount); break;

            case Key.Next: Camera.ChangeRoll(+amount); break;

            case Key.W: Camera.Speed++; return;

            case Key.S: Camera.Speed--; return;

            case Key.X: Camera.Speed = 0; return;

            case Key.F: Camera.FlyParallel(); return;

            case Key.A: Camera.FlyParallel(-1); return;

            case Key.D: Camera.FlyParallel(+1); return;

            case Key.T: Camera.LookBack(); return;

            case Key.H: ToggleHelperModels(); return;

            case Key.Space: Camera.LookAtOrigin(); return;

            case Key.D1: ActivateCamera(0); return;

            case Key.D2: ActivateCamera(1); return;

            case Key.D3: ActivateCamera(2); return;

            default: e.Handled = false; return;
            }

            Camera.StopAnyTurn();
        }