Beispiel #1
0
 /// <summary>
 /// Handles mouse scroll wheel. This camera zooms based on mouse scrolling
 /// </summary>
 /// <param name="distance">Amount mouse scroll wheel has moved</param>
 private void HandleMouseScroll(int distance)
 {
     if (distance > 0)
     {
         MsgCameraZoomIn camZoomMsg = ObjectPool.Aquire <MsgCameraZoomIn>();
         camZoomMsg.UniqueTarget = this.parentEntity.UniqueID;
         this.parentEntity.Game.SendMessage(camZoomMsg);
     }
     else
     {
         MsgCameraZoomOut camZoomMsg = ObjectPool.Aquire <MsgCameraZoomOut>();
         camZoomMsg.UniqueTarget = this.parentEntity.UniqueID;
         this.parentEntity.Game.SendMessage(camZoomMsg);
     }
 }
Beispiel #2
0
        /// <summary>
        /// Handles a message sent to this component.
        /// </summary>
        /// <param name="message">Message to be handled</param>
        /// <returns>True, if handled, otherwise false</returns>
        /// <exception cref="ArgumentException">Thrown if a <see cref="MessageType"/> is not handled properly."/></exception>
        public override bool ExecuteMessage(IMessage message)
        {
            switch (message.Type)
            {
            case MessageType.CameraZoomIn:
            {
                MsgCameraZoomIn zoomMsg = message as MsgCameraZoomIn;
                message.TypeCheck(zoomMsg);

                ZoomPerspectiveIn();
            }
                return(true);

            case MessageType.CameraZoomOut:
            {
                MsgCameraZoomOut zoomMsg = message as MsgCameraZoomOut;
                message.TypeCheck(zoomMsg);

                ZoomPerspectiveOut();
            }
                return(true);

            case MessageType.GetCameraValues:
            {
                MsgCameraGetValues msgCamValues = message as MsgCameraGetValues;
                message.TypeCheck(msgCamValues);

                msgCamValues.AspectRatio = this.aspectRatio;
                msgCamValues.FOV         = this.fov;
                msgCamValues.NearPlane   = this.nearPlane;
                msgCamValues.FarPlane    = this.farPlane;
                msgCamValues.ViewMatrix  = this.viewMatrix;
            }
                return(true);

            case MessageType.CameraGetViewMatrix:
            {
                MsgGetViewMatrix getViewMsg = message as MsgGetViewMatrix;
                message.TypeCheck(getViewMsg);

                getViewMsg.ViewMatrix = this.viewMatrix;
            }
                return(true);

            case MessageType.CameraGetProjectionMatrix:
            {
                MsgGetProjectionMatrix getProjMsg = message as MsgGetProjectionMatrix;
                message.TypeCheck(getProjMsg);

                getProjMsg.ProjectionMatrix = this.projectionMatrix;
            }
                return(true);

            case MessageType.GraphicsSettingsChanged:
            {
                if (this.lockAspectRatioToViewport)
                {
                    this.aspectRatio = this.parentEntity.Game.GraphicsDevice.Viewport.AspectRatio;

                    if (this.aspectRatio < float.Epsilon)
                    {
                        throw new ArgumentOutOfRangeException("aspectRatio cannot be zero or a negative value");
                    }

                    this.UpdateProjectionMatrix();
                }
            }
                return(true);

            default:
                return(false);
            }
        }