protected virtual void Show(ViewingState viewingState) { switch (viewingState) { case ViewingState.Status: RemoveCreatedChooseButtons(); UpdateCurrentText(); selectionPanel.gameObject.SetActive(false); statusPanel.gameObject.SetActive(true); break; case ViewingState.Selection: AddSelectionButtons(); selectionPanel.gameObject.SetActive(true); statusPanel.gameObject.SetActive(false); break; default: VRTK_Logger.Fatal(new ArgumentOutOfRangeException("viewingState", viewingState, null)); return; } bool isAnyOtherCameraUsed = VRTK_SDKManager.GetAllSDKSetups().Any(setup => setup != null && setup.gameObject.activeSelf) || VRTK_DeviceFinder.HeadsetCamera() != null; fallbackCamera.gameObject.SetActive(!isAnyOtherCameraUsed); eventSystem.gameObject.SetActive(EventSystem.current == null || EventSystem.current == eventSystem); }
protected virtual void AddSelectionButtons() { if (VRTK_SDKManager.GetLoadedSDKSetup() != null) { GameObject chooseNoneButton = Instantiate(chooseButton.gameObject, chooseButton.transform.parent); chooseNoneButton.GetComponentInChildren <Text>().text = "None"; chooseNoneButton.name = "ChooseNoneButton"; chooseNoneButton.SetActive(true); chooseNoneButton.GetComponent <Button>().onClick.AddListener( () => VRTK_SDKManager.AttemptUnloadSDKSetup(true) ); chooseButtonGameObjects.Add(chooseNoneButton); } VRTK_SDKSetup[] setups = VRTK_SDKManager.GetAllSDKSetups(); for (int index = 0; index < setups.Length; index++) { VRTK_SDKSetup setup = setups[index]; if (setup == null || setup == VRTK_SDKManager.GetLoadedSDKSetup()) { continue; } GameObject chooseButtonCopy = Instantiate(chooseButton.gameObject, chooseButton.transform.parent); chooseButtonCopy.GetComponentInChildren <Text>().text = setup.name; chooseButtonCopy.name = string.Format("Choose{0}Button", setup.name); chooseButtonCopy.SetActive(true); int indexCopy = index; Button button = chooseButtonCopy.GetComponent <Button>(); button.onClick.AddListener( () => VRTK_SDKManager.AttemptTryLoadSDKSetup(indexCopy, true, setups) ); ColorBlock buttonColors = button.colors; buttonColors.colorMultiplier = setup.isValid ? 1.0f : 0.8f; button.colors = buttonColors; chooseButtonGameObjects.Add(chooseButtonCopy); } }