update new config system
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using WindowsInput.Native;
|
||||
using System;
|
||||
using TMPro;
|
||||
using WindowsInput.Native;
|
||||
|
||||
public class ButtonSettingManager : MonoBehaviour
|
||||
{
|
||||
@@ -11,27 +10,12 @@ public class ButtonSettingManager : MonoBehaviour
|
||||
void Start()
|
||||
{
|
||||
panelButton = GetComponent<PanelButton>();
|
||||
ConfigManager.onConfigChanged += ApplyConfig;
|
||||
ConfigManager.EnsureInitialization();
|
||||
ApplyConfig();
|
||||
}
|
||||
void ApplyConfig()
|
||||
{
|
||||
switch (buttonType)
|
||||
{
|
||||
case ButtonType.Test:
|
||||
panelButton.key = ConfigManager.config.TestKey;
|
||||
break;
|
||||
case ButtonType.Service:
|
||||
panelButton.key = ConfigManager.config.ServiceKey;
|
||||
break;
|
||||
case ButtonType.Coin:
|
||||
panelButton.key = ConfigManager.config.CoinKey;
|
||||
break;
|
||||
case ButtonType.Custom:
|
||||
panelButton.key = ConfigManager.config.CustomKey;
|
||||
break;
|
||||
}
|
||||
var widget = ConfigManager.GetConfigPanelWidget(Enum.GetName(typeof(ButtonType), buttonType));
|
||||
var dropdown = widget.GetComponent<TMP_Dropdown>();
|
||||
dropdown.onValueChanged.AddListener((int value) => {
|
||||
panelButton.key = (VirtualKeyCode)Enum.GetValues(typeof(VirtualKeyCode)).GetValue(value);
|
||||
});
|
||||
dropdown.onValueChanged?.Invoke(dropdown.value);
|
||||
}
|
||||
|
||||
public enum ButtonType
|
||||
|
||||
@@ -10,23 +10,44 @@ public class CaptureSettingManager : MonoBehaviour
|
||||
private void Start()
|
||||
{
|
||||
windowTexture = GetComponent<UwcWindowTexture>();
|
||||
ConfigManager.onConfigChanged += ApplyConfig;
|
||||
ConfigManager.EnsureInitialization();
|
||||
ApplyConfig();
|
||||
}
|
||||
private void ApplyConfig()
|
||||
{
|
||||
windowTexture.captureMode = (CaptureMode)ConfigManager.config.CaptureMode - 1;
|
||||
var modeWidget = ConfigManager.GetConfigPanelWidget("CaptureMode");
|
||||
var fpsWidget = ConfigManager.GetConfigPanelWidget("CaptureFPS");
|
||||
var desktopWidget = ConfigManager.GetConfigPanelWidget("CaptureDesktop");
|
||||
var desktopIndexWidget = ConfigManager.GetConfigPanelWidget("DesktopIndex");
|
||||
|
||||
var fps = Enum.GetName(typeof(Config.captureFPS), ConfigManager.config.CaptureFPS);
|
||||
windowTexture.captureFrameRate = int.Parse(fps.Remove(0, 3));
|
||||
var modeDropdown = modeWidget.GetComponent<TMP_Dropdown>();
|
||||
var fpsDropdown = fpsWidget.GetComponent<TMP_Dropdown>();
|
||||
var desktopToggle = desktopWidget.GetComponent<Toggle>();
|
||||
var desktopIndexDropdown = desktopIndexWidget.GetComponent<TMP_Dropdown>();
|
||||
|
||||
if (ConfigManager.config.CaptureDesktop)
|
||||
{
|
||||
windowTexture.type = WindowTextureType.Desktop;
|
||||
windowTexture.desktopIndex = ConfigManager.config.CaptureDesktopNumber;
|
||||
}
|
||||
else
|
||||
windowTexture.type = WindowTextureType.Window;
|
||||
modeDropdown.onValueChanged.AddListener((int value) => {
|
||||
windowTexture.captureMode = (CaptureMode)Enum.GetValues(typeof(CaptureMode)).GetValue(value) - 1;
|
||||
});
|
||||
|
||||
fpsDropdown.onValueChanged.AddListener((int value) => {
|
||||
var fps = Enum.GetName(typeof(CEnum.FPS), value);
|
||||
windowTexture.captureFrameRate = int.Parse(fps.Remove(0, 3));
|
||||
});
|
||||
|
||||
desktopToggle.onValueChanged.AddListener((bool value) => {
|
||||
if (value)
|
||||
{
|
||||
windowTexture.type = WindowTextureType.Desktop;
|
||||
desktopIndexDropdown.interactable = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
windowTexture.type = WindowTextureType.Desktop;
|
||||
desktopIndexDropdown.interactable = false;
|
||||
}
|
||||
});
|
||||
|
||||
desktopIndexDropdown.onValueChanged.AddListener((int value) => {
|
||||
windowTexture.desktopIndex = value;
|
||||
});
|
||||
modeDropdown.onValueChanged?.Invoke(modeDropdown.value);
|
||||
fpsDropdown.onValueChanged?.Invoke(fpsDropdown.value);
|
||||
desktopToggle.onValueChanged?.Invoke(desktopToggle.isOn);
|
||||
desktopIndexDropdown.onValueChanged?.Invoke(desktopIndexDropdown.value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
|
||||
[ExecuteAlways]
|
||||
public class ComponentAutoName : MonoBehaviour
|
||||
{
|
||||
[Header("!Readme!")]
|
||||
[TextArea]
|
||||
public string Notes = "This script will automatically set the text and config key name to object name. Pls rename prefab/gameobject name.";
|
||||
private TMP_Text text;
|
||||
private ConfigPanelComponent configPanelComponent;
|
||||
private void Awake()
|
||||
{
|
||||
text = GetComponentInChildren<TMP_Text>();
|
||||
configPanelComponent = GetComponent<ConfigPanelComponent>();
|
||||
text.text = gameObject.name;
|
||||
}
|
||||
void Update()
|
||||
{
|
||||
text.text = gameObject.name;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 785dd3d2a9b58f24d9e6ecf071fb1304
|
||||
guid: a0913f02b8bfb1041afdf0ef24c51c54
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -4,88 +4,39 @@ using UnityEngine;
|
||||
|
||||
public class Config
|
||||
{
|
||||
public captureMode CaptureMode = captureMode.BitBlt;
|
||||
public enum captureMode
|
||||
{
|
||||
None = 0,
|
||||
PrintWindow = 1,
|
||||
BitBlt = 2,
|
||||
WindowsGraphicCapture = 3,
|
||||
Auto = 4
|
||||
}
|
||||
public captureFPS CaptureFPS = captureFPS.FPS72;
|
||||
public enum captureFPS
|
||||
{
|
||||
FPS30 = 0,
|
||||
FPS60 = 1,
|
||||
FPS72 = 2,
|
||||
FPS90 = 3,
|
||||
FPS120 = 4,
|
||||
FPS144 = 5
|
||||
}
|
||||
public int CaptureMode = 3;
|
||||
public int CaptureFPS = 2;
|
||||
public bool CaptureDesktop = false;
|
||||
public int CaptureDesktopNumber = 0;
|
||||
public spectatorMode SpectatorMode = spectatorMode.ThirdPerson;
|
||||
public enum spectatorMode
|
||||
{
|
||||
FirstPerson = 0,
|
||||
FirstPersonSmooth = 1,
|
||||
ThirdPerson = 2,
|
||||
}
|
||||
public spectatorFPS SpectatorFPS = spectatorFPS.FPS60;
|
||||
public enum spectatorFPS
|
||||
{
|
||||
FPS15 = 0,
|
||||
FPS30 = 1,
|
||||
FPS45 = 2,
|
||||
FPS60 = 3,
|
||||
FPS72 = 4,
|
||||
FPS90 = 5,
|
||||
FPS120 = 6,
|
||||
FPS144 = 7
|
||||
}
|
||||
public int DesktopIndex = 0;
|
||||
public int SpectatorMode = 2;
|
||||
public int SpectatorFPS = 3;
|
||||
public float SpectatorFOV = 40;
|
||||
public float SpectatorSmooth = 0.05f;
|
||||
public float[] TPCamPosition = new float[3] { -0.6f, 1.8f, -1.2f };
|
||||
public float[] TPCamRotation = new float[3] { 23, 35, 0 };
|
||||
public float HandSize = 8f;
|
||||
public float[] HandPosition = new float[3] { 0, 0, 0 };
|
||||
public int Skybox = 0;
|
||||
public float HandX = 0;
|
||||
public float HandY = 0;
|
||||
public float HandZ = 0;
|
||||
public float PlayerHeight = 0;
|
||||
public int Skybox = 0;
|
||||
public float HapticDuration = 0.1f;
|
||||
public float HapticAmplitude = 0.75f;
|
||||
public touchSampleRate TouchSampleRate = touchSampleRate.FPS90;
|
||||
public enum touchSampleRate
|
||||
{
|
||||
FPS60 = 0,
|
||||
FPS72 = 1,
|
||||
FPS90 = 2,
|
||||
FPS120 = 3,
|
||||
FPS144 = 4,
|
||||
FPS160 = 5,
|
||||
FPS180 = 6,
|
||||
FPS200 = 7,
|
||||
FPS240 = 8,
|
||||
FPS280 = 9,
|
||||
FPS320 = 10,
|
||||
}
|
||||
public handStabilization HandStabilizationMode = handStabilization.None;
|
||||
public enum handStabilization
|
||||
{
|
||||
None = 0,
|
||||
Velocity = 1,
|
||||
Distance = 2,
|
||||
Smooth = 3,
|
||||
}
|
||||
public int TouchSampleRate = 2;
|
||||
public int HandStabilization = 0;
|
||||
public float Threshold = 0.3f;
|
||||
public float HandStabilVelocity = 0.3f;
|
||||
public float HandStabilDistance = 0.1f;
|
||||
public float HandStabilSmooth = 0.1f;
|
||||
public bool useLight = true;
|
||||
public bool useIPCLighting = true;
|
||||
public bool useIPCTouch = true;
|
||||
public VirtualKeyCode TestKey = VirtualKeyCode.INSERT;
|
||||
public VirtualKeyCode ServiceKey = VirtualKeyCode.DELETE;
|
||||
public VirtualKeyCode CoinKey = VirtualKeyCode.HOME;
|
||||
public VirtualKeyCode CustomKey = VirtualKeyCode.NONAME;
|
||||
public bool UseIPCLighting = true;
|
||||
public bool UseIPCTouch = true;
|
||||
public int TestKeyBind = 39;
|
||||
public int ServiceKeyBind = 40;
|
||||
public int CoinKeyBind = 30;
|
||||
public int CustomKeyBind = 169;
|
||||
public bool FlatShadedRing = false;
|
||||
public bool PostProcess = true;
|
||||
public int AntiAliasing = 0;
|
||||
public string batFileLocation = "";
|
||||
|
||||
}
|
||||
|
||||
@@ -6,28 +6,30 @@ using TMPro;
|
||||
using UnityEngine.UI;
|
||||
using System.IO;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class ConfigManager : MonoBehaviour
|
||||
{
|
||||
public static Config config;
|
||||
private static bool hasInitialized = false;
|
||||
Config oldConfig;
|
||||
public static event Action onConfigChanged;
|
||||
private static float saverTimer = 0;
|
||||
private static bool isSavingConfig = false;
|
||||
private float saverDelay = 1.5f;
|
||||
|
||||
public List<GameObject> Tabs;
|
||||
[SerializeField]
|
||||
public static List<ConfigPanelComponent> ConfigPanelComponents;
|
||||
void Awake()
|
||||
{
|
||||
onConfigChanged += EnsureInitialization;
|
||||
onConfigChanged += SaveFile;
|
||||
ConfigPanelComponents = GetConfigPanelComponents();
|
||||
EnsureInitialization();
|
||||
}
|
||||
void Start()
|
||||
{
|
||||
EnsureInitialization();
|
||||
FindConfigPanelWidget();
|
||||
UpdateConfigPanel();
|
||||
AddListenerToWidget();
|
||||
AddListenerToWidget(ConfigPanelComponents);
|
||||
onConfigChanged?.Invoke();
|
||||
}
|
||||
public static void EnsureInitialization()
|
||||
@@ -35,6 +37,7 @@ public class ConfigManager : MonoBehaviour
|
||||
if (hasInitialized)
|
||||
return;
|
||||
LoadFile();
|
||||
UpdateConfigPanelFromConfig(ref ConfigPanelComponents);
|
||||
hasInitialized = true;
|
||||
}
|
||||
private static void LoadFile()
|
||||
@@ -83,158 +86,113 @@ public class ConfigManager : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
private TMP_Dropdown CaptureModeDropdown;
|
||||
private TMP_Dropdown CaptureFPSDropdown;
|
||||
private Toggle CaptureDesktopToggle;
|
||||
private TMP_Dropdown SpectatorModeDropdown;
|
||||
private TMP_Dropdown SpectatorFPSDropdown;
|
||||
private Slider SpectatorFOVSlider;
|
||||
private Slider HandSizeSlider;
|
||||
private Slider HandXSlider;
|
||||
private Slider HandYSlider;
|
||||
private Slider HandZSlider;
|
||||
private TMP_Dropdown SkyboxDropdown;
|
||||
private ValueManager PlayerHeightManager;
|
||||
private Slider HapticDurationSlider;
|
||||
private Slider HapticAmplitudeSlider;
|
||||
private TMP_Dropdown TouchSampleRateDropdown;
|
||||
private TMP_Dropdown HandStabilizationModeDropdown;
|
||||
private Slider HandStabilVelocitySlider;
|
||||
private Slider HandStabilDistanceSlider;
|
||||
private Slider HandStabilSmoothSlider;
|
||||
private Toggle isIPCLightingToggle;
|
||||
private Toggle isIPCTouchToggle;
|
||||
private TMP_Dropdown TestKeyDropdown;
|
||||
private TMP_Dropdown ServiceKeyDropdown;
|
||||
private TMP_Dropdown CoinKeyDropdown;
|
||||
private TMP_Dropdown CustomKeyDropdown;
|
||||
|
||||
void FindConfigPanelWidget()
|
||||
public static GameObject GetConfigPanelWidget(string configKeyName)
|
||||
{
|
||||
CaptureModeDropdown = transform.Find("Tab1").Find("CaptureMode").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
CaptureFPSDropdown = transform.Find("Tab1").Find("CaptureFPS").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
CaptureDesktopToggle = transform.Find("Tab1").Find("CaptureDesktop").Find("Toggle").GetComponent<Toggle>();
|
||||
SpectatorModeDropdown = transform.Find("Tab1").Find("SpectatorMode").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
SpectatorFPSDropdown = transform.Find("Tab1").Find("SpectatorFPS").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
SpectatorFOVSlider = transform.Find("Tab1").Find("SpectatorFOV").Find("Slider").GetComponent<Slider>();
|
||||
HandSizeSlider = transform.Find("Tab1").Find("HandSize").Find("Slider").GetComponent<Slider>();
|
||||
HandXSlider = transform.Find("Tab1").Find("HandX").Find("Slider").GetComponent<Slider>();
|
||||
HandYSlider = transform.Find("Tab1").Find("HandY").Find("Slider").GetComponent<Slider>();
|
||||
HandZSlider = transform.Find("Tab1").Find("HandZ").Find("Slider").GetComponent<Slider>();
|
||||
SkyboxDropdown = transform.Find("Tab1").Find("Skybox").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
PlayerHeightManager = transform.Find("Tab1").Find("PlayerHeight").Find("Value").GetComponent<ValueManager>();
|
||||
HapticDurationSlider = transform.Find("Tab2").Find("HapticDuration").Find("Slider").GetComponent<Slider>();
|
||||
HapticAmplitudeSlider = transform.Find("Tab2").Find("HapticAmplitude").Find("Slider").GetComponent<Slider>();
|
||||
TouchSampleRateDropdown = transform.Find("Tab2").Find("TouchSampleRate").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
HandStabilizationModeDropdown = transform.Find("Tab2").Find("HandStabilization").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
//HandStabilVelocitySlider = transform.Find("Tab2").Find("HandStabilVelocity").Find("Slider").GetComponent<Slider>();
|
||||
//HandStabilDistanceSlider = transform.Find("Tab2").Find("HandStabilDistance").Find("Slider").GetComponent<Slider>();
|
||||
//HandStabilSmoothSlider = transform.Find("Tab2").Find("HandStabilSmooth").Find("Slider").GetComponent<Slider>();
|
||||
isIPCLightingToggle = transform.Find("Tab2").Find("UseIPCLighting").Find("Toggle").GetComponent<Toggle>();
|
||||
isIPCTouchToggle = transform.Find("Tab2").Find("UseIPCTouch").Find("Toggle").GetComponent<Toggle>();
|
||||
TestKeyDropdown = transform.Find("Tab2").Find("TestKeyBind").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
ServiceKeyDropdown = transform.Find("Tab2").Find("ServiceKeyBind").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
CoinKeyDropdown = transform.Find("Tab2").Find("CoinKeyBind").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
CustomKeyDropdown = transform.Find("Tab2").Find("CustomKeyBind").Find("Dropdown").GetComponent<TMP_Dropdown>();
|
||||
}
|
||||
void AddListenerToWidget()
|
||||
{
|
||||
CaptureModeDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
CaptureFPSDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
CaptureDesktopToggle.onValueChanged.AddListener(onBoolChanged);
|
||||
SpectatorModeDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
SpectatorFPSDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
SpectatorFOVSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
HandSizeSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
HandXSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
HandYSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
HandZSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
SkyboxDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
PlayerHeightManager.onValueChanged.AddListener(onValueChanged);
|
||||
HapticDurationSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
HapticAmplitudeSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
TouchSampleRateDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
HandStabilizationModeDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
//HandStabilVelocitySlider.onValueChanged.AddListener(onFloatChanged);
|
||||
//HandStabilDistanceSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
//HandStabilSmoothSlider.onValueChanged.AddListener(onFloatChanged);
|
||||
isIPCLightingToggle.onValueChanged.AddListener(onBoolChanged);
|
||||
isIPCTouchToggle.onValueChanged.AddListener(onBoolChanged);
|
||||
TestKeyDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
ServiceKeyDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
CoinKeyDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
CustomKeyDropdown.onValueChanged.AddListener(onIntChanged);
|
||||
}
|
||||
void onValueChanged()
|
||||
{
|
||||
config.PlayerHeight = PlayerHeightManager.Value;
|
||||
onConfigChanged?.Invoke();
|
||||
}
|
||||
void onIntChanged(int value)
|
||||
{
|
||||
config.CaptureMode = (Config.captureMode)CaptureModeDropdown.value;
|
||||
config.CaptureFPS = (Config.captureFPS)CaptureFPSDropdown.value;
|
||||
config.SpectatorMode = (Config.spectatorMode)SpectatorModeDropdown.value;
|
||||
config.SpectatorFPS = (Config.spectatorFPS)SpectatorFPSDropdown.value;
|
||||
config.Skybox = SkyboxDropdown.value;
|
||||
config.TouchSampleRate = (Config.touchSampleRate)TouchSampleRateDropdown.value;
|
||||
config.HandStabilizationMode = (Config.handStabilization)HandStabilizationModeDropdown.value;
|
||||
config.TestKey = (VirtualKeyCode)Enum.GetValues(typeof(VirtualKeyCode)).GetValue(TestKeyDropdown.value);
|
||||
config.ServiceKey = (VirtualKeyCode)Enum.GetValues(typeof(VirtualKeyCode)).GetValue(ServiceKeyDropdown.value);
|
||||
config.CoinKey = (VirtualKeyCode)Enum.GetValues(typeof(VirtualKeyCode)).GetValue(CoinKeyDropdown.value);
|
||||
config.CustomKey = (VirtualKeyCode)Enum.GetValues(typeof(VirtualKeyCode)).GetValue(CustomKeyDropdown.value);
|
||||
onConfigChanged?.Invoke();
|
||||
foreach (var item in ConfigPanelComponents)
|
||||
{
|
||||
if (item.ConfigKeyName == configKeyName)
|
||||
{
|
||||
return item.Widget;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
void onFloatChanged(float value)
|
||||
private List<ConfigPanelComponent> GetConfigPanelComponents()
|
||||
{
|
||||
config.SpectatorFOV = SpectatorFOVSlider.value;
|
||||
config.HandSize = HandSizeSlider.value;
|
||||
config.HandPosition[0] = HandXSlider.value;
|
||||
config.HandPosition[1] = HandYSlider.value;
|
||||
config.HandPosition[2] = HandZSlider.value;
|
||||
config.HapticDuration = HapticDurationSlider.value;
|
||||
config.HapticAmplitude = HapticAmplitudeSlider.value;
|
||||
//config.HandStabilVelocity = HandStabilVelocitySlider.value;
|
||||
//config.HandStabilDistance = HandStabilDistanceSlider.value;
|
||||
//config.HandStabilSmooth = HandStabilSmoothSlider.value;
|
||||
onConfigChanged?.Invoke();
|
||||
var _configPanelComponents = new List<ConfigPanelComponent>();
|
||||
foreach (var tab in Tabs)
|
||||
{
|
||||
var _configPanelComponentsInTab = tab.GetComponentsInChildren<ConfigPanelComponent>();
|
||||
_configPanelComponents.AddRange(_configPanelComponentsInTab);
|
||||
}
|
||||
return _configPanelComponents;
|
||||
}
|
||||
|
||||
void onBoolChanged(bool value)
|
||||
|
||||
private void AddListenerToWidget(List<ConfigPanelComponent> _configPanelComponents)
|
||||
{
|
||||
config.CaptureDesktop = CaptureDesktopToggle.isOn;
|
||||
config.useIPCLighting = isIPCLightingToggle.isOn;
|
||||
config.useIPCTouch = isIPCTouchToggle.isOn;
|
||||
onConfigChanged?.Invoke();
|
||||
foreach (var configPanelComponent in _configPanelComponents)
|
||||
{
|
||||
var widget = configPanelComponent.Widget;
|
||||
if (widget.GetComponent<TMP_Dropdown>() != null)
|
||||
{
|
||||
var dropdown = widget.GetComponent<TMP_Dropdown>();
|
||||
// add listener to dropdown to update config by key name
|
||||
dropdown.onValueChanged.AddListener(delegate
|
||||
{
|
||||
var field = config.GetType().GetField(configPanelComponent.ConfigKeyName);
|
||||
field.SetValue(config, dropdown.value);
|
||||
onConfigChanged?.Invoke();
|
||||
});
|
||||
}
|
||||
else if (widget.GetComponent<Toggle>() != null)
|
||||
{
|
||||
var toggle = widget.GetComponent<Toggle>();
|
||||
toggle.onValueChanged.AddListener(delegate
|
||||
{
|
||||
var field = config.GetType().GetField(configPanelComponent.ConfigKeyName);
|
||||
field.SetValue(config, toggle.isOn);
|
||||
onConfigChanged?.Invoke();
|
||||
});
|
||||
}
|
||||
else if (widget.GetComponent<Slider>() != null)
|
||||
{
|
||||
var slider = widget.GetComponent<Slider>();
|
||||
slider.onValueChanged.AddListener(delegate
|
||||
{
|
||||
var field = config.GetType().GetField(configPanelComponent.ConfigKeyName);
|
||||
field.SetValue(config, slider.value);
|
||||
onConfigChanged?.Invoke();
|
||||
});
|
||||
}
|
||||
else if (widget.GetComponent<ValueManager>() != null)
|
||||
{
|
||||
var valueManager = widget.GetComponent<ValueManager>();
|
||||
valueManager.onValueChanged.AddListener(delegate
|
||||
{
|
||||
var field = config.GetType().GetField(configPanelComponent.ConfigKeyName);
|
||||
field.SetValue(config, valueManager.Value);
|
||||
onConfigChanged?.Invoke();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
[ContextMenu("UpdateConfigPanel")]
|
||||
void UpdateConfigPanel()
|
||||
|
||||
private static void UpdateConfigPanelFromConfig(ref List<ConfigPanelComponent> _configPanelComponents)
|
||||
{
|
||||
CaptureModeDropdown.value = (int)config.CaptureMode;
|
||||
CaptureFPSDropdown.value = (int)config.CaptureFPS;
|
||||
CaptureDesktopToggle.isOn = config.CaptureDesktop;
|
||||
SpectatorModeDropdown.value = (int)config.SpectatorMode;
|
||||
SpectatorFPSDropdown.value = (int)config.SpectatorFPS;
|
||||
SpectatorFOVSlider.value = config.SpectatorFOV;
|
||||
HandSizeSlider.value = config.HandSize;
|
||||
HandXSlider.value = config.HandPosition[0];
|
||||
HandYSlider.value = config.HandPosition[1];
|
||||
HandZSlider.value = config.HandPosition[2];
|
||||
SkyboxDropdown.value = config.Skybox;
|
||||
PlayerHeightManager.Value = config.PlayerHeight;
|
||||
HapticDurationSlider.value = config.HapticDuration;
|
||||
HapticAmplitudeSlider.value = config.HapticAmplitude;
|
||||
TouchSampleRateDropdown.value = (int)config.TouchSampleRate;
|
||||
HandStabilizationModeDropdown.value = (int)config.HandStabilizationMode;
|
||||
//HandStabilVelocitySlider.value = HandStabilVelocity;
|
||||
//HandStabilDistanceSlider.value = HandStabilDistance;
|
||||
//HandStabilSmoothSlider.value = HandStabilSmooth;
|
||||
isIPCLightingToggle.isOn = config.useIPCLighting;
|
||||
isIPCTouchToggle.isOn = config.useIPCTouch;
|
||||
TestKeyDropdown.value = Array.IndexOf(Enum.GetValues(typeof(VirtualKeyCode)), config.TestKey);
|
||||
ServiceKeyDropdown.value = Array.IndexOf(Enum.GetValues(typeof(VirtualKeyCode)), config.ServiceKey);
|
||||
CoinKeyDropdown.value = Array.IndexOf(Enum.GetValues(typeof(VirtualKeyCode)), config.CoinKey);
|
||||
CustomKeyDropdown.value = Array.IndexOf(Enum.GetValues(typeof(VirtualKeyCode)), config.CustomKey);
|
||||
|
||||
foreach (var configPanelComponent in _configPanelComponents)
|
||||
{
|
||||
Debug.Log(configPanelComponent.ConfigKeyName);
|
||||
var componentObject = configPanelComponent.Widget;
|
||||
if (componentObject.GetComponent<TMP_Dropdown>() != null)
|
||||
{
|
||||
var dropdown = componentObject.GetComponent<TMP_Dropdown>();
|
||||
var field = config.GetType().GetField(configPanelComponent.ConfigKeyName);
|
||||
dropdown.value = (int)field.GetValue(config);
|
||||
dropdown.onValueChanged?.Invoke(dropdown.value);
|
||||
}
|
||||
else if (componentObject.GetComponent<Toggle>() != null)
|
||||
{
|
||||
var toggle = componentObject.GetComponent<Toggle>();
|
||||
var field = config.GetType().GetField(configPanelComponent.ConfigKeyName);
|
||||
toggle.isOn = (bool)field.GetValue(config);
|
||||
toggle.onValueChanged?.Invoke(toggle.isOn);
|
||||
}
|
||||
else if (componentObject.GetComponent<Slider>() != null)
|
||||
{
|
||||
var slider = componentObject.GetComponent<Slider>();
|
||||
var field = config.GetType().GetField(configPanelComponent.ConfigKeyName);
|
||||
slider.value = (float)field.GetValue(config);
|
||||
slider.onValueChanged?.Invoke(slider.value);
|
||||
}
|
||||
else if (componentObject.GetComponent<ValueManager>() != null)
|
||||
{
|
||||
var valueManager = componentObject.GetComponent<ValueManager>();
|
||||
var field = config.GetType().GetField(configPanelComponent.ConfigKeyName);
|
||||
valueManager.Value = (float)field.GetValue(config);
|
||||
valueManager.onValueChanged?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine;
|
||||
using TMPro;
|
||||
|
||||
public class ConfigPanelComponent : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
public string ConfigKeyName
|
||||
{
|
||||
get
|
||||
{
|
||||
return gameObject.name.Replace(" ", "");
|
||||
}
|
||||
}
|
||||
private string configKeyName;
|
||||
[SerializeField]
|
||||
public GameObject Widget
|
||||
{
|
||||
get
|
||||
{
|
||||
var dropdown = gameObject.GetComponentInChildren<TMP_Dropdown>();
|
||||
var toggle = gameObject.GetComponentInChildren<Toggle>();
|
||||
var slider = gameObject.GetComponentInChildren<Slider>();
|
||||
var value = gameObject.GetComponentInChildren<ValueManager>();
|
||||
if (dropdown != null)
|
||||
return dropdown.gameObject;
|
||||
else if (toggle != null)
|
||||
return toggle.gameObject;
|
||||
else if (slider != null)
|
||||
return slider.gameObject;
|
||||
else if (value != null)
|
||||
return value.gameObject;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 970da0aecbe521547a08f1b032980950
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,18 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class LightSettingManager : MonoBehaviour
|
||||
{
|
||||
public GameObject LightManager;
|
||||
void Start()
|
||||
{
|
||||
ConfigManager.onConfigChanged += ApplyConfig;
|
||||
ConfigManager.EnsureInitialization();
|
||||
ApplyConfig();
|
||||
}
|
||||
void ApplyConfig()
|
||||
{
|
||||
LightManager.SetActive(ConfigManager.config.useLight);
|
||||
}
|
||||
}
|
||||
@@ -16,24 +16,43 @@ public class PlayerSettingManager : MonoBehaviour
|
||||
{
|
||||
LHandTransform = transform.Find("Camera Offset").Find("LeftHand Controller").Find("LHand Virtual");
|
||||
RHandTransform = transform.Find("Camera Offset").Find("RightHand Controller").Find("RHand Virtual");
|
||||
ConfigManager.onConfigChanged += ApplyConfig;
|
||||
ConfigManager.EnsureInitialization();
|
||||
ApplyConfig();
|
||||
}
|
||||
void ApplyConfig()
|
||||
{
|
||||
LHandTransform.localPosition = new Vector3(ConfigManager.config.HandPosition[0]/100,
|
||||
ConfigManager.config.HandPosition[1]/100,
|
||||
ConfigManager.config.HandPosition[2]/100);
|
||||
RHandTransform.localPosition = new Vector3(-ConfigManager.config.HandPosition[0]/100,
|
||||
ConfigManager.config.HandPosition[1]/100,
|
||||
ConfigManager.config.HandPosition[2]/100);
|
||||
|
||||
var value = ConfigManager.config.HandSize;
|
||||
LHandTransform.localScale = new Vector3(value/100, value/100, value/100);
|
||||
RHandTransform.localScale = new Vector3(value/100, value/100, value/100);
|
||||
|
||||
height = ConfigManager.config.PlayerHeight;
|
||||
var sizeWidget = ConfigManager.GetConfigPanelWidget("HandSize");
|
||||
var xWidget = ConfigManager.GetConfigPanelWidget("HandX");
|
||||
var yWidget = ConfigManager.GetConfigPanelWidget("HandY");
|
||||
var zWidget = ConfigManager.GetConfigPanelWidget("HandZ");
|
||||
var heightWidget = ConfigManager.GetConfigPanelWidget("PlayerHeight");
|
||||
|
||||
var sizeSlider = sizeWidget.GetComponent<Slider>();
|
||||
var xSlider = xWidget.GetComponent<Slider>();
|
||||
var ySlider = yWidget.GetComponent<Slider>();
|
||||
var zSlider = zWidget.GetComponent<Slider>();
|
||||
var heightManager = heightWidget.GetComponent<ValueManager>();
|
||||
|
||||
sizeSlider.onValueChanged.AddListener((float value) => {
|
||||
LHandTransform.localScale = new Vector3(value, value, value);
|
||||
RHandTransform.localScale = new Vector3(value, value, value);
|
||||
});
|
||||
xSlider.onValueChanged.AddListener((float value) => {
|
||||
LHandTransform.localPosition = new Vector3(value, LHandTransform.localPosition.y, LHandTransform.localPosition.z);
|
||||
RHandTransform.localPosition = new Vector3(-value, RHandTransform.localPosition.y, RHandTransform.localPosition.z);
|
||||
});
|
||||
ySlider.onValueChanged.AddListener((float value) => {
|
||||
LHandTransform.localPosition = new Vector3(LHandTransform.localPosition.x, value, LHandTransform.localPosition.z);
|
||||
RHandTransform.localPosition = new Vector3(RHandTransform.localPosition.x, value, RHandTransform.localPosition.z);
|
||||
});
|
||||
zSlider.onValueChanged.AddListener((float value) => {
|
||||
LHandTransform.localPosition = new Vector3(LHandTransform.localPosition.x, LHandTransform.localPosition.y, value);
|
||||
RHandTransform.localPosition = new Vector3(RHandTransform.localPosition.x, RHandTransform.localPosition.y, value);
|
||||
});
|
||||
heightManager.onValueChanged.AddListener(delegate {
|
||||
height = heightManager.Value;
|
||||
});
|
||||
sizeSlider.onValueChanged.Invoke(sizeSlider.value);
|
||||
xSlider.onValueChanged.Invoke(xSlider.value);
|
||||
ySlider.onValueChanged.Invoke(ySlider.value);
|
||||
zSlider.onValueChanged.Invoke(zSlider.value);
|
||||
heightManager.onValueChanged.Invoke();
|
||||
}
|
||||
void Update()
|
||||
{
|
||||
|
||||
@@ -13,7 +13,6 @@ public class SkyboxSwitcher : MonoBehaviour
|
||||
public List<FileInfo> imageFiles = new List<FileInfo>();
|
||||
public List<Texture2D> textures = new List<Texture2D>();
|
||||
public List<System.IntPtr> ptrs = new List<System.IntPtr>();
|
||||
public static bool useSkybox = false;
|
||||
public GameObject Room;
|
||||
|
||||
[SerializeField]
|
||||
@@ -32,22 +31,18 @@ public class SkyboxSwitcher : MonoBehaviour
|
||||
StartCoroutine(AddSkyboxes());
|
||||
|
||||
Dropdown = GetComponent<TMP_Dropdown>();
|
||||
ConfigManager.onConfigChanged += ApplyConfig;
|
||||
ConfigManager.EnsureInitialization();
|
||||
ApplyConfig();
|
||||
}
|
||||
void ApplyConfig()
|
||||
{
|
||||
if (ConfigManager.config.Skybox == 0)
|
||||
{
|
||||
Room.SetActive(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Room.SetActive(false);
|
||||
currentSkyboxIndex = ConfigManager.config.Skybox-1;
|
||||
SetSkybox();
|
||||
}
|
||||
Dropdown.onValueChanged.AddListener((int value) => {
|
||||
if (value == 0)
|
||||
{
|
||||
Room.SetActive(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Room.SetActive(false);
|
||||
currentSkyboxIndex = Dropdown.value-1;
|
||||
SetSkybox();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
IEnumerator AddSkyboxes()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using System;
|
||||
using TMPro;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class SpectatorManager : MonoBehaviour
|
||||
{
|
||||
@@ -14,47 +14,60 @@ public class SpectatorManager : MonoBehaviour
|
||||
{
|
||||
cameraSmooth = GetComponent<CameraSmooth>();
|
||||
SpectatorCam = GetComponent<Camera>();
|
||||
ConfigManager.onConfigChanged += ApplyConfig;
|
||||
ConfigManager.EnsureInitialization();
|
||||
ApplyConfig();
|
||||
var modeWidget = ConfigManager.GetConfigPanelWidget("SpectatorMode");
|
||||
var fovWidget = ConfigManager.GetConfigPanelWidget("SpectatorFOV");
|
||||
var fpsWidget = ConfigManager.GetConfigPanelWidget("SpectatorFPS");
|
||||
|
||||
|
||||
var modeDropdown = modeWidget.GetComponent<TMP_Dropdown>();
|
||||
var fovSlider = fovWidget.GetComponent<Slider>();
|
||||
var fpsDropdown = fpsWidget.GetComponent<TMP_Dropdown>();
|
||||
|
||||
modeDropdown.onValueChanged.AddListener((int value) => {
|
||||
if (SpectatorCam == null || cameraSmooth == null || SpectatorFPTarget == null || SpectatorTPTarget == null)
|
||||
return;
|
||||
switch (value)
|
||||
{
|
||||
case 0:
|
||||
if (gameObject.activeSelf)
|
||||
gameObject.SetActive(false);
|
||||
break;
|
||||
case 1:
|
||||
if (!gameObject.activeSelf)
|
||||
gameObject.SetActive(true);
|
||||
cameraSmooth.target = SpectatorFPTarget;
|
||||
cameraSmooth.smoothSpeed = (float)ConfigManager.config.SpectatorSmooth;
|
||||
SpectatorCam.cullingMask |= 1 << LayerMask.NameToLayer("TPBlock"); // Enable TPBlock Layer Mask
|
||||
SpectatorCam.cullingMask &= ~(1 << LayerMask.NameToLayer("FPBlock")); // Disable FPBlock Layer Mask
|
||||
break;
|
||||
case 2:
|
||||
if (!gameObject.activeSelf)
|
||||
gameObject.SetActive(true);
|
||||
cameraSmooth.target = SpectatorTPTarget;
|
||||
cameraSmooth.smoothSpeed = 1;
|
||||
SpectatorCam.cullingMask &= ~(1 << LayerMask.NameToLayer("TPBlock")); // Disable TPBlock Layer Mask
|
||||
SpectatorCam.cullingMask |= 1 << LayerMask.NameToLayer("FPBlock"); // Enable FPBlock Layer Mask
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
fovSlider.onValueChanged.AddListener((float value) => {
|
||||
SpectatorCam.fieldOfView = value;
|
||||
});
|
||||
|
||||
fpsDropdown.onValueChanged.AddListener((int value) => {
|
||||
var fpsString = Enum.GetName(typeof(CEnum.FPS), value);
|
||||
Application.targetFrameRate = int.Parse(fpsString.Remove(0, 3));
|
||||
});
|
||||
|
||||
modeDropdown.onValueChanged?.Invoke(modeDropdown.value);
|
||||
fovSlider.onValueChanged?.Invoke(fovSlider.value);
|
||||
fpsDropdown.onValueChanged?.Invoke(fpsDropdown.value);
|
||||
|
||||
ApplyTPCamTransform();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void ApplyConfig()
|
||||
{
|
||||
if (SpectatorCam == null || cameraSmooth == null || SpectatorFPTarget == null || SpectatorTPTarget == null)
|
||||
return;
|
||||
switch ((int)ConfigManager.config.SpectatorMode)
|
||||
{
|
||||
case 0:
|
||||
if (gameObject.activeSelf)
|
||||
gameObject.SetActive(false);
|
||||
break;
|
||||
case 1:
|
||||
if (!gameObject.activeSelf)
|
||||
gameObject.SetActive(true);
|
||||
cameraSmooth.target = SpectatorFPTarget;
|
||||
cameraSmooth.smoothSpeed = (float)ConfigManager.config.SpectatorSmooth;
|
||||
SpectatorCam.cullingMask |= 1 << LayerMask.NameToLayer("TPBlock"); // Enable TPBlock Layer Mask
|
||||
SpectatorCam.cullingMask &= ~(1 << LayerMask.NameToLayer("FPBlock")); // Disable FPBlock Layer Mask
|
||||
break;
|
||||
case 2:
|
||||
if (!gameObject.activeSelf)
|
||||
gameObject.SetActive(true);
|
||||
cameraSmooth.target = SpectatorTPTarget;
|
||||
cameraSmooth.smoothSpeed = 1;
|
||||
SpectatorCam.cullingMask &= ~(1 << LayerMask.NameToLayer("TPBlock")); // Disable TPBlock Layer Mask
|
||||
SpectatorCam.cullingMask |= 1 << LayerMask.NameToLayer("FPBlock"); // Enable FPBlock Layer Mask
|
||||
break;
|
||||
}
|
||||
|
||||
SpectatorCam.fieldOfView = (float)ConfigManager.config.SpectatorFOV;
|
||||
|
||||
string fpsString = Enum.GetName(typeof(Config.captureFPS), ConfigManager.config.CaptureFPS);
|
||||
Application.targetFrameRate = int.Parse(fpsString.Remove(0, 3));
|
||||
}
|
||||
void ApplyTPCamTransform()
|
||||
void ApplyTPCamTransform()
|
||||
{
|
||||
if (SpectatorTPTarget == null)
|
||||
return;
|
||||
@@ -65,7 +78,7 @@ public class SpectatorManager : MonoBehaviour
|
||||
ConfigManager.config.TPCamRotation[1],
|
||||
ConfigManager.config.TPCamRotation[2]);
|
||||
}
|
||||
public void SaveTransform()
|
||||
public void SaveTransform() // will be called from TPCameraCube
|
||||
{
|
||||
if (SpectatorTPTarget == null)
|
||||
return;
|
||||
|
||||
@@ -8,13 +8,15 @@ public class TouchSettingManager : MonoBehaviour
|
||||
{
|
||||
void Start()
|
||||
{
|
||||
ConfigManager.onConfigChanged += ApplyConfig;
|
||||
ConfigManager.EnsureInitialization();
|
||||
ApplyConfig();
|
||||
}
|
||||
public void ApplyConfig()
|
||||
{
|
||||
string fpsString = Enum.GetName(typeof(Config.captureFPS), ConfigManager.config.CaptureFPS);
|
||||
Time.fixedDeltaTime = 1 / int.Parse(fpsString.Remove(0, 3));
|
||||
var sampleWidget = ConfigManager.GetConfigPanelWidget("TouchSampleRate");
|
||||
|
||||
var sampleDropdown = sampleWidget.GetComponent<TMP_Dropdown>();
|
||||
|
||||
sampleDropdown.onValueChanged.AddListener((int value) => {
|
||||
string fpsString = Enum.GetName(typeof(CEnum.FPS), value);
|
||||
Time.fixedDeltaTime = 1 / int.Parse(fpsString.Remove(0, 3));
|
||||
});
|
||||
|
||||
sampleDropdown.onValueChanged?.Invoke(sampleDropdown.value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ public class ValueManager : MonoBehaviour
|
||||
void Start()
|
||||
{
|
||||
tmp = GetComponent<TMP_Text>();
|
||||
ConfigManager.EnsureInitialization();
|
||||
//ConfigManager.EnsureInitialization();
|
||||
onValueChanged.AddListener(UpdateText);
|
||||
}
|
||||
void Update()
|
||||
|
||||
Reference in New Issue
Block a user