TheMuseumProject/Assets/Plugins/Graphy - Ultimate Stats Monitor/Runtime/GraphyManager.cs

1005 lines
31 KiB
C#

/* ---------------------------------------
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
* Project: Graphy - Ultimate Stats Monitor
* Date: 15-Dec-17
* Studio: Tayx
*
* Git repo: https://github.com/Tayx94/graphy
*
* This project is released under the MIT license.
* Attribution is not required, but it is always welcomed!
* -------------------------------------*/
using System;
using Tayx.Graphy.Advanced;
using Tayx.Graphy.Audio;
using Tayx.Graphy.Fps;
using Tayx.Graphy.Ram;
using Tayx.Graphy.Utils;
using Tayx.Graphy.Utils.NumString;
using UnityEngine;
#if GRAPHY_NEW_INPUT
using UnityEngine.InputSystem;
#endif
namespace Tayx.Graphy
{
/// <summary>
/// Main class to access the Graphy API.
/// </summary>
public class GraphyManager : G_Singleton<GraphyManager>
{
protected GraphyManager()
{
}
//Enums
#region Enums -> Public
public enum Mode
{
FULL = 0,
LIGHT = 1
}
public enum ModuleType
{
FPS = 0,
RAM = 1,
AUDIO = 2,
ADVANCED = 3
}
public enum ModuleState
{
FULL = 0,
TEXT = 1,
BASIC = 2,
BACKGROUND = 3,
OFF = 4
}
public enum ModulePosition
{
TOP_RIGHT = 0,
TOP_LEFT = 1,
BOTTOM_RIGHT = 2,
BOTTOM_LEFT = 3,
FREE = 4
}
public enum LookForAudioListener
{
ALWAYS,
ON_SCENE_LOAD,
NEVER
}
public enum ModulePreset
{
FPS_BASIC = 0,
FPS_TEXT = 1,
FPS_FULL = 2,
FPS_TEXT_RAM_TEXT = 3,
FPS_FULL_RAM_TEXT = 4,
FPS_FULL_RAM_FULL = 5,
FPS_TEXT_RAM_TEXT_AUDIO_TEXT = 6,
FPS_FULL_RAM_TEXT_AUDIO_TEXT = 7,
FPS_FULL_RAM_FULL_AUDIO_TEXT = 8,
FPS_FULL_RAM_FULL_AUDIO_FULL = 9,
FPS_FULL_RAM_FULL_AUDIO_FULL_ADVANCED_FULL = 10,
FPS_BASIC_ADVANCED_FULL = 11
}
#endregion
#region Variables -> Serialized Private
[SerializeField] private Mode m_graphyMode = Mode.FULL;
[SerializeField] private bool m_enableOnStartup = true;
[SerializeField] private bool m_keepAlive = true;
[SerializeField] private bool m_background = true;
[SerializeField] private Color m_backgroundColor = new(0, 0, 0, 0.3f);
[SerializeField] private bool m_enableHotkeys = true;
#if GRAPHY_NEW_INPUT
[SerializeField] private Key m_toggleModeKeyCode = Key.G;
#else
[SerializeField] private KeyCode m_toggleModeKeyCode = KeyCode.G;
#endif
[SerializeField] private bool m_toggleModeCtrl = true;
[SerializeField] private bool m_toggleModeAlt;
#if GRAPHY_NEW_INPUT
[SerializeField] private Key m_toggleActiveKeyCode = Key.H;
#else
[SerializeField] private KeyCode m_toggleActiveKeyCode = KeyCode.H;
#endif
[SerializeField] private bool m_toggleActiveCtrl = true;
[SerializeField] private bool m_toggleActiveAlt;
[SerializeField] private ModulePosition m_graphModulePosition = ModulePosition.TOP_RIGHT;
// Fps ---------------------------------------------------------------------------
[SerializeField] private ModuleState m_fpsModuleState = ModuleState.FULL;
[SerializeField] private Color m_goodFpsColor = new Color32(118, 212, 58, 255);
[SerializeField] private int m_goodFpsThreshold = 60;
[SerializeField] private Color m_cautionFpsColor = new Color32(243, 232, 0, 255);
[SerializeField] private int m_cautionFpsThreshold = 30;
[SerializeField] private Color m_criticalFpsColor = new Color32(220, 41, 30, 255);
[Range(10, 300)] [SerializeField] private int m_fpsGraphResolution = 150;
[Range(1, 200)] [SerializeField] private int m_fpsTextUpdateRate = 3; // 3 updates per sec.
// Ram ---------------------------------------------------------------------------
[SerializeField] private ModuleState m_ramModuleState = ModuleState.FULL;
[SerializeField] private Color m_allocatedRamColor = new Color32(255, 190, 60, 255);
[SerializeField] private Color m_reservedRamColor = new Color32(205, 84, 229, 255);
[SerializeField] private Color m_monoRamColor = new(0.3f, 0.65f, 1f, 1);
[Range(10, 300)] [SerializeField] private int m_ramGraphResolution = 150;
[Range(1, 200)] [SerializeField] private int m_ramTextUpdateRate = 3; // 3 updates per sec.
// Audio -------------------------------------------------------------------------
[SerializeField] private ModuleState m_audioModuleState = ModuleState.FULL;
[SerializeField]
private LookForAudioListener m_findAudioListenerInCameraIfNull = LookForAudioListener.ON_SCENE_LOAD;
[SerializeField] private AudioListener m_audioListener;
[SerializeField] private Color m_audioGraphColor = Color.white;
[Range(10, 300)] [SerializeField] private int m_audioGraphResolution = 81;
[Range(1, 200)] [SerializeField] private int m_audioTextUpdateRate = 3; // 3 updates per sec.
[SerializeField] private FFTWindow m_FFTWindow = FFTWindow.Blackman;
[Tooltip("Must be a power of 2 and between 64-8192")] [SerializeField]
private int m_spectrumSize = 512;
// Advanced ----------------------------------------------------------------------
[SerializeField] private ModulePosition m_advancedModulePosition = ModulePosition.BOTTOM_LEFT;
[SerializeField] private ModuleState m_advancedModuleState = ModuleState.FULL;
#endregion
#region Variables -> Private
private bool m_initialized;
private bool m_active = true;
private bool m_focused = true;
private G_FpsManager m_fpsManager;
private G_RamManager m_ramManager;
private G_AudioManager m_audioManager;
private G_AdvancedData m_advancedData;
private G_FpsMonitor m_fpsMonitor;
private G_RamMonitor m_ramMonitor;
private G_AudioMonitor m_audioMonitor;
private ModulePreset m_modulePresetState = ModulePreset.FPS_BASIC_ADVANCED_FULL;
#endregion
//TODO: Maybe sort these into Get and GetSet sections.
#region Properties -> Public
public Mode GraphyMode
{
get => m_graphyMode;
set
{
m_graphyMode = value;
UpdateAllParameters();
}
}
public bool EnableOnStartup => m_enableOnStartup;
public bool KeepAlive => m_keepAlive;
public bool Background
{
get => m_background;
set
{
m_background = value;
UpdateAllParameters();
}
}
public Color BackgroundColor
{
get => m_backgroundColor;
set
{
m_backgroundColor = value;
UpdateAllParameters();
}
}
public ModulePosition GraphModulePosition
{
get => m_graphModulePosition;
set
{
m_graphModulePosition = value;
m_fpsManager.SetPosition(m_graphModulePosition);
m_ramManager.SetPosition(m_graphModulePosition);
m_audioManager.SetPosition(m_graphModulePosition);
}
}
// Fps ---------------------------------------------------------------------------
// Setters & Getters
public ModuleState FpsModuleState
{
get => m_fpsModuleState;
set
{
m_fpsModuleState = value;
m_fpsManager.SetState(m_fpsModuleState);
}
}
public Color GoodFPSColor
{
get => m_goodFpsColor;
set
{
m_goodFpsColor = value;
m_fpsManager.UpdateParameters();
}
}
public Color CautionFPSColor
{
get => m_cautionFpsColor;
set
{
m_cautionFpsColor = value;
m_fpsManager.UpdateParameters();
}
}
public Color CriticalFPSColor
{
get => m_criticalFpsColor;
set
{
m_criticalFpsColor = value;
m_fpsManager.UpdateParameters();
}
}
public int GoodFPSThreshold
{
get => m_goodFpsThreshold;
set
{
m_goodFpsThreshold = value;
m_fpsManager.UpdateParameters();
}
}
public int CautionFPSThreshold
{
get => m_cautionFpsThreshold;
set
{
m_cautionFpsThreshold = value;
m_fpsManager.UpdateParameters();
}
}
public int FpsGraphResolution
{
get => m_fpsGraphResolution;
set
{
m_fpsGraphResolution = value;
m_fpsManager.UpdateParameters();
}
}
public int FpsTextUpdateRate
{
get => m_fpsTextUpdateRate;
set
{
m_fpsTextUpdateRate = value;
m_fpsManager.UpdateParameters();
}
}
// Getters
public float CurrentFPS => m_fpsMonitor.CurrentFPS;
public float AverageFPS => m_fpsMonitor.AverageFPS;
public float MinFPS => m_fpsMonitor.OnePercentFPS;
public float MaxFPS => m_fpsMonitor.Zero1PercentFps;
// Ram ---------------------------------------------------------------------------
// Setters & Getters
public ModuleState RamModuleState
{
get => m_ramModuleState;
set
{
m_ramModuleState = value;
m_ramManager.SetState(m_ramModuleState);
}
}
public Color AllocatedRamColor
{
get => m_allocatedRamColor;
set
{
m_allocatedRamColor = value;
m_ramManager.UpdateParameters();
}
}
public Color ReservedRamColor
{
get => m_reservedRamColor;
set
{
m_reservedRamColor = value;
m_ramManager.UpdateParameters();
}
}
public Color MonoRamColor
{
get => m_monoRamColor;
set
{
m_monoRamColor = value;
m_ramManager.UpdateParameters();
}
}
public int RamGraphResolution
{
get => m_ramGraphResolution;
set
{
m_ramGraphResolution = value;
m_ramManager.UpdateParameters();
}
}
public int RamTextUpdateRate
{
get => m_ramTextUpdateRate;
set
{
m_ramTextUpdateRate = value;
m_ramManager.UpdateParameters();
}
}
// Getters
public float AllocatedRam => m_ramMonitor.AllocatedRam;
public float ReservedRam => m_ramMonitor.ReservedRam;
public float MonoRam => m_ramMonitor.MonoRam;
// Audio -------------------------------------------------------------------------
// Setters & Getters
public ModuleState AudioModuleState
{
get => m_audioModuleState;
set
{
m_audioModuleState = value;
m_audioManager.SetState(m_audioModuleState);
}
}
public AudioListener AudioListener
{
get => m_audioListener;
set
{
m_audioListener = value;
m_audioManager.UpdateParameters();
}
}
public LookForAudioListener
FindAudioListenerInCameraIfNull
{
get => m_findAudioListenerInCameraIfNull;
set
{
m_findAudioListenerInCameraIfNull = value;
m_audioManager.UpdateParameters();
}
}
public Color AudioGraphColor
{
get => m_audioGraphColor;
set
{
m_audioGraphColor = value;
m_audioManager.UpdateParameters();
}
}
public int AudioGraphResolution
{
get => m_audioGraphResolution;
set
{
m_audioGraphResolution = value;
m_audioManager.UpdateParameters();
}
}
public int AudioTextUpdateRate
{
get => m_audioTextUpdateRate;
set
{
m_audioTextUpdateRate = value;
m_audioManager.UpdateParameters();
}
}
public FFTWindow FftWindow
{
get => m_FFTWindow;
set
{
m_FFTWindow = value;
m_audioManager.UpdateParameters();
}
}
public int SpectrumSize
{
get => m_spectrumSize;
set
{
m_spectrumSize = value;
m_audioManager.UpdateParameters();
}
}
// Getters
/// <summary>
/// Current audio spectrum from the specified AudioListener.
/// </summary>
public float[] Spectrum => m_audioMonitor.Spectrum;
/// <summary>
/// Maximum DB registered in the current spectrum.
/// </summary>
public float MaxDB => m_audioMonitor.MaxDB;
// Advanced ---------------------------------------------------------------------
// Setters & Getters
public ModuleState AdvancedModuleState
{
get => m_advancedModuleState;
set
{
m_advancedModuleState = value;
m_advancedData.SetState(m_advancedModuleState);
}
}
public ModulePosition AdvancedModulePosition
{
get => m_advancedModulePosition;
set
{
m_advancedModulePosition = value;
m_advancedData.SetPosition(m_advancedModulePosition);
}
}
#endregion
#region Methods -> Unity Callbacks
private void Start()
{
Init();
}
private void OnDestroy()
{
G_IntString.Dispose();
G_FloatString.Dispose();
}
private void Update()
{
if (m_focused && m_enableHotkeys) CheckForHotkeyPresses();
}
private void OnApplicationFocus(bool isFocused)
{
m_focused = isFocused;
if (m_initialized && isFocused) RefreshAllParameters();
}
#endregion
#region Methods -> Public
public void SetModulePosition(ModuleType moduleType, ModulePosition modulePosition)
{
switch (moduleType)
{
case ModuleType.FPS:
case ModuleType.RAM:
case ModuleType.AUDIO:
m_graphModulePosition = modulePosition;
m_ramManager.SetPosition(modulePosition);
m_fpsManager.SetPosition(modulePosition);
m_audioManager.SetPosition(modulePosition);
break;
case ModuleType.ADVANCED:
m_advancedData.SetPosition(modulePosition);
break;
}
}
public void SetModuleMode(ModuleType moduleType, ModuleState moduleState)
{
switch (moduleType)
{
case ModuleType.FPS:
m_fpsManager.SetState(moduleState);
break;
case ModuleType.RAM:
m_ramManager.SetState(moduleState);
break;
case ModuleType.AUDIO:
m_audioManager.SetState(moduleState);
break;
case ModuleType.ADVANCED:
m_advancedData.SetState(moduleState);
break;
}
}
public void ToggleModes()
{
if ((int)m_modulePresetState >= Enum.GetNames(typeof(ModulePreset)).Length - 1)
m_modulePresetState = 0;
else
m_modulePresetState++;
SetPreset(m_modulePresetState);
}
public void SetPreset(ModulePreset modulePreset)
{
m_modulePresetState = modulePreset;
switch (m_modulePresetState)
{
case ModulePreset.FPS_BASIC:
m_fpsManager.SetState(ModuleState.BASIC);
m_ramManager.SetState(ModuleState.OFF);
m_audioManager.SetState(ModuleState.OFF);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_TEXT:
m_fpsManager.SetState(ModuleState.TEXT);
m_ramManager.SetState(ModuleState.OFF);
m_audioManager.SetState(ModuleState.OFF);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_FULL:
m_fpsManager.SetState(ModuleState.FULL);
m_ramManager.SetState(ModuleState.OFF);
m_audioManager.SetState(ModuleState.OFF);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_TEXT_RAM_TEXT:
m_fpsManager.SetState(ModuleState.TEXT);
m_ramManager.SetState(ModuleState.TEXT);
m_audioManager.SetState(ModuleState.OFF);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_FULL_RAM_TEXT:
m_fpsManager.SetState(ModuleState.FULL);
m_ramManager.SetState(ModuleState.TEXT);
m_audioManager.SetState(ModuleState.OFF);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_FULL_RAM_FULL:
m_fpsManager.SetState(ModuleState.FULL);
m_ramManager.SetState(ModuleState.FULL);
m_audioManager.SetState(ModuleState.OFF);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_TEXT_RAM_TEXT_AUDIO_TEXT:
m_fpsManager.SetState(ModuleState.TEXT);
m_ramManager.SetState(ModuleState.TEXT);
m_audioManager.SetState(ModuleState.TEXT);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_FULL_RAM_TEXT_AUDIO_TEXT:
m_fpsManager.SetState(ModuleState.FULL);
m_ramManager.SetState(ModuleState.TEXT);
m_audioManager.SetState(ModuleState.TEXT);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_FULL_RAM_FULL_AUDIO_TEXT:
m_fpsManager.SetState(ModuleState.FULL);
m_ramManager.SetState(ModuleState.FULL);
m_audioManager.SetState(ModuleState.TEXT);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_FULL_RAM_FULL_AUDIO_FULL:
m_fpsManager.SetState(ModuleState.FULL);
m_ramManager.SetState(ModuleState.FULL);
m_audioManager.SetState(ModuleState.FULL);
m_advancedData.SetState(ModuleState.OFF);
break;
case ModulePreset.FPS_FULL_RAM_FULL_AUDIO_FULL_ADVANCED_FULL:
m_fpsManager.SetState(ModuleState.FULL);
m_ramManager.SetState(ModuleState.FULL);
m_audioManager.SetState(ModuleState.FULL);
m_advancedData.SetState(ModuleState.FULL);
break;
case ModulePreset.FPS_BASIC_ADVANCED_FULL:
m_fpsManager.SetState(ModuleState.BASIC);
m_ramManager.SetState(ModuleState.OFF);
m_audioManager.SetState(ModuleState.OFF);
m_advancedData.SetState(ModuleState.FULL);
break;
default:
Debug.LogWarning("[GraphyManager]::SetPreset - Tried to set a preset that is not supported.");
break;
}
}
public void ToggleActive()
{
if (!m_active)
Enable();
else
Disable();
}
public void Enable()
{
if (!m_active)
{
if (m_initialized)
{
m_fpsManager.RestorePreviousState();
m_ramManager.RestorePreviousState();
m_audioManager.RestorePreviousState();
m_advancedData.RestorePreviousState();
m_active = true;
}
else
{
Init();
}
}
}
public void Disable()
{
if (m_active)
{
m_fpsManager.SetState(ModuleState.OFF);
m_ramManager.SetState(ModuleState.OFF);
m_audioManager.SetState(ModuleState.OFF);
m_advancedData.SetState(ModuleState.OFF);
m_active = false;
}
}
#endregion
#region Methods -> Private
private void Init()
{
if (m_keepAlive) DontDestroyOnLoad(transform.root.gameObject);
m_fpsMonitor = GetComponentInChildren(typeof(G_FpsMonitor), true) as G_FpsMonitor;
m_ramMonitor = GetComponentInChildren(typeof(G_RamMonitor), true) as G_RamMonitor;
m_audioMonitor = GetComponentInChildren(typeof(G_AudioMonitor), true) as G_AudioMonitor;
m_fpsManager = GetComponentInChildren(typeof(G_FpsManager), true) as G_FpsManager;
m_ramManager = GetComponentInChildren(typeof(G_RamManager), true) as G_RamManager;
m_audioManager = GetComponentInChildren(typeof(G_AudioManager), true) as G_AudioManager;
m_advancedData = GetComponentInChildren(typeof(G_AdvancedData), true) as G_AdvancedData;
m_fpsManager.SetPosition(m_graphModulePosition);
m_ramManager.SetPosition(m_graphModulePosition);
m_audioManager.SetPosition(m_graphModulePosition);
m_advancedData.SetPosition(m_advancedModulePosition);
m_fpsManager.SetState(m_fpsModuleState);
m_ramManager.SetState(m_ramModuleState);
m_audioManager.SetState(m_audioModuleState);
m_advancedData.SetState(m_advancedModuleState);
if (!m_enableOnStartup)
{
ToggleActive();
// We need to enable this on startup because we disable it in GraphyManagerEditor
GetComponent<Canvas>().enabled = true;
}
m_initialized = true;
}
private void CheckForHotkeyPresses()
{
#if GRAPHY_NEW_INPUT
// Toggle Mode ---------------------------------------
if (m_toggleModeCtrl && m_toggleModeAlt)
{
if (CheckFor3KeyPress(m_toggleModeKeyCode, Key.LeftCtrl, Key.LeftAlt)
|| CheckFor3KeyPress(m_toggleModeKeyCode, Key.RightCtrl, Key.LeftAlt)
|| CheckFor3KeyPress(m_toggleModeKeyCode, Key.RightCtrl, Key.RightAlt)
|| CheckFor3KeyPress(m_toggleModeKeyCode, Key.LeftCtrl, Key.RightAlt))
{
ToggleModes();
}
}
else if (m_toggleModeCtrl)
{
if (CheckFor2KeyPress(m_toggleModeKeyCode, Key.LeftCtrl)
|| CheckFor2KeyPress(m_toggleModeKeyCode, Key.RightCtrl))
{
ToggleModes();
}
}
else if (m_toggleModeAlt)
{
if (CheckFor2KeyPress(m_toggleModeKeyCode, Key.LeftAlt)
|| CheckFor2KeyPress(m_toggleModeKeyCode, Key.RightAlt))
{
ToggleModes();
}
}
else
{
if (CheckFor1KeyPress(m_toggleModeKeyCode))
{
ToggleModes();
}
}
// Toggle Active -------------------------------------
if (m_toggleActiveCtrl && m_toggleActiveAlt)
{
if (CheckFor3KeyPress(m_toggleActiveKeyCode, Key.LeftCtrl, Key.LeftAlt)
|| CheckFor3KeyPress(m_toggleActiveKeyCode, Key.RightCtrl, Key.LeftAlt)
|| CheckFor3KeyPress(m_toggleActiveKeyCode, Key.RightCtrl, Key.RightAlt)
|| CheckFor3KeyPress(m_toggleActiveKeyCode, Key.LeftCtrl, Key.RightAlt))
{
ToggleActive();
}
}
else if (m_toggleActiveCtrl)
{
if (CheckFor2KeyPress(m_toggleActiveKeyCode, Key.LeftCtrl)
|| CheckFor2KeyPress(m_toggleActiveKeyCode, Key.RightCtrl))
{
ToggleActive();
}
}
else if (m_toggleActiveAlt)
{
if (CheckFor2KeyPress(m_toggleActiveKeyCode, Key.LeftAlt)
|| CheckFor2KeyPress(m_toggleActiveKeyCode, Key.RightAlt))
{
ToggleActive();
}
}
else
{
if (CheckFor1KeyPress(m_toggleActiveKeyCode))
{
ToggleActive();
}
}
#else
// Toggle Mode ---------------------------------------
if (m_toggleModeCtrl && m_toggleModeAlt)
{
if (CheckFor3KeyPress(m_toggleModeKeyCode, KeyCode.LeftControl, KeyCode.LeftAlt)
|| CheckFor3KeyPress(m_toggleModeKeyCode, KeyCode.RightControl, KeyCode.LeftAlt)
|| CheckFor3KeyPress(m_toggleModeKeyCode, KeyCode.RightControl, KeyCode.RightAlt)
|| CheckFor3KeyPress(m_toggleModeKeyCode, KeyCode.LeftControl, KeyCode.RightAlt))
ToggleModes();
}
else if (m_toggleModeCtrl)
{
if (CheckFor2KeyPress(m_toggleModeKeyCode, KeyCode.LeftControl)
|| CheckFor2KeyPress(m_toggleModeKeyCode, KeyCode.RightControl))
ToggleModes();
}
else if (m_toggleModeAlt)
{
if (CheckFor2KeyPress(m_toggleModeKeyCode, KeyCode.LeftAlt)
|| CheckFor2KeyPress(m_toggleModeKeyCode, KeyCode.RightAlt))
ToggleModes();
}
else
{
if (CheckFor1KeyPress(m_toggleModeKeyCode)) ToggleModes();
}
// Toggle Active -------------------------------------
if (m_toggleActiveCtrl && m_toggleActiveAlt)
{
if (CheckFor3KeyPress(m_toggleActiveKeyCode, KeyCode.LeftControl, KeyCode.LeftAlt)
|| CheckFor3KeyPress(m_toggleActiveKeyCode, KeyCode.RightControl, KeyCode.LeftAlt)
|| CheckFor3KeyPress(m_toggleActiveKeyCode, KeyCode.RightControl, KeyCode.RightAlt)
|| CheckFor3KeyPress(m_toggleActiveKeyCode, KeyCode.LeftControl, KeyCode.RightAlt))
ToggleActive();
}
else if (m_toggleActiveCtrl)
{
if (CheckFor2KeyPress(m_toggleActiveKeyCode, KeyCode.LeftControl)
|| CheckFor2KeyPress(m_toggleActiveKeyCode, KeyCode.RightControl))
ToggleActive();
}
else if (m_toggleActiveAlt)
{
if (CheckFor2KeyPress(m_toggleActiveKeyCode, KeyCode.LeftAlt)
|| CheckFor2KeyPress(m_toggleActiveKeyCode, KeyCode.RightAlt))
ToggleActive();
}
else
{
if (CheckFor1KeyPress(m_toggleActiveKeyCode)) ToggleActive();
}
#endif
}
#if GRAPHY_NEW_INPUT
private bool CheckFor1KeyPress(Key key)
{
Keyboard currentKeyboard = Keyboard.current;
if (currentKeyboard != null)
{
return Keyboard.current[key].wasPressedThisFrame;
}
return false;
}
private bool CheckFor2KeyPress(Key key1, Key key2)
{
Keyboard currentKeyboard = Keyboard.current;
if (currentKeyboard != null)
{
return Keyboard.current[key1].wasPressedThisFrame && Keyboard.current[key2].isPressed
|| Keyboard.current[key2].wasPressedThisFrame && Keyboard.current[key1].isPressed;
}
return false;
}
private bool CheckFor3KeyPress(Key key1, Key key2, Key key3)
{
Keyboard currentKeyboard = Keyboard.current;
if (currentKeyboard != null)
{
return Keyboard.current[key1].wasPressedThisFrame && Keyboard.current[key2].isPressed && Keyboard.current[key3].isPressed
|| Keyboard.current[key2].wasPressedThisFrame && Keyboard.current[key1].isPressed && Keyboard.current[key3].isPressed
|| Keyboard.current[key3].wasPressedThisFrame && Keyboard.current[key1].isPressed && Keyboard.current[key2].isPressed;
}
return false;
}
#else
private bool CheckFor1KeyPress(KeyCode key)
{
return Input.GetKeyDown(key);
}
private bool CheckFor2KeyPress(KeyCode key1, KeyCode key2)
{
return (Input.GetKeyDown(key1) && Input.GetKey(key2))
|| (Input.GetKeyDown(key2) && Input.GetKey(key1));
}
private bool CheckFor3KeyPress(KeyCode key1, KeyCode key2, KeyCode key3)
{
return (Input.GetKeyDown(key1) && Input.GetKey(key2) && Input.GetKey(key3))
|| (Input.GetKeyDown(key2) && Input.GetKey(key1) && Input.GetKey(key3))
|| (Input.GetKeyDown(key3) && Input.GetKey(key1) && Input.GetKey(key2));
}
#endif
private void UpdateAllParameters()
{
m_fpsManager.UpdateParameters();
m_ramManager.UpdateParameters();
m_audioManager.UpdateParameters();
m_advancedData.UpdateParameters();
}
private void RefreshAllParameters()
{
m_fpsManager.RefreshParameters();
m_ramManager.RefreshParameters();
m_audioManager.RefreshParameters();
m_advancedData.RefreshParameters();
}
#endregion
}
}