Esempio n. 1
0
        /// <summary>
        /// Message handler for all incoming messages.
        /// </summary>
        /// <param name="message">Incoming message</param>
        /// <remarks>If a message is sent to the interface and not handled by
        /// the interface then it will be forwarded to the current render camera for
        /// handling.</remarks>
        /// <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.CameraSetRender:
            {
                MsgSetRenderEntity camMsg = message as MsgSetRenderEntity;
                message.TypeCheck(camMsg);

                SetRenderCamera(camMsg.Entity);
            }
                return(true);

            case MessageType.CameraGetRenderEntityID:
            {
                MsgGetRenderEntity camMsg = message as MsgGetRenderEntity;
                message.TypeCheck(camMsg);

                if (null != renderCamera)
                {
                    camMsg.EntityID = renderCamera.UniqueID;
                }
            }
                return(true);

            case MessageType.GraphicsSettingsChanged:
            {
                // If we have a render camera, let them know about the change to graphics settings.
                if (null != renderCamera)
                {
                    MsgGraphicsSettingsChanged msgChange = ObjectPool.Aquire <MsgGraphicsSettingsChanged>();
                    msgChange.UniqueTarget = renderCamera.UniqueID;
                    this.game.SendMessage(msgChange);
                }
            }
                return(true);

            case MessageType.GetLineSegmentToCursor:
            {
                MsgGetLineSegmentToCursor msgGetRay = message as MsgGetLineSegmentToCursor;
                message.TypeCheck(msgGetRay);

                if (null != renderCamera)
                {
                    LineSegment segment;
                    CalculateCursorLineSegment(out segment);
                    msgGetRay.lineSegment = segment;
                }
            }
                return(true);

            default:
                return(false);
            }
        }
Esempio n. 2
0
        private void CreateAndStartFreeMovingCamera()
        {
            if (currentCameraInputType != null)
            {
                if (currentCameraInputType is FreeCameraInputComponent)
                {
                    return;
                }

                this.sceneMgrRootEntity.RemoveComponent(currentCameraInputType);

                currentCameraInputType = null;
            }

            currentCameraInputType = new FreeCameraInputComponent(this.sceneMgrRootEntity);

            // Set a new render camera
            MsgSetRenderEntity camSetRenderMsg = ObjectPool.Aquire <MsgSetRenderEntity>();

            camSetRenderMsg.Entity = this.sceneMgrRootEntity;
            this.Game.SendInterfaceMessage(camSetRenderMsg, InterfaceType.Camera);
        }