private void UpdateMenu (Menu menu)
		{
			Vector2 invertedMouse = playerInput.GetInvertedMouse ();
			UpdateMenuPosition (menu, invertedMouse);
			
			menu.HandleTransition ();
			
			if (settingsManager)
			{
				if (settingsManager.inputMethod == InputMethod.KeyboardOrController && menu.IsEnabled () &&
				    ((stateHandler.gameState == GameState.Paused && menu.pauseWhenEnabled) || (stateHandler.gameState == GameState.DialogOptions && menu.appearType == AppearType.DuringConversation)))
				{
					playerInput.selected_option = menu.ControlSelected (playerInput.selected_option);
				}
			}
			else
			{
				Debug.LogWarning ("A settings manager is not present.");
			}
			
			if (menu.appearType == AppearType.Manual)
			{
				if (menu.IsVisible () && !menu.isLocked && menu.GetRect ().Contains (invertedMouse) && !menu.ignoreMouseClicks)
				{
					playerInput.mouseOverMenu = true;
				}
			}
			
			else if (menu.appearType == AppearType.DuringGameplay)
			{
				if (stateHandler.gameState == GameState.Normal && !menu.isLocked && menu.IsOff ())
				{
					menu.TurnOn (true);
					
					if (menu.GetRect ().Contains (invertedMouse) && !menu.ignoreMouseClicks)
					{
						playerInput.mouseOverMenu = true;
					}
				}
				else if (stateHandler.gameState == GameState.Paused)
				{
					menu.TurnOff (true);
				}
				else if (stateHandler.gameState != GameState.Normal && menu.IsOn () && actionListManager.AreActionListsRunning ())
				{
					menu.TurnOff (true);
				}
			}
			
			else if (menu.appearType == AppearType.MouseOver)
			{
				if (stateHandler.gameState == GameState.Normal && !menu.isLocked && menu.GetRect ().Contains (invertedMouse))
				{
					if (menu.IsOff ())
					{
						menu.TurnOn (true);
					}
					
					if (!menu.ignoreMouseClicks)
					{
						playerInput.mouseOverMenu = true;
					}
				}
				else if (stateHandler.gameState == GameState.Paused)
				{
					menu.ForceOff ();
				}
				else
				{
					menu.TurnOff (true);
				}
			}
			
			else if (menu.appearType == AppearType.OnContainer)
			{
				if (playerInput.activeContainer != null && !menu.isLocked && (stateHandler.gameState == GameState.Normal || (stateHandler.gameState == AC.GameState.Paused && menu.pauseWhenEnabled)))
				{
					if (menu.IsVisible () && menu.GetRect ().Contains (invertedMouse) && !menu.ignoreMouseClicks)
					{
						playerInput.mouseOverMenu = true;
					}
					menu.TurnOn (true);
				}
				else
				{
					menu.TurnOff (true);
				}
			}
			
			else if (menu.appearType == AppearType.DuringConversation)
			{
				if (playerInput.activeConversation != null && stateHandler.gameState == GameState.DialogOptions)
				{
					menu.TurnOn (true);
				}
				else if (stateHandler.gameState == GameState.Paused)
				{
					menu.ForceOff ();
				}
				else
				{
					menu.TurnOff (true);
				}
			}
			
			else if (menu.appearType == AppearType.OnInputKey)
			{
				if (menu.IsEnabled () && !menu.isLocked && menu.GetRect ().Contains (invertedMouse) && !menu.ignoreMouseClicks)
				{
					playerInput.mouseOverMenu = true;
				}
				
				try
				{
					if (Input.GetButtonDown (menu.toggleKey))
					{
						if (!menu.IsEnabled ())
						{
							if (stateHandler.gameState == GameState.Paused)
							{
								CrossFade (menu);
							}
							else
							{
								menu.TurnOn (true);
							}
						}
						else
						{
							menu.TurnOff (true);
						}
					}
				}
				catch
				{
					if (settingsManager.inputMethod != InputMethod.TouchScreen)
					{
						Debug.LogWarning ("No '" + menu.toggleKey + "' button exists - please define one in the Input Manager.");
					}
				}
			}
			
			else if (menu.appearType == AppearType.OnHotspot)
			{
				if (settingsManager.interactionMethod == AC_InteractionMethod.ContextSensitive && !menu.isLocked && runtimeInventory.selectedItem == null)
				{
					Hotspot hotspot = playerInteraction.GetActiveHotspot ();
					if (hotspot != null)
					{
						menu.HideInteractions ();
						
						if (hotspot.HasContextUse ())
						{
							menu.MatchUseInteraction (hotspot.GetFirstUseButton ());
						}
						
						if (hotspot.HasContextLook ())
						{
							menu.MatchLookInteraction (hotspot.lookButton);
						}
						
						menu.Recalculate ();
					}
				}
				
				if (hotspotLabel != "" && !menu.isLocked && (stateHandler.gameState == GameState.Normal || stateHandler.gameState == GameState.DialogOptions))
				{
					menu.TurnOn (true);
				}
				else if (stateHandler.gameState == GameState.Paused)
				{
					menu.ForceOff ();
				}
				else
				{
					menu.TurnOff (true);
				}
			}
			
			else if (menu.appearType == AppearType.OnInteraction)
			{
				if (settingsManager.CanClickOffInteractionMenu ())
				{
					if (menu.IsEnabled () && (stateHandler.gameState == GameState.Normal || menu.pauseWhenEnabled))
					{
						playerInput.interactionMenuIsOn = true;
						
						if (playerInput.mouseState == MouseState.SingleClick && !menu.GetRect ().Contains (invertedMouse))
						{
							playerInput.mouseState = MouseState.Normal;
							playerInput.interactionMenuIsOn = false;
							menu.ForceOff ();
						}
					}
					else if (stateHandler.gameState == GameState.Paused)
					{
						playerInput.interactionMenuIsOn = false;
						menu.ForceOff ();
					}
					else if (playerInteraction.GetActiveHotspot () == null)
					{
						playerInput.interactionMenuIsOn = false;
						menu.TurnOff (true);
					}
				}
				else
				{
					if (menu.IsEnabled () && (stateHandler.gameState == GameState.Normal || menu.pauseWhenEnabled))
					{
						if (menu.GetRect ().Contains (invertedMouse) && !menu.ignoreMouseClicks && (playerInteraction.GetActiveHotspot () != null || runtimeInventory.selectedItem != null))
						{
							playerInput.interactionMenuIsOn = true;
						}
						else if (settingsManager.SelectInteractionMethod () == SelectInteractions.CyclingMenuAndClickingHotspot && playerInteraction.GetActiveHotspot () != null)
						{
							playerInput.interactionMenuIsOn = true;
						}
						else if (settingsManager.SelectInteractionMethod () == SelectInteractions.CyclingMenuAndClickingHotspot && (runtimeInventory.selectedItem != null && runtimeInventory.selectedItem == runtimeInventory.hoverItem))
						{
							playerInput.interactionMenuIsOn = true;
						}
						else if (playerInteraction.GetActiveHotspot () == null || settingsManager.inputMethod == InputMethod.TouchScreen)
						{
							menu.TurnOff (true);
						}
						else if (runtimeInventory.selectedItem == null && playerInteraction.GetActiveHotspot () != null && runtimeInventory.hoverItem != null)
						{
							menu.TurnOff (true);
						}
						else if (runtimeInventory.selectedItem != null && runtimeInventory.selectedItem != runtimeInventory.hoverItem)
						{
							menu.TurnOff (true);
						}
					}
					else if (stateHandler.gameState == GameState.Paused)
					{
						menu.ForceOff ();
					}
					else if (playerInteraction.GetActiveHotspot () == null)
					{
						menu.TurnOff (true);
					}
				}
			}
			
			else if (menu.appearType == AppearType.WhenSpeechPlays)
			{
				if (stateHandler.gameState != GameState.Paused)
				{
					if (dialog.isMessageAlive && stateHandler.gameState != GameState.DialogOptions &&
					    (menu.speechMenuType == SpeechMenuType.All ||
					 (menu.speechMenuType == SpeechMenuType.CharactersOnly && dialog.GetSpeakingCharacter () != null) ||
					 (menu.speechMenuType == SpeechMenuType.NarrationOnly && dialog.GetSpeakingCharacter () == null)))
					{
						if (options.optionsData == null || (options.optionsData != null && options.optionsData.showSubtitles) || (speechManager && speechManager.forceSubtitles && !dialog.foundAudio)) 
						{
							menu.TurnOn (true);
						}
						else
						{
							menu.TurnOff (true);	
						}
					}
					else
					{
						menu.TurnOff (true);
					}
				}
				else
				{
					menu.ForceOff ();
				}
			}
		}