예제 #1
0
 public void SetMoveMode(CameraMoveMode mode, int duration)
 {
     if (moveModeDuration < 0)  //not already on another temp move modes
     {
         tempMoveMode = moveMode;
     }
     moveMode         = mode;
     moveModeDuration = duration;
 }
예제 #2
0
        internal void Initialize()
        {
            Rotation = 0;
            Zoom     = Vector2.One;
            Origin   = new Vector2(Bounds.Width / 2f, Bounds.Height / 2f);
            Position = Vector2.Zero;

            defaultMoveMode = CameraMoveMode.Smooth;

            data = new float[4];
        }
예제 #3
0
        public void UpdateControl(MouseButtonEventArgs e)
        {
            var state = e.Mouse;

            bool bCursorCapture = false;

            if (state.LeftButton == ButtonState.Pressed && state.RightButton == ButtonState.Pressed)
            {
                moveMode       = CameraMoveMode.Dolly;
                bCursorCapture = true;
            }
            else if (state.LeftButton == ButtonState.Pressed)
            {
                moveMode       = CameraMoveMode.Rotate;
                bCursorCapture = true;
            }
            else if (state.RightButton == ButtonState.Pressed)
            {
                moveMode       = CameraMoveMode.Pan;
                bCursorCapture = true;
            }
            else
            {
                moveMode = CameraMoveMode.None;
            }

            if (bCursorCapture)
            {
                if (!bIsOSX)
                {
                    parent.CursorVisible = false;
                }
                else
                {
                    parent.Cursor = MouseCursor.Empty;
                }

                var cameraRotateMouseState = Mouse.GetState();
                lastX = cameraRotateMouseState.X;
                lastY = cameraRotateMouseState.Y;
            }
            else
            {
                if (!bIsOSX)
                {
                    parent.CursorVisible = true;
                }
                else
                {
                    parent.Cursor = cursor;
                }
            }
        }
예제 #4
0
        // Update is called every frame, if the MonoBehaviour is enabled.
        // http://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html
        void Update()
        {
            // User press Spacebar key
            if (Input.GetKeyUp(KeyCode.Space))
            {
                // Toggle Auto Rotate
                if (m_CameraMoveMode == CameraMoveMode.Manual)
                {
                    m_CameraMoveMode = CameraMoveMode.AutoRotateCamera;
                }
                else if (m_CameraMoveMode == CameraMoveMode.AutoRotateCamera)
                {
                    m_CameraMoveMode = CameraMoveMode.Manual;
                }
            }

            if (m_CameraMoveMode != m_CameraMoveModeOld)
            {
                // Enable / disable FirstPersonController
                UpdateEnableFirstPersonController();

                m_CameraMoveModeOld = m_CameraMoveMode;
            }

            /*if (m_CameraMoveMode == CameraMoveMode.Manual)
             * {
             *
             * }
             * else */if (m_CameraMoveMode == CameraMoveMode.AutoRotateCamera)
            {
                // Rotate m_Camera around it self.
                m_Camera.transform.RotateAround(Vector3.zero, Vector3.up, 5 * Time.deltaTime);
            }

            // User press Left key
            if (Input.GetKeyUp(KeyCode.LeftArrow) || Input.GetKeyUp(KeyCode.A))
            {
                // Show previous skybox
                OnPreviousSkybox();
            }
            // User press Right key
            if (Input.GetKeyUp(KeyCode.RightArrow) || Input.GetKeyUp(KeyCode.D))
            {
                // Show next skybox
                OnNextSkybox();
            }
        }
예제 #5
0
        void Camera_MoveOffset(CameraMoveMode Mode, double XOffset, double YOffset)
        {
            Comms.com.WriteString("G91G0\r"); // Enter relative G0 mode - set scale to 1.0?

            switch (Mode)
            {
            case CameraMoveMode.XAxisFirst:
                Comms.com.WriteString(string.Format("X{0}\r", XOffset.ToInvariantString("F3")));
                Comms.com.WriteString(string.Format("Y{0}\r", YOffset.ToInvariantString("F3")));
                break;

            case CameraMoveMode.YAxisFirst:
                Comms.com.WriteString(string.Format("Y{0}\r", YOffset.ToInvariantString("F3")));
                Comms.com.WriteString(string.Format("X{0}\r", XOffset.ToInvariantString("F3")));
                break;

            case CameraMoveMode.BothAxes:
                ((GrblViewModel)DataContext).ExecuteCommand(string.Format("X{0}Y{1}", XOffset.ToInvariantString("F3"), YOffset.ToInvariantString("F3")));
                break;
            }

            Comms.com.WriteString("G90\r"); // reset to previous or G80 to cancel motion mode?
        }
예제 #6
0
        public void Update()
        {
            hasMoved = false;

            if (moveModeDuration > 0)
            {
                moveModeDuration--;
            }
            else
            {
                moveMode = tempMoveMode;
            }

            if (fading)
            {
                if (fadeTimer > 0)
                {
                    fadeTimer--;

                    float step = fadeTimer / fadeTimerMax;
                    if (colorToTransparent)
                    {
                        currentColor = Color.Lerp(Color.Transparent, fadeColor, step);
                    }
                    else
                    {
                        currentColor = Color.Lerp(fadeColor, Color.Transparent, step);
                    }
                    fadeStart = true;
                }

                if (fadeTimer <= 0)
                {
                    fading    = false;
                    fadeStart = false;
                }
            }

            if (tinting)
            {
                if (tintTimer > 0)
                {
                    tintTimer--;
                }

                if (tintTimer <= 0)
                {
                    tinting = false;
                }
            }

            if (moveMode == CameraMoveMode.Snap)
            {
                worldCenter = target;
            }
            else if (moveMode == CameraMoveMode.Fast)
            {
                Vector2 dist = target - worldCenter;

                if (dist != Vector2.Zero)
                {
                    dist = Vector2.Normalize(dist);
                }
                else
                {
                    dist = Vector2.Zero;
                }

                worldCenter += dist * 4;
            }
            else if (moveMode == CameraMoveMode.Smooth)
            {
                worldCenter = Vector2.Lerp(worldCenter, target, .30f);
            }
        }