Пример #1
0
    public void SetDropdownState(string val)
    {
        if (_ignoreNextChange)
        {
            _ignoreNextChange = false;
            return;
        }
        switch (EnumOptions)
        {
        case EnumSelection.AttachmentDevice:
            Overlay.AnchorDevice = (HOTK_Overlay.AttachmentDevice)Enum.Parse(typeof(HOTK_Overlay.AttachmentDevice), Dropdown.options[Dropdown.value].text);
            DesktopPortalController.Instance.CheckOverlayOffsetPerformed();
            break;

        case EnumSelection.AttachmentPoint:
            Overlay.AnchorPoint = (HOTK_Overlay.AttachmentPoint)Enum.Parse(typeof(HOTK_Overlay.AttachmentPoint), Dropdown.options[Dropdown.value].text);
            break;

        case EnumSelection.AnimationType:
            Overlay.AnimateOnGaze = (HOTK_Overlay.AnimationType)Enum.Parse(typeof(HOTK_Overlay.AnimationType), Dropdown.options[Dropdown.value].text);
            break;

        case EnumSelection.Framerate:
            var fpsIndex = FramerateModeNames.IndexOf(Dropdown.options[Dropdown.value].text);
            Overlay.Framerate = fpsIndex == -1 ? HOTK_Overlay.FramerateMode._24FPS : (HOTK_Overlay.FramerateMode)fpsIndex;
            DesktopPortalController.Instance.SelectedWindowSettings.framerateMode = Overlay.Framerate;
            break;

        case EnumSelection.CaptureMode:
            var index = CaptureModeNames.IndexOf(Dropdown.options[Dropdown.value].text);
            DesktopPortalController.Instance.SelectedWindowSettings.captureMode = index == -1 ? DesktopPortalController.CaptureMode.GdiDirect : (DesktopPortalController.CaptureMode)index;     // Fallback to GDI Direct if they were using a now disabled capture method
            break;

        case EnumSelection.BacksideTexture:
            DesktopPortalController.Instance.CurrentBacksideTexture = (DesktopPortalController.BacksideTexture)Dropdown.value;
            break;

        case EnumSelection.ClickAPI:
            DesktopPortalController.Instance.SetClickAPI((DesktopPortalController.ClickAPI)Dropdown.value);
            break;

        case EnumSelection.FilterMode:
            DesktopPortalController.Instance.DoChangeFilterMode((FilterMode)Dropdown.value);
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Пример #2
0
    private bool _ignoreNextChange; // Skip the next SetDropdownState call (used for loading so the change doesn't get called multiple times)

    public void OnEnable()
    {
        if (Dropdown == null)
        {
            return;
        }
        Dropdown.ClearOptions();
        var strings = new List <string>(); // Builds a list of strings for this dropdown

        switch (EnumOptions)
        {
        case EnumSelection.AttachmentDevice:
            UpdateDeviceDropdown();
            HOTK_TrackedDeviceManager.OnControllerIndicesUpdated += UpdateDeviceDropdown;
            break;

        case EnumSelection.AttachmentPoint:
            strings.AddRange(from object e in Enum.GetValues(typeof(HOTK_Overlay.AttachmentPoint)) select e.ToString());
            Dropdown.AddOptions(strings);
            Dropdown.value = strings.IndexOf(Overlay.AnchorPoint.ToString());
            break;

        case EnumSelection.AnimationType:
            strings.AddRange(from object e in Enum.GetValues(typeof(HOTK_Overlay.AnimationType)) select e.ToString());
            Dropdown.AddOptions(strings);
            Dropdown.value = strings.IndexOf(Overlay.AnimateOnGaze.ToString());
            break;

        case EnumSelection.CaptureMode:
            strings.AddRange(CaptureModeNames.Where((t, i) => CaptureModesEnabled[i]));
            Dropdown.AddOptions(strings);
            _ignoreNextChange = true;
            if (DesktopPortalController.Instance.SelectedWindowSettings != null)
            {
                Dropdown.value = strings.IndexOf(CaptureModeNames[(int)DesktopPortalController.Instance.SelectedWindowSettings.captureMode]);
            }
            break;

        case EnumSelection.Framerate:
            strings.AddRange(FramerateModeNames);
            Dropdown.AddOptions(strings);
            if (DesktopPortalController.Instance.SelectedWindowSettings != null)
            {
                Dropdown.value = strings.IndexOf(FramerateModeNames[(int)DesktopPortalController.Instance.SelectedWindowSettings.framerateMode]);
            }
            break;

        case EnumSelection.BacksideTexture:
            strings.AddRange(from object e in Enum.GetValues(typeof(DesktopPortalController.BacksideTexture)) select e.ToString());
            Dropdown.AddOptions(strings);
            Dropdown.value = strings.IndexOf(DesktopPortalController.Instance.CurrentBacksideTexture.ToString());
            break;

        case EnumSelection.ClickAPI:
            strings.AddRange(from object e in Enum.GetValues(typeof(DesktopPortalController.ClickAPI)) select e.ToString());
            Dropdown.AddOptions(strings);
            if (DesktopPortalController.Instance.enabled &&
                DesktopPortalController.Instance.SelectedWindowSettings != null)
            {
                Dropdown.value        = strings.IndexOf(DesktopPortalController.Instance.SelectedWindowSettings.clickAPI.ToString());
                Dropdown.interactable = true;
            }
            break;

        case EnumSelection.FilterMode:
            strings.AddRange(from object e in Enum.GetValues(typeof(FilterMode)) select e.ToString());
            Dropdown.AddOptions(strings);
            if (DesktopPortalController.Instance.enabled &&
                DesktopPortalController.Instance.SelectedWindowSettings != null)
            {
                Dropdown.value        = strings.IndexOf(DesktopPortalController.Instance.SelectedWindowSettings.filterMode.ToString());
                Dropdown.interactable = true;
            }
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
        Dropdown.onValueChanged.Invoke(Dropdown.value);
    }