update new config system

This commit is contained in:
xpeng
2022-11-05 01:32:17 +01:00
parent be88d76799
commit d3840cb36e
40 changed files with 10198 additions and 628 deletions
@@ -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,5 +1,5 @@
fileFormatVersion: 2
guid: 785dd3d2a9b58f24d9e6ecf071fb1304
guid: a0913f02b8bfb1041afdf0ef24c51c54
MonoImporter:
externalObjects: {}
serializedVersion: 2
+22 -71
View File
@@ -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 = "";
}
+109 -151
View File
@@ -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()
{
+12 -17
View File
@@ -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()
+54 -41
View File
@@ -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);
}
}
+1 -1
View File
@@ -27,7 +27,7 @@ public class ValueManager : MonoBehaviour
void Start()
{
tmp = GetComponent<TMP_Text>();
ConfigManager.EnsureInitialization();
//ConfigManager.EnsureInitialization();
onValueChanged.AddListener(UpdateText);
}
void Update()