/// <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); } }
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); }