aboutsummaryrefslogtreecommitdiff
path: root/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Advanced/G_AdvancedData.cs
diff options
context:
space:
mode:
authorAlee <Alee14498@gmail.com>2019-06-09 13:18:33 -0400
committerAlee <Alee14498@gmail.com>2019-06-09 13:18:33 -0400
commit9ef63b49ccc6636d8c1bb5f1e04a2f22587d5487 (patch)
tree208a2e51d7723694fd2b411583fe858e511c3b1a /Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Advanced/G_AdvancedData.cs
parent902b1f4e758d85fe5c30a316acf0366ed6bcb297 (diff)
downloadUnicity-9ef63b49ccc6636d8c1bb5f1e04a2f22587d5487.tar.gz
Unicity-9ef63b49ccc6636d8c1bb5f1e04a2f22587d5487.tar.bz2
Unicity-9ef63b49ccc6636d8c1bb5f1e04a2f22587d5487.zip
Added Graphy
Diffstat (limited to 'Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Advanced/G_AdvancedData.cs')
-rw-r--r--Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Advanced/G_AdvancedData.cs376
1 files changed, 376 insertions, 0 deletions
diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Advanced/G_AdvancedData.cs b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Advanced/G_AdvancedData.cs
new file mode 100644
index 0000000..92081b5
--- /dev/null
+++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Advanced/G_AdvancedData.cs
@@ -0,0 +1,376 @@
+/* ---------------------------------------
+ * Author: Martin Pane (martintayx@gmail.com) (@tayx94)
+ * Collaborators: Lars Aalbertsen (@Rockylars)
+ * Project: Graphy - Ultimate Stats Monitor
+ * Date: 05-Dec-17
+ * Studio: Tayx
+ *
+ * This project is released under the MIT license.
+ * Attribution is not required, but it is always welcomed!
+ * -------------------------------------*/
+
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections.Generic;
+using System.Text;
+using Tayx.Graphy.UI;
+using Tayx.Graphy.Utils;
+using Tayx.Graphy.Utils.NumString;
+
+#if UNITY_5_5_OR_NEWER
+using UnityEngine.Profiling;
+#endif
+
+namespace Tayx.Graphy.Advanced
+{
+ public class G_AdvancedData : MonoBehaviour, IMovable, IModifiableState
+ {
+ /* ----- TODO: ----------------------------
+ * Add summaries to the variables.
+ * Add summaries to the functions.
+ * --------------------------------------*/
+
+ #region Variables -> Serialized Private
+
+ [SerializeField] private List<Image> m_backgroundImages = new List<Image>();
+
+ [SerializeField] private Text m_graphicsDeviceVersionText = null;
+
+ [SerializeField] private Text m_processorTypeText = null;
+
+ [SerializeField] private Text m_operatingSystemText = null;
+
+ [SerializeField] private Text m_systemMemoryText = null;
+
+ [SerializeField] private Text m_graphicsDeviceNameText = null;
+ [SerializeField] private Text m_graphicsMemorySizeText = null;
+ [SerializeField] private Text m_screenResolutionText = null;
+ [SerializeField] private Text m_gameWindowResolutionText = null;
+
+ [Range(1, 60)]
+ [SerializeField] private float m_updateRate = 1f; // 1 update per sec.
+
+ #endregion
+
+ #region Variables -> Private
+
+ private GraphyManager m_graphyManager = null;
+
+ private RectTransform m_rectTransform = null;
+
+ private float m_deltaTime = 0.0f;
+
+ private StringBuilder m_sb = null;
+
+ private GraphyManager.ModuleState m_previousModuleState = GraphyManager.ModuleState.FULL;
+ private GraphyManager.ModuleState m_currentModuleState = GraphyManager.ModuleState.FULL;
+
+ private readonly string[] m_windowStrings =
+ {
+ "Window: ",
+ "x",
+ "@",
+ "Hz",
+ "[",
+ "dpi]"
+ };
+
+ #endregion
+
+ #region Methods -> Unity Callbacks
+
+ private void OnEnable()
+ {
+ Init();
+ }
+
+ private void Update()
+ {
+ m_deltaTime += Time.unscaledDeltaTime;
+
+ if (m_deltaTime > 1f / m_updateRate)
+ {
+ // Update screen window resolution
+ m_sb.Length = 0;
+
+ m_sb.Append(m_windowStrings[0]).Append(Screen.width.ToStringNonAlloc())
+ .Append(m_windowStrings[1]).Append(Screen.height.ToStringNonAlloc())
+ .Append(m_windowStrings[2]).Append(Screen.currentResolution.refreshRate.ToStringNonAlloc())
+ .Append(m_windowStrings[3])
+ .Append(m_windowStrings[4]).Append(Screen.dpi.ToStringNonAlloc())
+ .Append(m_windowStrings[5]);
+
+ m_gameWindowResolutionText.text = m_sb.ToString();
+
+ // Reset variables
+ m_deltaTime = 0f;
+ }
+ }
+
+ #endregion
+
+ #region Methods -> Public
+
+ public void SetPosition(GraphyManager.ModulePosition newModulePosition)
+ {
+ float xSideOffsetBackgroundImage = Mathf.Abs(m_backgroundImages[0].rectTransform.anchoredPosition.x);
+ float ySideOffset = Mathf.Abs(m_rectTransform.anchoredPosition.y);
+
+ switch (newModulePosition)
+ {
+ case GraphyManager.ModulePosition.TOP_LEFT:
+
+ m_rectTransform.anchorMax = Vector2.one;
+ m_rectTransform.anchorMin = Vector2.up;
+ m_rectTransform.anchoredPosition = new Vector2(0, -ySideOffset);
+
+
+ m_backgroundImages[0].rectTransform.anchorMax = Vector2.up;
+ m_backgroundImages[0].rectTransform.anchorMin = Vector2.zero;
+ m_backgroundImages[0].rectTransform.anchoredPosition = new Vector2(xSideOffsetBackgroundImage, 0);
+
+ break;
+
+ case GraphyManager.ModulePosition.TOP_RIGHT:
+
+ m_rectTransform.anchorMax = Vector2.one;
+ m_rectTransform.anchorMin = Vector2.up;
+ m_rectTransform.anchoredPosition = new Vector2(0, -ySideOffset);
+
+ m_backgroundImages[0].rectTransform.anchorMax = Vector2.one;
+ m_backgroundImages[0].rectTransform.anchorMin = Vector2.right;
+ m_backgroundImages[0].rectTransform.anchoredPosition = new Vector2(-xSideOffsetBackgroundImage, 0);
+
+ break;
+
+ case GraphyManager.ModulePosition.BOTTOM_LEFT:
+
+ m_rectTransform.anchorMax = Vector2.right;
+ m_rectTransform.anchorMin = Vector2.zero;
+ m_rectTransform.anchoredPosition = new Vector2(0, ySideOffset);
+
+ m_backgroundImages[0].rectTransform.anchorMax = Vector2.up;
+ m_backgroundImages[0].rectTransform.anchorMin = Vector2.zero;
+ m_backgroundImages[0].rectTransform.anchoredPosition = new Vector2(xSideOffsetBackgroundImage, 0);
+
+ break;
+
+ case GraphyManager.ModulePosition.BOTTOM_RIGHT:
+
+ m_rectTransform.anchorMax = Vector2.right;
+ m_rectTransform.anchorMin = Vector2.zero;
+ m_rectTransform.anchoredPosition = new Vector2(0, ySideOffset);
+
+ m_backgroundImages[0].rectTransform.anchorMax = Vector2.one;
+ m_backgroundImages[0].rectTransform.anchorMin = Vector2.right;
+ m_backgroundImages[0].rectTransform.anchoredPosition = new Vector2(-xSideOffsetBackgroundImage, 0);
+
+ break;
+
+ case GraphyManager.ModulePosition.FREE:
+ break;
+ }
+
+ switch (newModulePosition)
+ {
+ case GraphyManager.ModulePosition.TOP_LEFT:
+ case GraphyManager.ModulePosition.BOTTOM_LEFT:
+
+ m_processorTypeText .alignment = TextAnchor.UpperLeft;
+ m_systemMemoryText .alignment = TextAnchor.UpperLeft;
+ m_graphicsDeviceNameText .alignment = TextAnchor.UpperLeft;
+ m_graphicsDeviceVersionText .alignment = TextAnchor.UpperLeft;
+ m_graphicsMemorySizeText .alignment = TextAnchor.UpperLeft;
+ m_screenResolutionText .alignment = TextAnchor.UpperLeft;
+ m_gameWindowResolutionText .alignment = TextAnchor.UpperLeft;
+ m_operatingSystemText .alignment = TextAnchor.UpperLeft;
+
+ break;
+
+ case GraphyManager.ModulePosition.TOP_RIGHT:
+ case GraphyManager.ModulePosition.BOTTOM_RIGHT:
+
+ m_processorTypeText .alignment = TextAnchor.UpperRight;
+ m_systemMemoryText .alignment = TextAnchor.UpperRight;
+ m_graphicsDeviceNameText .alignment = TextAnchor.UpperRight;
+ m_graphicsDeviceVersionText .alignment = TextAnchor.UpperRight;
+ m_graphicsMemorySizeText .alignment = TextAnchor.UpperRight;
+ m_screenResolutionText .alignment = TextAnchor.UpperRight;
+ m_gameWindowResolutionText .alignment = TextAnchor.UpperRight;
+ m_operatingSystemText .alignment = TextAnchor.UpperRight;
+
+ break;
+
+ case GraphyManager.ModulePosition.FREE:
+ break;
+ }
+ }
+
+ public void SetState(GraphyManager.ModuleState state, bool silentUpdate = false)
+ {
+ if (!silentUpdate)
+ {
+ m_previousModuleState = m_currentModuleState;
+ }
+
+ m_currentModuleState = state;
+
+ bool active = state == GraphyManager.ModuleState.FULL
+ || state == GraphyManager.ModuleState.TEXT
+ || state == GraphyManager.ModuleState.BASIC;
+
+ gameObject.SetActive(active);
+
+ m_backgroundImages.SetAllActive(active && m_graphyManager.Background);
+ }
+
+ /// <summary>
+ /// Restores state to the previous one.
+ /// </summary>
+ public void RestorePreviousState()
+ {
+ SetState(m_previousModuleState);
+ }
+
+ public void UpdateParameters()
+ {
+ foreach (var image in m_backgroundImages)
+ {
+ image.color = m_graphyManager.BackgroundColor;
+ }
+
+ SetPosition(m_graphyManager.AdvancedModulePosition);
+ SetState(m_graphyManager.AdvancedModuleState);
+ }
+
+ public void RefreshParameters()
+ {
+ foreach (var image in m_backgroundImages)
+ {
+ image.color = m_graphyManager.BackgroundColor;
+ }
+
+ SetPosition(m_graphyManager.AdvancedModulePosition);
+ SetState(m_currentModuleState, true);
+ }
+
+ #endregion
+
+ #region Methods -> Private
+
+ private void Init()
+ {
+ //TODO: Replace this with one activated from the core and figure out the min value.
+ if (!G_FloatString.Inited
+ || G_FloatString.MinValue > -1000f
+ || G_FloatString.MaxValue < 16384f)
+ {
+ G_FloatString.Init
+ (
+ minNegativeValue: -1001f,
+ maxPositiveValue: 16386f
+ );
+ }
+
+ m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
+
+ m_sb = new StringBuilder();
+
+ m_rectTransform = GetComponent<RectTransform>();
+
+ #region Section -> Text
+
+ m_processorTypeText.text
+ = "CPU: "
+ + SystemInfo.processorType
+ + " ["
+ + SystemInfo.processorCount
+ + " cores]";
+
+ m_systemMemoryText.text
+ = "RAM: "
+ + SystemInfo.systemMemorySize
+ + " MB";
+
+ m_graphicsDeviceVersionText.text
+ = "Graphics API: "
+ + SystemInfo.graphicsDeviceVersion;
+
+ m_graphicsDeviceNameText.text
+ = "GPU: "
+ + SystemInfo.graphicsDeviceName;
+
+ m_graphicsMemorySizeText.text
+ = "VRAM: "
+ + SystemInfo.graphicsMemorySize
+ + "MB. Max texture size: "
+ + SystemInfo.maxTextureSize
+ + "px. Shader level: "
+ + SystemInfo.graphicsShaderLevel;
+
+ Resolution res = Screen.currentResolution;
+
+ m_screenResolutionText.text
+ = "Screen: "
+ + res.width
+ + "x"
+ + res.height
+ + "@"
+ + res.refreshRate
+ + "Hz";
+
+ m_operatingSystemText.text
+ = "OS: "
+ + SystemInfo.operatingSystem
+ + " ["
+ + SystemInfo.deviceType
+ + "]";
+
+ float preferredWidth = 0;
+
+ // Resize the background overlay
+
+ List<Text> texts = new List<Text>()
+ {
+ m_graphicsDeviceVersionText,
+ m_processorTypeText,
+ m_systemMemoryText,
+ m_graphicsDeviceNameText,
+ m_graphicsMemorySizeText,
+ m_screenResolutionText,
+ m_gameWindowResolutionText,
+ m_operatingSystemText
+ };
+
+ foreach (var text in texts)
+ {
+ if (text.preferredWidth > preferredWidth)
+ {
+ preferredWidth = text.preferredWidth;
+ }
+ }
+
+ #endregion
+
+ #region Section -> Background Images
+
+ m_backgroundImages[0].rectTransform.SetSizeWithCurrentAnchors
+ (
+ axis: RectTransform.Axis.Horizontal,
+ size: preferredWidth + 10
+ );
+
+ m_backgroundImages[0].rectTransform.anchoredPosition = new Vector2
+ (
+ x: (preferredWidth + 15) / 2 * Mathf.Sign(m_backgroundImages[0].rectTransform.anchoredPosition.x),
+ y: m_backgroundImages[0].rectTransform.anchoredPosition.y
+ );
+
+ #endregion
+
+ UpdateParameters();
+ }
+
+ #endregion
+ }
+} \ No newline at end of file