The fucking 3rd time i had to upload this project to git
This commit is contained in:
8
Assets/Plugins/Graphy - Ultimate Stats Monitor.meta
Normal file
8
Assets/Plugins/Graphy - Ultimate Stats Monitor.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8bed742f71ffd2c4b9cc00e000641dea
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
161
Assets/Plugins/Graphy - Ultimate Stats Monitor/Changelog.txt
Normal file
161
Assets/Plugins/Graphy - Ultimate Stats Monitor/Changelog.txt
Normal file
@ -0,0 +1,161 @@
|
||||
-----------------------------
|
||||
v2.1.3
|
||||
|
||||
- Added null check for Keyboard.current.
|
||||
|
||||
-----------------------------
|
||||
v2.1.2
|
||||
|
||||
- Fixed NullRef in AudioMonitor if no main camera is in the scene.
|
||||
|
||||
-----------------------------
|
||||
v2.1.1
|
||||
|
||||
- Small hotfix for a index of out bounds error.
|
||||
- Simplified Singleton class to allow Graphy to be Destroyed.
|
||||
- Deallocating cached strings on Destroy to free up memory.
|
||||
|
||||
-----------------------------
|
||||
v2.1.0
|
||||
|
||||
- Pretty big refactor.
|
||||
- Lots of optimization.
|
||||
- Removed min/max fps for 1% and 0.1% lows, which is the industry standard now.
|
||||
- Improved UI. Added rounded corners and a better default color palette.
|
||||
|
||||
-----------------------------
|
||||
v2.0.1
|
||||
|
||||
- Updated package.json to 2.0.1.
|
||||
|
||||
-----------------------------
|
||||
v2.0.0
|
||||
|
||||
- Now supports UPM (Unity Package Manager).
|
||||
- Minimum official supported version is now Unity 2019.3.0. If you want a version that supports 5.4+, go to Github to download it.
|
||||
- Lots of minor tweaks, optimizations and bugfixes.
|
||||
|
||||
-----------------------------
|
||||
v1.6.0
|
||||
|
||||
This is the last release that will officially support Unity 5.4+. Next releases will be targeted towards 2019.3+.
|
||||
|
||||
- Minor tweaks, optimizations and bugfixes.
|
||||
- Added support for VR single pass instanced rendering.
|
||||
|
||||
-----------------------------
|
||||
v1.5.2
|
||||
|
||||
- Removed asmdefs to avoid missing reference issues in new Unity alpha versions.
|
||||
- Improvements avgFps calculation, changed list to array (thanks @Kaladrius2trip).
|
||||
|
||||
-----------------------------
|
||||
v1.5.1
|
||||
|
||||
- Hide Graphy in Game view when it's be disabled on startup.
|
||||
- Fixed error if no camera is present in the scene.
|
||||
- Added SceneManager namespace so to avoid possible conflicts.
|
||||
- Added support for asmdefs (thanks @QSFW).
|
||||
|
||||
-----------------------------
|
||||
v1.5
|
||||
|
||||
- Fixed a number alignment in the audio module (thanks @SuperPenguin).
|
||||
- Refactored some code to avoid warnings with the new NET framework 4.0.
|
||||
- Shader sorting fix for Screen Space - Camera.
|
||||
- Fixed a possible Null Reference Error in the debugger (thanks @strawlink).
|
||||
- Fixed import settings in 2 textures (thanks @strawlink).
|
||||
- Renamed all Action into System.Action to avoid possible namespace conflicts.
|
||||
- Fixed the int rounding to prevent 59.99999FPS from turning into 59FPS (thanks @Rockylars).
|
||||
|
||||
-----------------------------
|
||||
v1.4.3
|
||||
|
||||
- Renamed all the classes with the "G_" prefix to avoid namespace issues with external code (thanks @Rockylars).
|
||||
- Refactored some code and added explanations and regions in the G_ShaderGraph class.
|
||||
- Assigned all the variables in their declaration to avoid a new NET framework warning.
|
||||
|
||||
-----------------------------
|
||||
v1.4.2
|
||||
|
||||
- Added the option to disable hotkeys.
|
||||
- Disabled hotkey check when Editor is not focused (thanks @Rockylars).
|
||||
- Refatored and cleaned up code (thanks @Rockylars).
|
||||
- Fixed a bug where if the app was defocused and focused back, it would reset Graphy's module active values (thanks @Rockylars).
|
||||
|
||||
-----------------------------
|
||||
v1.4.1
|
||||
|
||||
- Introduced plenty of safety checks to avoid some null reference errors.
|
||||
- Possibly fixed the graphs bug when the Editor is defocused and focused back.
|
||||
- Code cleanup and refactoring.
|
||||
|
||||
-----------------------------
|
||||
v1.4
|
||||
|
||||
- Updated the header comments in all scripts.
|
||||
- Added option to toggle active on start up (thanks @DarkMio).
|
||||
- Removed a leftover raycast script in the Graphy UI.Canvas (thanks @DarkMio).
|
||||
- Updated the shaders to use UnityObjectToClipPos() (thanks @DarkMio).
|
||||
- Bug-Fix: NullRef for EditorStyles.boldlabel (thanks @Flavelius)
|
||||
|
||||
-----------------------------
|
||||
v1.3
|
||||
|
||||
- Added a second graph to the Audio module that shows the highest spectrum value.
|
||||
- Added option to Toggle Active and Mode, as well as setting a specific Preset from the API.
|
||||
- Fixed a bug that occured when Time.timeScale = 0 (thanks @xDavidLeon!).
|
||||
|
||||
-----------------------------
|
||||
v1.2.2
|
||||
|
||||
- Improved the dB calculations, now the values are much more precise.
|
||||
|
||||
-----------------------------
|
||||
v1.2.1
|
||||
|
||||
- Modified the default UI text values to more generic placeholders to increase clarity.
|
||||
- Small fixes in the audio module.
|
||||
|
||||
-----------------------------
|
||||
v1.2
|
||||
|
||||
- MASSIVE reduction in garbage generation. From 8-10 KB every 2-3 seconds to just 200-300 bytes. Garbage generation right now is negligible.
|
||||
- Some code optimizations.
|
||||
|
||||
-----------------------------
|
||||
v1.1
|
||||
|
||||
- New Feature: Added a modifiable MODE. If set to LIGHT it will reduce some features or maximum values (like graph resolution) but it will improve compatibility with older hardware.
|
||||
- Small performance optimizations.
|
||||
- Code refactoring.
|
||||
- Improved the vetical alpha fade-off effect in the graph to make it more visible for lower values.
|
||||
- Updated the "Customize Graphy" scene to account for these new changes.
|
||||
|
||||
-----------------------------
|
||||
v1.0
|
||||
|
||||
- First major update!
|
||||
- Removed some leftover raycast targets from the Graphy UI to avoid interfering with users UI.
|
||||
- Added a Customization Scene that allows changing all the parameters in runtime to improve the user experience when testing new values.
|
||||
- Added a feature to rescale the background overlay of the Advanced Data module to the text with the highest width.
|
||||
- Made ALL parameters modifiable from code using the API.
|
||||
- Fixed a bug where sometimes the Graphy Manager would fail trying to retrieve the Audio Module.
|
||||
- Improved stabilty.
|
||||
|
||||
-----------------------------
|
||||
v0.6
|
||||
|
||||
- Added a feature to choose if you want to apply a background overlay to Graphy, improving readability in cluttered scenes.
|
||||
- Optimized the access to Shader parameters when updating them, improving performance.
|
||||
|
||||
-----------------------------
|
||||
v0.5.1
|
||||
|
||||
- Added a feature to choose if you want to keep Graphy alive through scene changes. Careful, if you activate it but Graphy is the child of another object, the root GameObject will also survive scene changes.
|
||||
- Fixed a bug where setting Graphy as a child of another object would break the graphs.
|
||||
|
||||
-----------------------------
|
||||
v0.5
|
||||
|
||||
- Initial release!
|
@ -0,0 +1,13 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 425066d07b7c1204887be96c53348ac6
|
||||
labels:
|
||||
- counter
|
||||
- fps
|
||||
- graphy
|
||||
- tayx
|
||||
timeCreated: 1515072754
|
||||
licenseType: Store
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 74026f7916b08a343916493b0a1752cc
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,552 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 02-Jan-18
|
||||
* 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.Collections.Generic;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Tayx.Graphy
|
||||
{
|
||||
[CustomEditor(typeof(GraphyDebugger))]
|
||||
internal class GraphyDebuggerEditor : Editor
|
||||
{
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
m_target = (GraphyDebugger)target;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public Override
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
if (m_target == null && target == null)
|
||||
{
|
||||
base.OnInspectorGUI();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var defaultLabelWidth = EditorGUIUtility.labelWidth;
|
||||
var defaultFieldWidth = EditorGUIUtility.fieldWidth;
|
||||
|
||||
//===== CONTENT REGION ========================================================================
|
||||
|
||||
GUILayout.Space(20);
|
||||
|
||||
#region Section -> Logo
|
||||
|
||||
if (GraphyEditorStyle.DebuggerLogoTexture != null)
|
||||
{
|
||||
GUILayout.Label
|
||||
(
|
||||
GraphyEditorStyle.DebuggerLogoTexture,
|
||||
new GUIStyle(GUI.skin.GetStyle("Label"))
|
||||
{
|
||||
alignment = TextAnchor.UpperCenter
|
||||
}
|
||||
);
|
||||
|
||||
GUILayout.Space(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.LabelField
|
||||
(
|
||||
"[ GRAPHY - DEBUGGER ]",
|
||||
GraphyEditorStyle.HeaderStyle1
|
||||
);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
GUILayout.Space(5); //Extra pixels added when the logo is used.
|
||||
|
||||
#region Section -> Settings
|
||||
|
||||
var serObj = serializedObject;
|
||||
|
||||
var debugPacketList =
|
||||
serObj.FindProperty("m_debugPackets"); // Find the List in our script and create a refrence of it
|
||||
|
||||
//Update our list
|
||||
serObj.Update();
|
||||
|
||||
EditorGUILayout.LabelField("Current [Debug Packets] list size: " + debugPacketList.arraySize);
|
||||
|
||||
EditorGUIUtility.fieldWidth = 32;
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
|
||||
m_newDebugPacketListSize = EditorGUILayout.IntField
|
||||
(
|
||||
"Define a new list size",
|
||||
m_newDebugPacketListSize
|
||||
);
|
||||
|
||||
if (GUILayout.Button("Resize List"))
|
||||
if (EditorUtility.DisplayDialog
|
||||
(
|
||||
"Resize List",
|
||||
"Are you sure you want to resize the entire List?\n\n" +
|
||||
"Current List Size -> " +
|
||||
debugPacketList.arraySize +
|
||||
"\n" +
|
||||
"New List Size -> " +
|
||||
m_newDebugPacketListSize +
|
||||
"\n" +
|
||||
"This will add default entries if the value is greater than the list size, or erase the bottom values until the new size specified.",
|
||||
"Resize",
|
||||
"Cancel")
|
||||
)
|
||||
{
|
||||
m_currentlySelectedDebugPacketIndex = 0;
|
||||
|
||||
if (m_newDebugPacketListSize != debugPacketList.arraySize)
|
||||
{
|
||||
while (m_newDebugPacketListSize > debugPacketList.arraySize)
|
||||
{
|
||||
debugPacketList.InsertArrayElementAtIndex(debugPacketList.arraySize);
|
||||
SetDefaultDebugPacketValues(debugPacketList);
|
||||
}
|
||||
|
||||
while (m_newDebugPacketListSize < debugPacketList.arraySize)
|
||||
debugPacketList.DeleteArrayElementAtIndex(debugPacketList.arraySize - 1);
|
||||
}
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.LabelField("NOT RECOMMENDED (Only use for first initialization)",
|
||||
EditorStyles.centeredGreyMiniLabel);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
if (debugPacketList.arraySize < 1)
|
||||
{
|
||||
m_previouslySelectedDebugPacketIndex = 0;
|
||||
m_currentlySelectedDebugPacketIndex = 0;
|
||||
m_selectedDebugPacketCondition = 0;
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
return;
|
||||
}
|
||||
|
||||
GraphyEditorStyle.HeaderStyle2.contentOffset = Vector2.down * 3f;
|
||||
|
||||
EditorGUILayout.LabelField("Selected debug packet:");
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
var debugPacketNames = new List<string>();
|
||||
for (var i = 0; i < debugPacketList.arraySize; i++)
|
||||
{
|
||||
var listItem = debugPacketList.GetArrayElementAtIndex(i);
|
||||
// NOTE: If the Popup detects two equal strings, it just paints 1, that's why I always add the "i"
|
||||
var checkMark = listItem.FindPropertyRelative("Active").boolValue ? '\u2714' : '\u2718';
|
||||
debugPacketNames.Add
|
||||
(
|
||||
i + 1 +
|
||||
" (" +
|
||||
checkMark +
|
||||
") " +
|
||||
" - ID: " +
|
||||
listItem.FindPropertyRelative("Id").intValue +
|
||||
" (Conditions: " +
|
||||
listItem.FindPropertyRelative("DebugConditions").arraySize +
|
||||
")"
|
||||
);
|
||||
}
|
||||
|
||||
m_currentlySelectedDebugPacketIndex =
|
||||
EditorGUILayout.Popup(m_currentlySelectedDebugPacketIndex, debugPacketNames.ToArray());
|
||||
|
||||
if (m_currentlySelectedDebugPacketIndex != m_previouslySelectedDebugPacketIndex)
|
||||
{
|
||||
m_selectedDebugPacketCondition = 0;
|
||||
|
||||
m_previouslySelectedDebugPacketIndex = m_currentlySelectedDebugPacketIndex;
|
||||
}
|
||||
|
||||
var defaultGUIColor = GUI.color;
|
||||
|
||||
GUI.color = new Color(0.7f, 1f, 0.0f, 1f);
|
||||
|
||||
//Or add a new item to the List<> with a button
|
||||
|
||||
if (GUILayout.Button("Add", GUILayout.Width(60)))
|
||||
{
|
||||
debugPacketList.InsertArrayElementAtIndex(debugPacketList.arraySize);
|
||||
SetDefaultDebugPacketValues(debugPacketList);
|
||||
}
|
||||
|
||||
GUI.color = new Color(1f, 0.7f, 0.0f, 1f);
|
||||
|
||||
//Remove this index from the List
|
||||
|
||||
if (GUILayout.Button("Remove", GUILayout.Width(60)))
|
||||
{
|
||||
debugPacketList.DeleteArrayElementAtIndex(m_currentlySelectedDebugPacketIndex);
|
||||
if (m_currentlySelectedDebugPacketIndex > 0) m_currentlySelectedDebugPacketIndex--;
|
||||
|
||||
if (debugPacketList.arraySize < 1)
|
||||
{
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
GUI.color = defaultGUIColor;
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
//Display our list to the inspector window
|
||||
|
||||
var listItemSelected = debugPacketList.GetArrayElementAtIndex(m_currentlySelectedDebugPacketIndex);
|
||||
|
||||
var Active = listItemSelected.FindPropertyRelative("Active");
|
||||
var Id = listItemSelected.FindPropertyRelative("Id");
|
||||
var ExecuteOnce = listItemSelected.FindPropertyRelative("ExecuteOnce");
|
||||
var InitSleepTime = listItemSelected.FindPropertyRelative("InitSleepTime");
|
||||
var ExecuteSleepTime = listItemSelected.FindPropertyRelative("ExecuteSleepTime");
|
||||
var ConditionEvaluation = listItemSelected.FindPropertyRelative("ConditionEvaluation");
|
||||
var DebugConditions = listItemSelected.FindPropertyRelative("DebugConditions");
|
||||
var MessageType = listItemSelected.FindPropertyRelative("MessageType");
|
||||
var Message = listItemSelected.FindPropertyRelative("Message");
|
||||
var TakeScreenshot = listItemSelected.FindPropertyRelative("TakeScreenshot");
|
||||
var ScreenshotFileName = listItemSelected.FindPropertyRelative("ScreenshotFileName");
|
||||
var DebugBreak = listItemSelected.FindPropertyRelative("DebugBreak");
|
||||
var UnityEvents = listItemSelected.FindPropertyRelative("UnityEvents");
|
||||
|
||||
#endregion
|
||||
|
||||
EditorGUILayout.LabelField
|
||||
(
|
||||
"[ PACKET ] - ID: " +
|
||||
Id.intValue +
|
||||
" (Conditions: " +
|
||||
DebugConditions.arraySize +
|
||||
")",
|
||||
GraphyEditorStyle.HeaderStyle2
|
||||
);
|
||||
|
||||
EditorGUIUtility.labelWidth = 150;
|
||||
EditorGUIUtility.fieldWidth = 35;
|
||||
|
||||
Active.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Active",
|
||||
"If false, it will not be checked"
|
||||
),
|
||||
Active.boolValue
|
||||
);
|
||||
|
||||
Id.intValue = EditorGUILayout.IntField
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"ID",
|
||||
"Optional Id. It's used to get or remove DebugPackets in runtime"
|
||||
),
|
||||
Id.intValue
|
||||
);
|
||||
|
||||
ExecuteOnce.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Execute once",
|
||||
"If true, once the actions are executed, this DebugPacket will delete itself"
|
||||
),
|
||||
ExecuteOnce.boolValue
|
||||
);
|
||||
|
||||
InitSleepTime.floatValue = EditorGUILayout.FloatField
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Init sleep time",
|
||||
"Time to wait before checking if conditions are met (use this to avoid low fps drops triggering the conditions when loading the game)"
|
||||
),
|
||||
InitSleepTime.floatValue
|
||||
);
|
||||
|
||||
ExecuteSleepTime.floatValue = EditorGUILayout.FloatField
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Sleep time after execute",
|
||||
"Time to wait before checking if conditions are met again (once they have already been met and if ExecuteOnce is false)"
|
||||
),
|
||||
ExecuteSleepTime.floatValue
|
||||
);
|
||||
|
||||
|
||||
EditorGUIUtility.labelWidth = defaultLabelWidth;
|
||||
EditorGUIUtility.fieldWidth = defaultFieldWidth;
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.LabelField("[ CONDITIONS ] (" + DebugConditions.arraySize + ")",
|
||||
GraphyEditorStyle.HeaderStyle2);
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
ConditionEvaluation,
|
||||
new GUIContent("Condition evaluation")
|
||||
);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
if (DebugConditions.arraySize < 1)
|
||||
{
|
||||
DebugConditions.InsertArrayElementAtIndex(DebugConditions.arraySize);
|
||||
m_selectedDebugPacketCondition = 0;
|
||||
}
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
var debugPacketConditionNames = new List<string>();
|
||||
for (var i = 0; i < DebugConditions.arraySize; i++)
|
||||
{
|
||||
var listItem = DebugConditions.GetArrayElementAtIndex(i);
|
||||
// NOTE: If the Popup detects two equal strings, it just paints 1, that's why I always add the "i"
|
||||
|
||||
var conditionName = i + 1 + " - ";
|
||||
conditionName +=
|
||||
GetComparerStringFromDebugVariable(
|
||||
(GraphyDebugger.DebugVariable)listItem.FindPropertyRelative("Variable").intValue) + " ";
|
||||
conditionName +=
|
||||
GetComparerStringFromDebugComparer(
|
||||
(GraphyDebugger.DebugComparer)listItem.FindPropertyRelative("Comparer").intValue) + " ";
|
||||
conditionName += listItem.FindPropertyRelative("Value").floatValue.ToString();
|
||||
|
||||
debugPacketConditionNames.Add(conditionName);
|
||||
}
|
||||
|
||||
m_selectedDebugPacketCondition =
|
||||
EditorGUILayout.Popup(m_selectedDebugPacketCondition, debugPacketConditionNames.ToArray());
|
||||
|
||||
GUI.color = new Color(0.7f, 1f, 0.0f, 1f);
|
||||
|
||||
if (GUILayout.Button("Add", GUILayout.Width(60)))
|
||||
DebugConditions.InsertArrayElementAtIndex(DebugConditions.arraySize);
|
||||
|
||||
if (DebugConditions.arraySize > 1)
|
||||
GUI.color = new Color(1f, 0.7f, 0.0f, 1f);
|
||||
else
|
||||
GUI.color = new Color(1f, 0.7f, 0.0f, 0.5f);
|
||||
|
||||
//Remove this index from the List
|
||||
if (GUILayout.Button("Remove", GUILayout.Width(60)))
|
||||
if (DebugConditions.arraySize > 1)
|
||||
{
|
||||
DebugConditions.DeleteArrayElementAtIndex(m_selectedDebugPacketCondition);
|
||||
if (m_selectedDebugPacketCondition > 0) m_selectedDebugPacketCondition--;
|
||||
}
|
||||
|
||||
GUI.color = defaultGUIColor;
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
var conditionListItemSelected = DebugConditions.GetArrayElementAtIndex(m_selectedDebugPacketCondition);
|
||||
|
||||
var Variable = conditionListItemSelected.FindPropertyRelative("Variable");
|
||||
var Comparer = conditionListItemSelected.FindPropertyRelative("Comparer");
|
||||
var Value = conditionListItemSelected.FindPropertyRelative("Value");
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
Variable,
|
||||
new GUIContent("Variable")
|
||||
);
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
Comparer,
|
||||
new GUIContent("Comparer")
|
||||
);
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
Value,
|
||||
new GUIContent("Value")
|
||||
);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.LabelField("[ ACTIONS ]", GraphyEditorStyle.HeaderStyle2);
|
||||
|
||||
EditorGUIUtility.labelWidth = 140;
|
||||
EditorGUIUtility.fieldWidth = 35;
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
MessageType,
|
||||
new GUIContent("Message type")
|
||||
);
|
||||
|
||||
EditorGUILayout.PropertyField(Message);
|
||||
|
||||
TakeScreenshot.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Take screenshot",
|
||||
"If true, it takes a screenshot and stores it. The location where the image is written to can include a directory/folder list. With no directory/folder list the image will be written into the Project folder. On mobile platforms the filename is appended to the persistent data path."
|
||||
),
|
||||
TakeScreenshot.boolValue
|
||||
);
|
||||
|
||||
if (TakeScreenshot.boolValue)
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
ScreenshotFileName,
|
||||
new GUIContent
|
||||
(
|
||||
"Screenshot file name",
|
||||
"Avoid this characters: * . \" / \\ [ ] : ; | = , \n\nIt will have the date appended at the end to avoid overwriting."
|
||||
)
|
||||
);
|
||||
|
||||
DebugBreak.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Debug Break",
|
||||
"If true, it pauses the editor"
|
||||
),
|
||||
DebugBreak.boolValue
|
||||
);
|
||||
|
||||
EditorGUILayout.PropertyField(UnityEvents);
|
||||
|
||||
EditorGUIUtility.labelWidth = defaultLabelWidth;
|
||||
EditorGUIUtility.fieldWidth = defaultFieldWidth;
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/* ----- TODO: ----------------------------
|
||||
* Add summaries to the variables.
|
||||
* Add summaries to the functions.
|
||||
* Finish spacing on "OnInspectorGUI".
|
||||
* Add sections to "OnInspectorGUI".
|
||||
* Fix the use of Space to be consistent with "GraphyManagerEditor".
|
||||
* --------------------------------------*/
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyDebugger m_target;
|
||||
|
||||
private int m_newDebugPacketListSize;
|
||||
|
||||
private int m_previouslySelectedDebugPacketIndex;
|
||||
private int m_currentlySelectedDebugPacketIndex;
|
||||
|
||||
private int m_selectedDebugPacketCondition;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void SetDefaultDebugPacketValues(SerializedProperty debugPacketSerializedProperty)
|
||||
{
|
||||
var debugPacket = new GraphyDebugger.DebugPacket();
|
||||
|
||||
debugPacketSerializedProperty.GetArrayElementAtIndex(debugPacketSerializedProperty.arraySize - 1)
|
||||
.FindPropertyRelative("Active")
|
||||
.boolValue = debugPacket.Active;
|
||||
|
||||
debugPacketSerializedProperty.GetArrayElementAtIndex(debugPacketSerializedProperty.arraySize - 1)
|
||||
.FindPropertyRelative("Id")
|
||||
.intValue = debugPacketSerializedProperty.arraySize;
|
||||
|
||||
debugPacketSerializedProperty.GetArrayElementAtIndex(debugPacketSerializedProperty.arraySize - 1)
|
||||
.FindPropertyRelative("ExecuteOnce")
|
||||
.boolValue = debugPacket.ExecuteOnce;
|
||||
|
||||
debugPacketSerializedProperty.GetArrayElementAtIndex(debugPacketSerializedProperty.arraySize - 1)
|
||||
.FindPropertyRelative("InitSleepTime")
|
||||
.floatValue = debugPacket.InitSleepTime;
|
||||
|
||||
debugPacketSerializedProperty.GetArrayElementAtIndex(debugPacketSerializedProperty.arraySize - 1)
|
||||
.FindPropertyRelative("ExecuteSleepTime")
|
||||
.floatValue = debugPacket.ExecuteSleepTime;
|
||||
}
|
||||
|
||||
private string GetComparerStringFromDebugVariable(GraphyDebugger.DebugVariable debugVariable)
|
||||
{
|
||||
switch (debugVariable)
|
||||
{
|
||||
case GraphyDebugger.DebugVariable.Fps:
|
||||
return "FPS Current";
|
||||
case GraphyDebugger.DebugVariable.Fps_Min:
|
||||
return "FPS Min";
|
||||
case GraphyDebugger.DebugVariable.Fps_Max:
|
||||
return "FPS Max";
|
||||
case GraphyDebugger.DebugVariable.Fps_Avg:
|
||||
return "FPS Avg";
|
||||
|
||||
case GraphyDebugger.DebugVariable.Ram_Allocated:
|
||||
return "Ram Allocated";
|
||||
case GraphyDebugger.DebugVariable.Ram_Reserved:
|
||||
return "Ram Reserved";
|
||||
case GraphyDebugger.DebugVariable.Ram_Mono:
|
||||
return "Ram Mono";
|
||||
|
||||
case GraphyDebugger.DebugVariable.Audio_DB:
|
||||
return "Audio DB";
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private string GetComparerStringFromDebugComparer(GraphyDebugger.DebugComparer debugComparer)
|
||||
{
|
||||
switch (debugComparer)
|
||||
{
|
||||
case GraphyDebugger.DebugComparer.Less_than:
|
||||
return "<";
|
||||
case GraphyDebugger.DebugComparer.Equals_or_less_than:
|
||||
return "<=";
|
||||
case GraphyDebugger.DebugComparer.Equals:
|
||||
return "==";
|
||||
case GraphyDebugger.DebugComparer.Equals_or_greater_than:
|
||||
return ">=";
|
||||
case GraphyDebugger.DebugComparer.Greater_than:
|
||||
return ">";
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4a96825e094d61441b5247d0c32652b3
|
||||
timeCreated: 1514907656
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,117 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 02-Jan-18
|
||||
* 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 UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Tayx.Graphy
|
||||
{
|
||||
internal static class GraphyEditorStyle
|
||||
{
|
||||
#region Static Constructor
|
||||
|
||||
static GraphyEditorStyle()
|
||||
{
|
||||
var managerLogoGuid =
|
||||
AssetDatabase.FindAssets($"Manager_Logo_{(EditorGUIUtility.isProSkin ? "White" : "Dark")}")[0];
|
||||
var debuggerLogoGuid =
|
||||
AssetDatabase.FindAssets($"Debugger_Logo_{(EditorGUIUtility.isProSkin ? "White" : "Dark")}")[0];
|
||||
var guiSkinGuid = AssetDatabase.FindAssets("GraphyGUISkin")[0];
|
||||
|
||||
ManagerLogoTexture = AssetDatabase.LoadAssetAtPath<Texture2D>
|
||||
(
|
||||
AssetDatabase.GUIDToAssetPath(managerLogoGuid)
|
||||
);
|
||||
|
||||
DebuggerLogoTexture = AssetDatabase.LoadAssetAtPath<Texture2D>
|
||||
(
|
||||
AssetDatabase.GUIDToAssetPath(debuggerLogoGuid)
|
||||
);
|
||||
|
||||
Skin = AssetDatabase.LoadAssetAtPath<GUISkin>
|
||||
(
|
||||
AssetDatabase.GUIDToAssetPath(guiSkinGuid)
|
||||
);
|
||||
|
||||
if (Skin != null)
|
||||
{
|
||||
HeaderStyle1 = Skin.GetStyle("Header1");
|
||||
HeaderStyle2 = Skin.GetStyle("Header2");
|
||||
|
||||
SetGuiStyleFontColor
|
||||
(
|
||||
HeaderStyle2,
|
||||
EditorGUIUtility.isProSkin ? Color.white : Color.black
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
HeaderStyle1 = EditorStyles.boldLabel;
|
||||
HeaderStyle2 = EditorStyles.boldLabel;
|
||||
}
|
||||
|
||||
FoldoutStyle = new GUIStyle(EditorStyles.foldout)
|
||||
{
|
||||
font = HeaderStyle2.font,
|
||||
fontStyle = HeaderStyle2.fontStyle,
|
||||
contentOffset = Vector2.down * 3f
|
||||
};
|
||||
|
||||
SetGuiStyleFontColor
|
||||
(
|
||||
FoldoutStyle,
|
||||
EditorGUIUtility.isProSkin ? Color.white : Color.black
|
||||
);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private static void SetGuiStyleFontColor(GUIStyle guiStyle, Color color)
|
||||
{
|
||||
guiStyle.normal.textColor = color;
|
||||
guiStyle.hover.textColor = color;
|
||||
guiStyle.active.textColor = color;
|
||||
guiStyle.focused.textColor = color;
|
||||
guiStyle.onNormal.textColor = color;
|
||||
guiStyle.onHover.textColor = color;
|
||||
guiStyle.onActive.textColor = color;
|
||||
guiStyle.onFocused.textColor = color;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private static string path;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties -> Public
|
||||
|
||||
public static Texture2D ManagerLogoTexture { get; }
|
||||
|
||||
public static Texture2D DebuggerLogoTexture { get; }
|
||||
|
||||
public static GUISkin Skin { get; }
|
||||
|
||||
public static GUIStyle HeaderStyle1 { get; }
|
||||
|
||||
public static GUIStyle HeaderStyle2 { get; }
|
||||
|
||||
public static GUIStyle FoldoutStyle { get; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1bb06e7c222a60f47a476e2648224330
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,817 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 20-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 UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Tayx.Graphy
|
||||
{
|
||||
[CustomEditor(typeof(GraphyManager))]
|
||||
internal class GraphyManagerEditor : Editor
|
||||
{
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
m_target = (GraphyManager)target;
|
||||
|
||||
var serObj = serializedObject;
|
||||
|
||||
#region Section -> Settings
|
||||
|
||||
m_graphyMode = serObj.FindProperty("m_graphyMode");
|
||||
|
||||
m_enableOnStartup = serObj.FindProperty("m_enableOnStartup");
|
||||
|
||||
m_keepAlive = serObj.FindProperty("m_keepAlive");
|
||||
|
||||
m_background = serObj.FindProperty("m_background");
|
||||
m_backgroundColor = serObj.FindProperty("m_backgroundColor");
|
||||
|
||||
m_enableHotkeys = serObj.FindProperty("m_enableHotkeys");
|
||||
|
||||
m_toggleModeKeyCode = serObj.FindProperty("m_toggleModeKeyCode");
|
||||
|
||||
m_toggleModeCtrl = serObj.FindProperty("m_toggleModeCtrl");
|
||||
m_toggleModeAlt = serObj.FindProperty("m_toggleModeAlt");
|
||||
|
||||
m_toggleActiveKeyCode = serObj.FindProperty("m_toggleActiveKeyCode");
|
||||
|
||||
m_toggleActiveCtrl = serObj.FindProperty("m_toggleActiveCtrl");
|
||||
m_toggleActiveAlt = serObj.FindProperty("m_toggleActiveAlt");
|
||||
|
||||
m_graphModulePosition = serObj.FindProperty("m_graphModulePosition");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Section -> FPS
|
||||
|
||||
m_fpsModuleState = serObj.FindProperty("m_fpsModuleState");
|
||||
|
||||
m_goodFpsColor = serObj.FindProperty("m_goodFpsColor");
|
||||
m_goodFpsThreshold = serObj.FindProperty("m_goodFpsThreshold");
|
||||
|
||||
m_cautionFpsColor = serObj.FindProperty("m_cautionFpsColor");
|
||||
m_cautionFpsThreshold = serObj.FindProperty("m_cautionFpsThreshold");
|
||||
|
||||
m_criticalFpsColor = serObj.FindProperty("m_criticalFpsColor");
|
||||
|
||||
m_fpsGraphResolution = serObj.FindProperty("m_fpsGraphResolution");
|
||||
|
||||
m_fpsTextUpdateRate = serObj.FindProperty("m_fpsTextUpdateRate");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Section -> RAM
|
||||
|
||||
m_ramModuleState = serObj.FindProperty("m_ramModuleState");
|
||||
|
||||
m_allocatedRamColor = serObj.FindProperty("m_allocatedRamColor");
|
||||
m_reservedRamColor = serObj.FindProperty("m_reservedRamColor");
|
||||
m_monoRamColor = serObj.FindProperty("m_monoRamColor");
|
||||
|
||||
m_ramGraphResolution = serObj.FindProperty("m_ramGraphResolution");
|
||||
|
||||
m_ramTextUpdateRate = serObj.FindProperty("m_ramTextUpdateRate");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Section -> Audio
|
||||
|
||||
m_findAudioListenerInCameraIfNull = serObj.FindProperty("m_findAudioListenerInCameraIfNull");
|
||||
|
||||
m_audioListener = serObj.FindProperty("m_audioListener");
|
||||
|
||||
m_audioModuleState = serObj.FindProperty("m_audioModuleState");
|
||||
|
||||
m_audioGraphColor = serObj.FindProperty("m_audioGraphColor");
|
||||
|
||||
m_audioGraphResolution = serObj.FindProperty("m_audioGraphResolution");
|
||||
|
||||
m_audioTextUpdateRate = serObj.FindProperty("m_audioTextUpdateRate");
|
||||
|
||||
m_FFTWindow = serObj.FindProperty("m_FFTWindow");
|
||||
|
||||
m_spectrumSize = serObj.FindProperty("m_spectrumSize");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Section -> Advanced Settings
|
||||
|
||||
m_advancedModulePosition = serObj.FindProperty("m_advancedModulePosition");
|
||||
|
||||
m_advancedModuleState = serObj.FindProperty("m_advancedModuleState");
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public Override
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
if (m_target == null && target == null)
|
||||
{
|
||||
base.OnInspectorGUI();
|
||||
return;
|
||||
}
|
||||
|
||||
var defaultLabelWidth = EditorGUIUtility.labelWidth;
|
||||
var defaultFieldWidth = EditorGUIUtility.fieldWidth;
|
||||
|
||||
//===== CONTENT REGION ========================================================================
|
||||
|
||||
GUILayout.Space(20);
|
||||
|
||||
#region Section -> Logo
|
||||
|
||||
if (GraphyEditorStyle.ManagerLogoTexture != null)
|
||||
{
|
||||
GUILayout.Label
|
||||
(
|
||||
GraphyEditorStyle.ManagerLogoTexture,
|
||||
new GUIStyle(GUI.skin.GetStyle("Label"))
|
||||
{
|
||||
alignment = TextAnchor.UpperCenter
|
||||
}
|
||||
);
|
||||
|
||||
GUILayout.Space(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.LabelField
|
||||
(
|
||||
"[ GRAPHY - MANAGER ]",
|
||||
GraphyEditorStyle.HeaderStyle1
|
||||
);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
GUILayout.Space(5); //Extra pixels added when the logo is used.
|
||||
|
||||
#region Section -> Settings
|
||||
|
||||
EditorGUIUtility.labelWidth = 130;
|
||||
EditorGUIUtility.fieldWidth = 35;
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_graphyMode,
|
||||
new GUIContent
|
||||
(
|
||||
"Graphy Mode",
|
||||
"LIGHT mode increases compatibility with mobile and older, less powerful GPUs, but reduces the maximum graph resolutions to 128."
|
||||
)
|
||||
);
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
m_enableOnStartup.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Enable On Startup",
|
||||
"If ticked, Graphy will be displayed by default on startup, otherwise it will initiate and hide."
|
||||
),
|
||||
m_enableOnStartup.boolValue
|
||||
);
|
||||
|
||||
// This is a neat trick to hide Graphy in the Scene if it's going to be deactivated in play mode so that it doesn't use screen space.
|
||||
if (!Application.isPlaying) m_target.GetComponent<Canvas>().enabled = m_enableOnStartup.boolValue;
|
||||
|
||||
m_keepAlive.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Keep Alive",
|
||||
"If ticked, it will survive scene changes.\n\nCAREFUL, if you set Graphy as a child of another GameObject, the root GameObject will also survive scene changes. If you want to avoid that put Graphy in the root of the Scene as its own entity."
|
||||
),
|
||||
m_keepAlive.boolValue
|
||||
);
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
m_background.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Background",
|
||||
"If ticked, it will show a background overlay to improve readability in cluttered scenes."
|
||||
),
|
||||
m_background.boolValue
|
||||
);
|
||||
|
||||
m_backgroundColor.colorValue = EditorGUILayout.ColorField(m_backgroundColor.colorValue);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
m_enableHotkeys.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Enable Hotkeys",
|
||||
"If ticked, it will enable the hotkeys to be able to modify Graphy in runtime with custom keyboard shortcuts."
|
||||
),
|
||||
m_enableHotkeys.boolValue
|
||||
);
|
||||
|
||||
if (m_enableHotkeys.boolValue)
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
EditorGUIUtility.labelWidth = 130;
|
||||
EditorGUIUtility.fieldWidth = 35;
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_toggleModeKeyCode,
|
||||
new GUIContent
|
||||
(
|
||||
"Toggle Mode Key",
|
||||
"If ticked, it will require clicking this key and the other ones you have set up."
|
||||
)
|
||||
);
|
||||
|
||||
EditorGUIUtility.labelWidth = 30;
|
||||
EditorGUIUtility.fieldWidth = 35;
|
||||
|
||||
m_toggleModeCtrl.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Ctrl",
|
||||
"If ticked, it will require clicking Ctrl and the other keys you have set up."
|
||||
),
|
||||
m_toggleModeCtrl.boolValue
|
||||
);
|
||||
|
||||
m_toggleModeAlt.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Alt",
|
||||
"If ticked, it will require clicking Alt and the other keys you have set up."
|
||||
),
|
||||
m_toggleModeAlt.boolValue
|
||||
);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
EditorGUIUtility.labelWidth = 130;
|
||||
EditorGUIUtility.fieldWidth = 35;
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_toggleActiveKeyCode,
|
||||
new GUIContent
|
||||
(
|
||||
"Toggle Active Key",
|
||||
"If ticked, it will require clicking this key and the other ones you have set up."
|
||||
)
|
||||
);
|
||||
|
||||
EditorGUIUtility.labelWidth = 30;
|
||||
EditorGUIUtility.fieldWidth = 35;
|
||||
|
||||
m_toggleActiveCtrl.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Ctrl",
|
||||
"If ticked, it will require clicking Ctrl and the other kesy you have set up."
|
||||
),
|
||||
m_toggleActiveCtrl.boolValue
|
||||
);
|
||||
|
||||
m_toggleActiveAlt.boolValue = EditorGUILayout.Toggle
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Alt",
|
||||
"If ticked, it will require clicking Alt and the other keys you have set up."
|
||||
),
|
||||
m_toggleActiveAlt.boolValue
|
||||
);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
GUILayout.Space(15);
|
||||
|
||||
EditorGUIUtility.labelWidth = 155;
|
||||
EditorGUIUtility.fieldWidth = 35;
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_graphModulePosition,
|
||||
new GUIContent
|
||||
(
|
||||
"Graph modules position",
|
||||
"Defines in which corner the modules will be located."
|
||||
)
|
||||
);
|
||||
|
||||
#endregion
|
||||
|
||||
GUILayout.Space(20);
|
||||
|
||||
#region Section -> FPS
|
||||
|
||||
m_fpsModuleInspectorToggle = EditorGUILayout.Foldout
|
||||
(
|
||||
m_fpsModuleInspectorToggle,
|
||||
" [ FPS ]",
|
||||
GraphyEditorStyle.FoldoutStyle
|
||||
);
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
if (m_fpsModuleInspectorToggle)
|
||||
{
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_fpsModuleState,
|
||||
new GUIContent
|
||||
(
|
||||
"Module state",
|
||||
"FULL -> Text + Graph \nTEXT -> Just text \nOFF -> Turned off"
|
||||
)
|
||||
);
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
EditorGUILayout.LabelField("Fps thresholds and colors:");
|
||||
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
m_goodFpsThreshold.intValue = EditorGUILayout.IntField
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"- Good",
|
||||
"When FPS rise above this value, this color will be used."
|
||||
),
|
||||
m_goodFpsThreshold.intValue
|
||||
);
|
||||
|
||||
m_goodFpsColor.colorValue = EditorGUILayout.ColorField(m_goodFpsColor.colorValue);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (m_goodFpsThreshold.intValue <= m_cautionFpsThreshold.intValue && m_goodFpsThreshold.intValue > 1)
|
||||
m_cautionFpsThreshold.intValue = m_goodFpsThreshold.intValue - 1;
|
||||
else if (m_goodFpsThreshold.intValue <= 1) m_goodFpsThreshold.intValue = 2;
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
m_cautionFpsThreshold.intValue = EditorGUILayout.IntField
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"- Caution",
|
||||
"When FPS falls between this and the Good value, this color will be used."
|
||||
),
|
||||
m_cautionFpsThreshold.intValue
|
||||
);
|
||||
|
||||
m_cautionFpsColor.colorValue = EditorGUILayout.ColorField(m_cautionFpsColor.colorValue);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (m_cautionFpsThreshold.intValue >= m_goodFpsThreshold.intValue)
|
||||
m_cautionFpsThreshold.intValue = m_goodFpsThreshold.intValue - 1;
|
||||
else if (m_cautionFpsThreshold.intValue <= 0) m_cautionFpsThreshold.intValue = 1;
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
EditorGUILayout.IntField
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"- Critical",
|
||||
"When FPS falls below the Caution value, this color will be used. (You can't have negative FPS, so this value is just for reference, it can't be changed)."
|
||||
),
|
||||
0
|
||||
);
|
||||
|
||||
m_criticalFpsColor.colorValue = EditorGUILayout.ColorField(m_criticalFpsColor.colorValue);
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
|
||||
if (m_fpsModuleState.intValue == 0)
|
||||
m_fpsGraphResolution.intValue = EditorGUILayout.IntSlider
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Graph resolution",
|
||||
"Defines the amount of points in the graph"
|
||||
),
|
||||
m_fpsGraphResolution.intValue,
|
||||
20,
|
||||
m_graphyMode.intValue == 0 ? 300 : 128
|
||||
);
|
||||
|
||||
m_fpsTextUpdateRate.intValue = EditorGUILayout.IntSlider
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Text update rate",
|
||||
"Defines the amount times the text is updated in 1 second."
|
||||
),
|
||||
m_fpsTextUpdateRate.intValue,
|
||||
1,
|
||||
60
|
||||
);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
GUILayout.Space(20);
|
||||
|
||||
#region Section -> RAM
|
||||
|
||||
m_ramModuleInspectorToggle = EditorGUILayout.Foldout
|
||||
(
|
||||
m_ramModuleInspectorToggle,
|
||||
" [ RAM ]",
|
||||
GraphyEditorStyle.FoldoutStyle
|
||||
);
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
if (m_ramModuleInspectorToggle)
|
||||
{
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_ramModuleState,
|
||||
new GUIContent
|
||||
(
|
||||
"Module state",
|
||||
"FULL -> Text + Graph \nTEXT -> Just text \nOFF -> Turned off"
|
||||
)
|
||||
);
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
EditorGUILayout.LabelField("Graph colors:");
|
||||
|
||||
EditorGUI.indentLevel++;
|
||||
|
||||
m_allocatedRamColor.colorValue = EditorGUILayout.ColorField
|
||||
(
|
||||
"- Allocated",
|
||||
m_allocatedRamColor.colorValue
|
||||
);
|
||||
|
||||
m_reservedRamColor.colorValue = EditorGUILayout.ColorField
|
||||
(
|
||||
"- Reserved",
|
||||
m_reservedRamColor.colorValue
|
||||
);
|
||||
|
||||
m_monoRamColor.colorValue = EditorGUILayout.ColorField
|
||||
(
|
||||
"- Mono",
|
||||
m_monoRamColor.colorValue
|
||||
);
|
||||
|
||||
EditorGUI.indentLevel--;
|
||||
|
||||
if (m_ramModuleState.intValue == 0)
|
||||
m_ramGraphResolution.intValue = EditorGUILayout.IntSlider(
|
||||
new GUIContent
|
||||
(
|
||||
"Graph resolution",
|
||||
"Defines the amount of points are in the graph"
|
||||
),
|
||||
m_ramGraphResolution.intValue,
|
||||
20,
|
||||
m_graphyMode.intValue == 0 ? 300 : 128
|
||||
);
|
||||
|
||||
m_ramTextUpdateRate.intValue = EditorGUILayout.IntSlider
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Text update rate",
|
||||
"Defines the amount times the text is updated in 1 second."
|
||||
),
|
||||
m_ramTextUpdateRate.intValue,
|
||||
1,
|
||||
60
|
||||
);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
GUILayout.Space(20);
|
||||
|
||||
#region Section -> Audio
|
||||
|
||||
m_audioModuleInspectorToggle = EditorGUILayout.Foldout
|
||||
(
|
||||
m_audioModuleInspectorToggle,
|
||||
" [ AUDIO ]",
|
||||
GraphyEditorStyle.FoldoutStyle
|
||||
);
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
if (m_audioModuleInspectorToggle)
|
||||
{
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_audioModuleState,
|
||||
new GUIContent
|
||||
(
|
||||
"Module state",
|
||||
"FULL -> Text + Graph \nTEXT -> Just text \nOFF -> Turned off"
|
||||
)
|
||||
);
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_findAudioListenerInCameraIfNull,
|
||||
new GUIContent
|
||||
(
|
||||
"Find audio listener",
|
||||
"Tries to find the AudioListener in the Main camera in the scene. (if AudioListener is null)"
|
||||
)
|
||||
);
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_audioListener,
|
||||
new GUIContent
|
||||
(
|
||||
"Audio Listener",
|
||||
"Graphy will take the data from this Listener. If none are specified, it will try to get it from the Main Camera in the scene."
|
||||
)
|
||||
);
|
||||
|
||||
if (m_audioModuleState.intValue == 0)
|
||||
{
|
||||
m_audioGraphColor.colorValue = EditorGUILayout.ColorField
|
||||
(
|
||||
"Graph color",
|
||||
m_audioGraphColor.colorValue
|
||||
);
|
||||
|
||||
m_audioGraphResolution.intValue = EditorGUILayout.IntSlider
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Graph resolution",
|
||||
"Defines the amount of points that are in the graph."
|
||||
),
|
||||
m_audioGraphResolution.intValue,
|
||||
20,
|
||||
m_graphyMode.intValue == 0 ? 300 : 128
|
||||
);
|
||||
|
||||
// Forces the value to be a multiple of 3, this way the audio graph is painted correctly
|
||||
if (m_audioGraphResolution.intValue % 3 != 0 && m_audioGraphResolution.intValue < 300)
|
||||
m_audioGraphResolution.intValue += 3 - m_audioGraphResolution.intValue % 3;
|
||||
//TODO: Figure out why a static version of the ForceMultipleOf3 isnt used.
|
||||
}
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_FFTWindow,
|
||||
new GUIContent
|
||||
(
|
||||
"FFT Window",
|
||||
"Used to reduce leakage between frequency bins/bands. Note, the more complex window type, the better the quality, but reduced speed. \n\nSimplest is rectangular. Most complex is BlackmanHarris"
|
||||
)
|
||||
);
|
||||
|
||||
m_spectrumSize.intValue = EditorGUILayout.IntSlider
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Spectrum size",
|
||||
"Has to be a power of 2 between 128-8192. The higher sample rate, the less precision but also more impact on performance. Careful with mobile devices"
|
||||
),
|
||||
m_spectrumSize.intValue,
|
||||
128,
|
||||
8192
|
||||
);
|
||||
|
||||
var closestSpectrumIndex = 0;
|
||||
var minDistanceToSpectrumValue = 100000;
|
||||
|
||||
for (var i = 0; i < m_spectrumSizeValues.Length; i++)
|
||||
{
|
||||
var newDistance = Mathf.Abs
|
||||
(
|
||||
m_spectrumSize.intValue - m_spectrumSizeValues[i]
|
||||
);
|
||||
|
||||
if (newDistance < minDistanceToSpectrumValue)
|
||||
{
|
||||
minDistanceToSpectrumValue = newDistance;
|
||||
closestSpectrumIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
m_spectrumSize.intValue = m_spectrumSizeValues[closestSpectrumIndex];
|
||||
|
||||
m_audioTextUpdateRate.intValue = EditorGUILayout.IntSlider
|
||||
(
|
||||
new GUIContent
|
||||
(
|
||||
"Text update rate",
|
||||
"Defines the amount times the text is updated in 1 second"
|
||||
),
|
||||
m_audioTextUpdateRate.intValue,
|
||||
1,
|
||||
60
|
||||
);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
GUILayout.Space(20);
|
||||
|
||||
#region Section -> Advanced Settings
|
||||
|
||||
m_advancedModuleInspectorToggle = EditorGUILayout.Foldout
|
||||
(
|
||||
m_advancedModuleInspectorToggle,
|
||||
" [ ADVANCED DATA ]",
|
||||
GraphyEditorStyle.FoldoutStyle
|
||||
);
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
if (m_advancedModuleInspectorToggle)
|
||||
{
|
||||
EditorGUILayout.PropertyField(m_advancedModulePosition);
|
||||
|
||||
EditorGUILayout.PropertyField
|
||||
(
|
||||
m_advancedModuleState,
|
||||
new GUIContent
|
||||
(
|
||||
"Module state",
|
||||
"FULL -> Text \nOFF -> Turned off"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
#endregion;
|
||||
|
||||
EditorGUIUtility.labelWidth = defaultLabelWidth;
|
||||
EditorGUIUtility.fieldWidth = defaultFieldWidth;
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/* ----- TODO: ----------------------------
|
||||
* Add summaries to the variables.
|
||||
* Add summaries to the functions.
|
||||
* --------------------------------------*/
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_target;
|
||||
|
||||
private readonly int[] m_spectrumSizeValues =
|
||||
{
|
||||
128,
|
||||
256,
|
||||
512,
|
||||
1024,
|
||||
2048,
|
||||
4096,
|
||||
8192
|
||||
};
|
||||
|
||||
#region Section -> Settings
|
||||
|
||||
private SerializedProperty m_graphyMode;
|
||||
|
||||
private SerializedProperty m_enableOnStartup;
|
||||
|
||||
private SerializedProperty m_keepAlive;
|
||||
|
||||
private SerializedProperty m_background;
|
||||
private SerializedProperty m_backgroundColor;
|
||||
|
||||
private SerializedProperty m_enableHotkeys;
|
||||
|
||||
private SerializedProperty m_toggleModeKeyCode;
|
||||
private SerializedProperty m_toggleModeCtrl;
|
||||
private SerializedProperty m_toggleModeAlt;
|
||||
|
||||
private SerializedProperty m_toggleActiveKeyCode;
|
||||
private SerializedProperty m_toggleActiveCtrl;
|
||||
private SerializedProperty m_toggleActiveAlt;
|
||||
|
||||
|
||||
private SerializedProperty m_graphModulePosition;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Section -> FPS
|
||||
|
||||
private bool m_fpsModuleInspectorToggle = true;
|
||||
|
||||
private SerializedProperty m_fpsModuleState;
|
||||
|
||||
private SerializedProperty m_goodFpsColor;
|
||||
private SerializedProperty m_goodFpsThreshold;
|
||||
|
||||
private SerializedProperty m_cautionFpsColor;
|
||||
private SerializedProperty m_cautionFpsThreshold;
|
||||
|
||||
private SerializedProperty m_criticalFpsColor;
|
||||
|
||||
private SerializedProperty m_fpsGraphResolution;
|
||||
|
||||
private SerializedProperty m_fpsTextUpdateRate;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Section -> RAM
|
||||
|
||||
private bool m_ramModuleInspectorToggle = true;
|
||||
|
||||
private SerializedProperty m_ramModuleState;
|
||||
|
||||
private SerializedProperty m_allocatedRamColor;
|
||||
private SerializedProperty m_reservedRamColor;
|
||||
private SerializedProperty m_monoRamColor;
|
||||
|
||||
private SerializedProperty m_ramGraphResolution;
|
||||
|
||||
private SerializedProperty m_ramTextUpdateRate;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Section -> Audio
|
||||
|
||||
private bool m_audioModuleInspectorToggle = true;
|
||||
|
||||
private SerializedProperty m_findAudioListenerInCameraIfNull;
|
||||
|
||||
private SerializedProperty m_audioListener;
|
||||
|
||||
private SerializedProperty m_audioModuleState;
|
||||
|
||||
private SerializedProperty m_audioGraphColor;
|
||||
|
||||
private SerializedProperty m_audioGraphResolution;
|
||||
|
||||
private SerializedProperty m_audioTextUpdateRate;
|
||||
|
||||
private SerializedProperty m_FFTWindow;
|
||||
|
||||
private SerializedProperty m_spectrumSize;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Section -> Advanced Settings
|
||||
|
||||
private bool m_advancedModuleInspectorToggle = true;
|
||||
|
||||
private SerializedProperty m_advancedModulePosition;
|
||||
|
||||
private SerializedProperty m_advancedModuleState;
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f01a5c28e5127404da343db2a7409c10
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,60 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 20-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 UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Tayx.Graphy
|
||||
{
|
||||
public class GraphyMenuItem
|
||||
{
|
||||
[MenuItem("Tools/Graphy/Create Prefab Variant")]
|
||||
private static void CreatePrefabVariant()
|
||||
{
|
||||
// Directory checking
|
||||
if (!AssetDatabase.IsValidFolder("Assets/Graphy - Ultimate Stats Monitor"))
|
||||
AssetDatabase.CreateFolder("Assets", "Graphy - Ultimate Stats Monitor");
|
||||
|
||||
if (!AssetDatabase.IsValidFolder("Assets/Graphy - Ultimate Stats Monitor/Prefab Variants"))
|
||||
AssetDatabase.CreateFolder("Assets/Graphy - Ultimate Stats Monitor", "Prefab Variants");
|
||||
|
||||
var graphyPrefabGuid = AssetDatabase.FindAssets("[Graphy]")[0];
|
||||
|
||||
Object originalPrefab =
|
||||
(GameObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(graphyPrefabGuid),
|
||||
typeof(GameObject));
|
||||
var objectSource = PrefabUtility.InstantiatePrefab(originalPrefab) as GameObject;
|
||||
|
||||
var prefabVariantCount =
|
||||
AssetDatabase.FindAssets("Graphy_Variant",
|
||||
new[] { "Assets/Graphy - Ultimate Stats Monitor/Prefab Variants" }).Length;
|
||||
|
||||
var prefabVariant = PrefabUtility.SaveAsPrefabAsset(objectSource,
|
||||
$"Assets/Graphy - Ultimate Stats Monitor/Prefab Variants/Graphy_Variant_{prefabVariantCount}.prefab");
|
||||
|
||||
Object.DestroyImmediate(objectSource);
|
||||
|
||||
foreach (SceneView scene in SceneView.sceneViews)
|
||||
scene.ShowNotification(
|
||||
new GUIContent("Prefab Variant Created at \"Assets/Graphy - Ultimate Stats Monitor/Prefab\"!"));
|
||||
}
|
||||
|
||||
[MenuItem("Tools/Graphy/Import Graphy Customization Scene")]
|
||||
private static void ImportGraphyCustomizationScene()
|
||||
{
|
||||
var customizationSceneGuid = AssetDatabase.FindAssets("Graphy_CustomizationScene")[0];
|
||||
|
||||
AssetDatabase.ImportPackage(AssetDatabase.GUIDToAssetPath(customizationSceneGuid), true);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 68962e071a0ce0549a853f10c6af3f54
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "Tayx.Graphy.Editor",
|
||||
"references": [
|
||||
"GUID:18e5109d897e1b244ab2dfeaf5482c7b"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [
|
||||
{
|
||||
"name": "com.unity.inputsystem",
|
||||
"expression": "",
|
||||
"define": "GRAPHY_NEW_INPUT"
|
||||
}
|
||||
],
|
||||
"noEngineReferences": false
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9c59a049deefdf64bbbaa730a340bb3f
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Assets/Plugins/Graphy - Ultimate Stats Monitor/Font.meta
Normal file
9
Assets/Plugins/Graphy - Ultimate Stats Monitor/Font.meta
Normal file
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3ac48df14c942a247a9e31f953e82768
|
||||
folderAsset: yes
|
||||
timeCreated: 1511635919
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2b891f35198da7642a30fd430ae0d619
|
||||
folderAsset: yes
|
||||
timeCreated: 1516718193
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,18 @@
|
||||
Eric Tirado - NORTHWEST - BOLD, ROUGH - BETA
|
||||
|
||||
Version 0.6 2016
|
||||
________________________________________________________________________________________
|
||||
|
||||
This font demo is free for personal and commercial use.
|
||||
|
||||
Don<EFBFBD>t resell, don<6F>t rename, share it with this txt file. Easy.
|
||||
|
||||
Sign up at tira.do/nw to get a good deal on our final release (coming soon) and be in the loop for more awesomeness!
|
||||
|
||||
________________________________________________________________________________________
|
||||
|
||||
fonts@erictirado.com
|
||||
|
||||
Eric Tirado <20> 2016 - All Rights Reserved
|
||||
_______________________________________________________________________________________
|
||||
_______________________________________________________________________________________
|
@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 67bbd8c5103323b4688fcfa3abe68927
|
||||
labels:
|
||||
- font
|
||||
timeCreated: 1516718196
|
||||
licenseType: Store
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Binary file not shown.
@ -0,0 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d523cde1d178d7c4ca6bb724b9d5213e
|
||||
labels:
|
||||
- font
|
||||
timeCreated: 1516718196
|
||||
licenseType: Store
|
||||
TrueTypeFontImporter:
|
||||
serializedVersion: 4
|
||||
fontSize: 16
|
||||
forceTextureCase: -2
|
||||
characterSpacing: 0
|
||||
characterPadding: 1
|
||||
includeFontData: 1
|
||||
fontNames:
|
||||
- NORTHWEST
|
||||
fallbackFontReferences: []
|
||||
customCharacters:
|
||||
fontRenderingMode: 0
|
||||
ascentCalculationMode: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 37f53a7f00580aa4fa7797d9308063e7
|
||||
folderAsset: yes
|
||||
timeCreated: 1515073036
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eb908df110bf2314d94d245f8a338830
|
||||
labels:
|
||||
- font
|
||||
timeCreated: 1515073036
|
||||
licenseType: Store
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Plugins/Graphy - Ultimate Stats Monitor/Font/Roboto/Roboto-Bold.ttf
(Stored with Git LFS)
Normal file
BIN
Assets/Plugins/Graphy - Ultimate Stats Monitor/Font/Roboto/Roboto-Bold.ttf
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9568ece128856a54cbc1060379ab498d
|
||||
labels:
|
||||
- font
|
||||
timeCreated: 1515090903
|
||||
licenseType: Store
|
||||
TrueTypeFontImporter:
|
||||
serializedVersion: 4
|
||||
fontSize: 16
|
||||
forceTextureCase: -2
|
||||
characterSpacing: 0
|
||||
characterPadding: 1
|
||||
includeFontData: 1
|
||||
fontNames:
|
||||
- Roboto
|
||||
fallbackFontReferences:
|
||||
- {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
customCharacters:
|
||||
fontRenderingMode: 0
|
||||
ascentCalculationMode: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Plugins/Graphy - Ultimate Stats Monitor/Font/Roboto/Roboto-Regular.ttf
(Stored with Git LFS)
Normal file
BIN
Assets/Plugins/Graphy - Ultimate Stats Monitor/Font/Roboto/Roboto-Regular.ttf
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76ed11d84beb10846a746b4259e26d39
|
||||
labels:
|
||||
- font
|
||||
timeCreated: 1515073036
|
||||
licenseType: Store
|
||||
TrueTypeFontImporter:
|
||||
serializedVersion: 4
|
||||
fontSize: 16
|
||||
forceTextureCase: -2
|
||||
characterSpacing: 0
|
||||
characterPadding: 1
|
||||
includeFontData: 1
|
||||
fontNames:
|
||||
- Roboto
|
||||
fallbackFontReferences:
|
||||
- {fileID: 12800000, guid: 9568ece128856a54cbc1060379ab498d, type: 3}
|
||||
customCharacters:
|
||||
fontRenderingMode: 0
|
||||
ascentCalculationMode: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Assets/Plugins/Graphy - Ultimate Stats Monitor/GUI.meta
Normal file
9
Assets/Plugins/Graphy - Ultimate Stats Monitor/GUI.meta
Normal file
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 88ea372125bb21f49adbb31579e66715
|
||||
folderAsset: yes
|
||||
timeCreated: 1513980359
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 663039f397abaa648854c3b8ef8f4256
|
||||
labels:
|
||||
- gui
|
||||
timeCreated: 1513980352
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
21
Assets/Plugins/Graphy - Ultimate Stats Monitor/LICENSE
Normal file
21
Assets/Plugins/Graphy - Ultimate Stats Monitor/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 Martín Pane
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7dcb986197a7fca43a1547994c1e7ad8
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c859b3e9d83661640842bbb8989b021a
|
||||
folderAsset: yes
|
||||
timeCreated: 1511697723
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,90 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Audio_Spectrum_Graph
|
||||
m_Shader: {fileID: 4800000, guid: bc65170c051b0724287a7f1636d87573, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 5
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 4500
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- FpsValues_Length: 120
|
||||
- PixelSnap: 0
|
||||
- ScrollSpeed: 0.2
|
||||
- _AmazingThreshold: 0.72
|
||||
- _BumpScale: 1
|
||||
- _CautionThreshold: 0
|
||||
- _ColorMask: 15
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _Glossiness: 0.5
|
||||
- _GoodThreshold: 0.5
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SrcBlend: 1
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _UVSec: 0
|
||||
- _UseUIAlphaClip: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _AmazingColor: {r: 0, g: 1, b: 1, a: 1}
|
||||
- _CautionColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _CriticalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GoodColor: {r: 1, g: 1, b: 1, a: 1}
|
@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 61a418be8e5d13c448865432314f8277
|
||||
labels:
|
||||
- audio
|
||||
- graph
|
||||
- material
|
||||
- shader
|
||||
- spectrometer
|
||||
- spectrum
|
||||
timeCreated: 1513179885
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,90 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Audio_Spectrum_Highest_Values_Graph
|
||||
m_Shader: {fileID: 4800000, guid: bc65170c051b0724287a7f1636d87573, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 5
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 4500
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- FpsValues_Length: 120
|
||||
- PixelSnap: 0
|
||||
- ScrollSpeed: 0.2
|
||||
- _AmazingThreshold: 0.72
|
||||
- _BumpScale: 1
|
||||
- _CautionThreshold: 0
|
||||
- _ColorMask: 15
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _Glossiness: 0.5
|
||||
- _GoodThreshold: 0
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SrcBlend: 1
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _UVSec: 0
|
||||
- _UseUIAlphaClip: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _AmazingColor: {r: 0, g: 1, b: 1, a: 1}
|
||||
- _CautionColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _CriticalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GoodColor: {r: 1, g: 1, b: 1, a: 1}
|
@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a65c67e8efa392e4faaf526ab060ac88
|
||||
labels:
|
||||
- audio
|
||||
- graph
|
||||
- material
|
||||
- shader
|
||||
- spectrometer
|
||||
- spectrum
|
||||
timeCreated: 1513179885
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,90 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: FPS_Graph
|
||||
m_Shader: {fileID: 4800000, guid: bc65170c051b0724287a7f1636d87573, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 5
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 4500
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- FpsValues_Length: 120
|
||||
- PixelSnap: 0
|
||||
- ScrollSpeed: 0.2
|
||||
- _AmazingThreshold: 0.72
|
||||
- _BumpScale: 1
|
||||
- _CautionThreshold: 0.2
|
||||
- _ColorMask: 15
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _Glossiness: 0.5
|
||||
- _GoodThreshold: 0.4
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SrcBlend: 1
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _UVSec: 0
|
||||
- _UseUIAlphaClip: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _AmazingColor: {r: 0, g: 1, b: 1, a: 1}
|
||||
- _CautionColor: {r: 0.9137255, g: 0.76862746, b: 0.41568628, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _CriticalColor: {r: 0.90588236, g: 0.43529412, b: 0.31764707, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GoodColor: {r: 0.20825918, g: 0.6792453, b: 0.62190783, a: 1}
|
@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a88e148dbc2d0f45a027f72e59aee4d
|
||||
labels:
|
||||
- counter
|
||||
- fps
|
||||
- graph
|
||||
- material
|
||||
- monitor
|
||||
- shader
|
||||
- stats
|
||||
timeCreated: 1511697739
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,90 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: RAM_Allocated_Graph
|
||||
m_Shader: {fileID: 4800000, guid: bc65170c051b0724287a7f1636d87573, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 5
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 4500
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- FpsValues_Length: 120
|
||||
- PixelSnap: 0
|
||||
- ScrollSpeed: 0.2
|
||||
- _AmazingThreshold: 0.72
|
||||
- _BumpScale: 1
|
||||
- _CautionThreshold: 0
|
||||
- _ColorMask: 15
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _Glossiness: 0.5
|
||||
- _GoodThreshold: 0.4
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SrcBlend: 1
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _UVSec: 0
|
||||
- _UseUIAlphaClip: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _AmazingColor: {r: 0, g: 1, b: 1, a: 1}
|
||||
- _CautionColor: {r: 0.94509804, g: 0.35686275, b: 0.70980394, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _CriticalColor: {r: 0.94509804, g: 0.35686275, b: 0.70980394, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GoodColor: {r: 0.94509804, g: 0.35686275, b: 0.70980394, a: 1}
|
@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6b025b045db969e4988a6267cc04938d
|
||||
labels:
|
||||
- counter
|
||||
- graph
|
||||
- material
|
||||
- memory
|
||||
- monitor
|
||||
- ram
|
||||
- shader
|
||||
timeCreated: 1512500596
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,90 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: RAM_Mono_Graph
|
||||
m_Shader: {fileID: 4800000, guid: bc65170c051b0724287a7f1636d87573, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 5
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 4500
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- FpsValues_Length: 120
|
||||
- PixelSnap: 0
|
||||
- ScrollSpeed: 0.2
|
||||
- _AmazingThreshold: 0.72
|
||||
- _BumpScale: 1
|
||||
- _CautionThreshold: 0
|
||||
- _ColorMask: 15
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _Glossiness: 0.5
|
||||
- _GoodThreshold: 0.2
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SrcBlend: 1
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _UVSec: 0
|
||||
- _UseUIAlphaClip: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _AmazingColor: {r: 0, g: 1, b: 1, a: 1}
|
||||
- _CautionColor: {r: 0, g: 0.73333335, b: 0.9764706, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _CriticalColor: {r: 0, g: 0.73333335, b: 0.9764706, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GoodColor: {r: 0, g: 0.73333335, b: 0.9764706, a: 1}
|
@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb5c252f19f1cd2448f88d7f9dd989e8
|
||||
labels:
|
||||
- counter
|
||||
- graph
|
||||
- material
|
||||
- memory
|
||||
- monitor
|
||||
- ram
|
||||
- shader
|
||||
timeCreated: 1513614711
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,90 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: RAM_Reserved_Graph
|
||||
m_Shader: {fileID: 4800000, guid: bc65170c051b0724287a7f1636d87573, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 5
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 4500
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- FpsValues_Length: 120
|
||||
- PixelSnap: 0
|
||||
- ScrollSpeed: 0.2
|
||||
- _AmazingThreshold: 0.72
|
||||
- _BumpScale: 1
|
||||
- _CautionThreshold: 0
|
||||
- _ColorMask: 15
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _Glossiness: 0.5
|
||||
- _GoodThreshold: 0.6
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SrcBlend: 1
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _UVSec: 0
|
||||
- _UseUIAlphaClip: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _AmazingColor: {r: 0, g: 1, b: 1, a: 1}
|
||||
- _CautionColor: {r: 0.99607843, g: 0.89411765, b: 0.2509804, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _CriticalColor: {r: 0.99607843, g: 0.89411765, b: 0.2509804, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GoodColor: {r: 0.99607843, g: 0.89411765, b: 0.2509804, a: 1}
|
@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5ec99183bcca10249ac54cd6dcee6372
|
||||
labels:
|
||||
- counter
|
||||
- graph
|
||||
- material
|
||||
- memory
|
||||
- monitor
|
||||
- ram
|
||||
- shader
|
||||
timeCreated: 1512501386
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3be1e89ca880cc644a2aa20d1854250c
|
||||
folderAsset: yes
|
||||
timeCreated: 1511555560
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1551dbe188c02e544b8dd95d263ae1a3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,887 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3842867399166853360
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3912740604931392962}
|
||||
- component: {fileID: 3843565046808148296}
|
||||
m_Layer: 5
|
||||
m_Name: ADVANCED - Module
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3912740604931392962
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867399166853360}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 3912740601112588006}
|
||||
- {fileID: 3912740604249537256}
|
||||
- {fileID: 3843565046838049136}
|
||||
- {fileID: 3843565046838009216}
|
||||
- {fileID: 3843565046838004004}
|
||||
- {fileID: 3843565046838038372}
|
||||
- {fileID: 3843565046838026222}
|
||||
- {fileID: 3843565046838054370}
|
||||
- {fileID: 3843565046838060288}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.10510254, y: 134.01001}
|
||||
m_SizeDelta: {x: -16.63, y: 250.47}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &3843565046808148296
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867399166853360}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5c1019d31db77fd468164577146737ad, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_backgroundImages:
|
||||
- {fileID: 3801623490367796942}
|
||||
m_graphicsDeviceVersionText: {fileID: 3843565046808174610}
|
||||
m_processorTypeText: {fileID: 3843565046808132650}
|
||||
m_operatingSystemText: {fileID: 3801623489651697784}
|
||||
m_systemMemoryText: {fileID: 3843565046808166342}
|
||||
m_graphicsDeviceNameText: {fileID: 3843565046807956928}
|
||||
m_graphicsMemorySizeText: {fileID: 3843565046808154150}
|
||||
m_screenResolutionText: {fileID: 3843565046808147406}
|
||||
m_gameWindowResolutionText: {fileID: 3843565046808170664}
|
||||
m_updateRate: 5
|
||||
--- !u!1 &3842867401653705428
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3912740604249537256}
|
||||
- component: {fileID: 3910151276374724292}
|
||||
- component: {fileID: 3801623489651697784}
|
||||
- component: {fileID: 3801623454625418656}
|
||||
m_Layer: 5
|
||||
m_Name: operating_system_and_ram_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3912740604249537256
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867401653705428}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.20019531, y: 13.800003}
|
||||
m_SizeDelta: {x: -23.14, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3910151276374724292
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867401653705428}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3801623489651697784
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867401653705428}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 'OS: OS Version [Platform]'
|
||||
--- !u!114 &3801623454625418656
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867401653705428}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &3842867402509575672
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3912740601112588006}
|
||||
- component: {fileID: 3910151276525742862}
|
||||
- component: {fileID: 3801623490367796942}
|
||||
m_Layer: 5
|
||||
m_Name: BG_Image
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3912740601112588006
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867402509575672}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 389.27, y: 0}
|
||||
m_SizeDelta: {x: 778.55, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3910151276525742862
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867402509575672}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3801623490367796942
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3842867402509575672}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 0.33333334}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: c4f7f8debbcf3cf4faf280628cab55f9, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &3843565046818344340
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3843565046838049136}
|
||||
- component: {fileID: 3843565046838304092}
|
||||
- component: {fileID: 3843565046808147406}
|
||||
- component: {fileID: 3843565046808154662}
|
||||
m_Layer: 5
|
||||
m_Name: screen_res_value_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3843565046838049136
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818344340}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.20019531, y: 219.6}
|
||||
m_SizeDelta: {x: -24.14, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3843565046838304092
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818344340}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3843565046808147406
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818344340}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 'Screen: ####x####@##Hz'
|
||||
--- !u!114 &3843565046808154662
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818344340}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &3843565046818361608
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3843565046838009216}
|
||||
- component: {fileID: 3843565046838208232}
|
||||
- component: {fileID: 3843565046808170664}
|
||||
- component: {fileID: 3843565046808126578}
|
||||
m_Layer: 5
|
||||
m_Name: window_res_text_value
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3843565046838009216
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818361608}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.20019531, y: 189.30002}
|
||||
m_SizeDelta: {x: -24.14, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3843565046838208232
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818361608}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3843565046808170664
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818361608}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 'Window: ####x####@##Hz[###dpi]'
|
||||
--- !u!114 &3843565046808126578
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818361608}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &3843565046818373822
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3843565046838054370}
|
||||
- component: {fileID: 3843565046837891680}
|
||||
- component: {fileID: 3843565046808132650}
|
||||
- component: {fileID: 3843565046808136672}
|
||||
m_Layer: 5
|
||||
m_Name: processor_type_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3843565046838054370
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818373822}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 7
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.20019531, y: 74.30001}
|
||||
m_SizeDelta: {x: -23.14, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3843565046837891680
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818373822}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3843565046808132650
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818373822}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 'CPU: Processor Model [# cores]'
|
||||
--- !u!114 &3843565046808136672
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818373822}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &3843565046818375086
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3843565046838026222}
|
||||
- component: {fileID: 3843565046838222574}
|
||||
- component: {fileID: 3843565046808154150}
|
||||
- component: {fileID: 3843565046808169168}
|
||||
m_Layer: 5
|
||||
m_Name: graphics_memory_size_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3843565046838026222
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818375086}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 6
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.20019531, y: 103.30001}
|
||||
m_SizeDelta: {x: -23.14, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3843565046838222574
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818375086}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3843565046808154150
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818375086}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 'VRAM: ####MB. Max texture size: ####px. Shader level: ##'
|
||||
--- !u!114 &3843565046808169168
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818375086}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &3843565046818382618
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3843565046838004004}
|
||||
- component: {fileID: 3843565046838311234}
|
||||
- component: {fileID: 3843565046808174610}
|
||||
- component: {fileID: 3843565046808173802}
|
||||
m_Layer: 5
|
||||
m_Name: graphics_device_version_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3843565046838004004
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818382618}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.20019531, y: 161.30002}
|
||||
m_SizeDelta: {x: -23.14, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3843565046838311234
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818382618}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3843565046808174610
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818382618}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 'Graphics API: Graphics API version [level ##]'
|
||||
--- !u!114 &3843565046808173802
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818382618}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &3843565046818384376
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3843565046838038372}
|
||||
- component: {fileID: 3843565046838255100}
|
||||
- component: {fileID: 3843565046807956928}
|
||||
- component: {fileID: 3843565046808176320}
|
||||
m_Layer: 5
|
||||
m_Name: graphics_device_name_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3843565046838038372
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818384376}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 5
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.20019531, y: 132.30002}
|
||||
m_SizeDelta: {x: -23.14, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3843565046838255100
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818384376}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3843565046807956928
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818384376}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 'GPU: Graphics Card Name'
|
||||
--- !u!114 &3843565046808176320
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818384376}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &3843565046818385094
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3843565046838060288}
|
||||
- component: {fileID: 3843565046838236824}
|
||||
- component: {fileID: 3843565046808166342}
|
||||
- component: {fileID: 3843565046808068368}
|
||||
m_Layer: 5
|
||||
m_Name: ram_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3843565046838060288
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818385094}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3912740604931392962}
|
||||
m_RootOrder: 8
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -0.20019531, y: 44.80001}
|
||||
m_SizeDelta: {x: -23.14, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3843565046838236824
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818385094}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &3843565046808166342
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818385094}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 'RAM: #### MB'
|
||||
--- !u!114 &3843565046808068368
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3843565046818385094}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8e60b58e9eec36e46ba32caf55a802f4
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,662 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &8023522192042546097
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7800522346346212061}
|
||||
- component: {fileID: 7804307952332944447}
|
||||
- component: {fileID: 7984821691181171211}
|
||||
- component: {fileID: 7984821690819282791}
|
||||
m_Layer: 5
|
||||
m_Name: db_value_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7800522346346212061
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522192042546097}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8023949359419186811}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: -30.7, y: 26.300013}
|
||||
m_SizeDelta: {x: 290.6, y: 44}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7804307952332944447
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522192042546097}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &7984821691181171211
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522192042546097}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 2
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: -##
|
||||
--- !u!114 &7984821690819282791
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522192042546097}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &8023522193019896535
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7800522349053869169}
|
||||
- component: {fileID: 7804307952451012049}
|
||||
- component: {fileID: 7984821710221682845}
|
||||
m_Layer: 5
|
||||
m_Name: BG_Image_TEXT
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!224 &7800522349053869169
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193019896535}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8023949359419186811}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0.024932861, y: 31.98}
|
||||
m_SizeDelta: {x: 0.05, y: -63.95}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7804307952451012049
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193019896535}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &7984821710221682845
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193019896535}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 0.33333334}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: c4f7f8debbcf3cf4faf280628cab55f9, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &8023522193285040417
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7800522348713255227}
|
||||
- component: {fileID: 7804307938193033233}
|
||||
- component: {fileID: 7984821691142389341}
|
||||
m_Layer: 5
|
||||
m_Name: audio_spectrum_graph
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7800522348713255227
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193285040417}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 8023949359419152847}
|
||||
- {fileID: 7800522347927017199}
|
||||
m_Father: {fileID: 8023949359419186811}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: 0.23902893, y: 36.77}
|
||||
m_SizeDelta: {x: -15.480011, y: 57.76}
|
||||
m_Pivot: {x: 0.4999999, y: 0.50000024}
|
||||
--- !u!222 &7804307938193033233
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193285040417}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &7984821691142389341
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193285040417}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 2100000, guid: 61a418be8e5d13c448865432314f8277, type: 2}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: ad4148593b05d0f47980774815c325fe, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &8023522193599714111
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7800522347927017199}
|
||||
- component: {fileID: 7804307952974665897}
|
||||
- component: {fileID: 7984821691078566919}
|
||||
m_Layer: 5
|
||||
m_Name: audio_text_inside_graph
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7800522347927017199
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193599714111}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 7800522348713255227}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 51, y: 25.7}
|
||||
m_SizeDelta: {x: 99.5, y: 60.700012}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7804307952974665897
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193599714111}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &7984821691078566919
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193599714111}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.4627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 25
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 0
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 6
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: audio
|
||||
--- !u!1 &8023522193710420455
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7800522347690658609}
|
||||
- component: {fileID: 7804307938358383139}
|
||||
- component: {fileID: 7984821689660256287}
|
||||
m_Layer: 5
|
||||
m_Name: BG_Image_FULL
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7800522347690658609
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193710420455}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8023949359419186811}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0.024978638, y: 0.0000038146973}
|
||||
m_SizeDelta: {x: 0.049927, y: 0.0000076294}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7804307938358383139
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193710420455}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &7984821689660256287
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023522193710420455}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 0.33333334}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: c4f7f8debbcf3cf4faf280628cab55f9, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &8023949359398923053
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8023949359419137277}
|
||||
- component: {fileID: 8023949359418881589}
|
||||
- component: {fileID: 8023949359389300505}
|
||||
- component: {fileID: 8023949359389220047}
|
||||
m_Layer: 5
|
||||
m_Name: db_text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8023949359419137277
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398923053}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8023949359419186811}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 11.299927, y: 26.3}
|
||||
m_SizeDelta: {x: 290.6, y: 44}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8023949359418881589
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398923053}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &8023949359389300505
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398923053}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.8627451}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 76ed11d84beb10846a746b4259e26d39, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 2
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 0
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: dB
|
||||
--- !u!114 &8023949359389220047
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398923053}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.903}
|
||||
m_EffectDistance: {x: 2, y: -2}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &8023949359398946881
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8023949359419152847}
|
||||
- component: {fileID: 8023949359418881755}
|
||||
- component: {fileID: 8023949359389187151}
|
||||
m_Layer: 5
|
||||
m_Name: audio_spectrum_highest_values_graph
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8023949359419152847
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398946881}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 7800522348713255227}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.4999999, y: 0.50000024}
|
||||
--- !u!222 &8023949359418881755
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398946881}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!114 &8023949359389187151
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398946881}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 2100000, guid: a65c67e8efa392e4faaf526ab060ac88, type: 2}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.5019608}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: ad4148593b05d0f47980774815c325fe, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &8023949359398975867
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8023949359419186811}
|
||||
- component: {fileID: 8023949359389265205}
|
||||
- component: {fileID: 8023949359389242119}
|
||||
- component: {fileID: 8023949359389228359}
|
||||
- component: {fileID: 8023949359389258805}
|
||||
m_Layer: 5
|
||||
m_Name: AUDIO - Module
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8023949359419186811
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398975867}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 7800522347690658609}
|
||||
- {fileID: 7800522349053869169}
|
||||
- {fileID: 7800522348713255227}
|
||||
- {fileID: 7800522346346212061}
|
||||
- {fileID: 8023949359419137277}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: -176.6, y: -412}
|
||||
m_SizeDelta: {x: 330, y: 102.5}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &8023949359389265205
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398975867}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 766a588f9a6cb55499c66ea772072e11, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_DBText: {fileID: 7984821691181171211}
|
||||
--- !u!114 &8023949359389242119
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398975867}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2216f4eff6a7a8a43b38b180fdd2fd9e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &8023949359389228359
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398975867}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f2d6ca19dafe21b4b983441274e7f12a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_imageGraph: {fileID: 7984821691142389341}
|
||||
m_imageGraphHighestValues: {fileID: 8023949359389187151}
|
||||
ShaderFull: {fileID: 4800000, guid: bc65170c051b0724287a7f1636d87573, type: 3}
|
||||
ShaderLight: {fileID: 4800000, guid: 96316acf0f537ae449a9a641fa00eefe, type: 3}
|
||||
m_isInitialized: 0
|
||||
--- !u!114 &8023949359389258805
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8023949359398975867}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8c0448d8db852b54480670d291c04f1a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_audioGraphGameObject: {fileID: 8023522193285040417}
|
||||
m_audioDbText: {fileID: 7984821691181171211}
|
||||
m_backgroundImages:
|
||||
- {fileID: 7984821689660256287}
|
||||
- {fileID: 7984821710221682845}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 78081648e28527242bb334a6bdf7bfce
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fed2d45066a6d2a4191aa0c744a03147
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6387d68cbe02d2d4fb8912f794606585
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,668 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &177638
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 22451668}
|
||||
- component: {fileID: 22323726}
|
||||
- component: {fileID: 11439282}
|
||||
- component: {fileID: 11496292}
|
||||
- component: {fileID: 11480938}
|
||||
m_Layer: 5
|
||||
m_Name: '[Graphy]'
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 1638116407661442457, guid: 0000000000000000d000000000000000, type: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &22451668
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 177638}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0, y: 0, z: 0}
|
||||
m_Children:
|
||||
- {fileID: 22431670}
|
||||
- {fileID: 22415034}
|
||||
- {fileID: 22493042}
|
||||
- {fileID: 224000010937413736}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0, y: 0}
|
||||
--- !u!223 &22323726
|
||||
Canvas:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 177638}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_RenderMode: 0
|
||||
m_Camera: {fileID: 0}
|
||||
m_PlaneDistance: 100
|
||||
m_PixelPerfect: 1
|
||||
m_ReceivesEvents: 1
|
||||
m_OverrideSorting: 0
|
||||
m_OverridePixelPerfect: 0
|
||||
m_SortingBucketNormalizedSize: 0
|
||||
m_AdditionalShaderChannelsFlag: 25
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 30000
|
||||
m_TargetDisplay: 0
|
||||
--- !u!114 &11439282
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 177638}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_UiScaleMode: 1
|
||||
m_ReferencePixelsPerUnit: 100
|
||||
m_ScaleFactor: 0.66
|
||||
m_ReferenceResolution: {x: 1920, y: 1080}
|
||||
m_ScreenMatchMode: 0
|
||||
m_MatchWidthOrHeight: 0.5
|
||||
m_PhysicalUnit: 3
|
||||
m_FallbackScreenDPI: 96
|
||||
m_DefaultSpriteDPI: 96
|
||||
m_DynamicPixelsPerUnit: 1
|
||||
--- !u!114 &11496292
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 177638}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c80e6d63202cef44ca3ffdaccec693be, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_graphyMode: 0
|
||||
m_enableOnStartup: 1
|
||||
m_keepAlive: 1
|
||||
m_background: 1
|
||||
m_backgroundColor: {r: 0, g: 0, b: 0, a: 0.33333334}
|
||||
m_enableHotkeys: 1
|
||||
m_toggleModeKeyCode: 103
|
||||
m_toggleModeCtrl: 1
|
||||
m_toggleModeAlt: 0
|
||||
m_toggleActiveKeyCode: 104
|
||||
m_toggleActiveCtrl: 1
|
||||
m_toggleActiveAlt: 0
|
||||
m_graphModulePosition: 0
|
||||
m_fpsModuleState: 0
|
||||
m_goodFpsColor: {r: 0.20825918, g: 0.6792453, b: 0.62190783, a: 1}
|
||||
m_goodFpsThreshold: 60
|
||||
m_cautionFpsColor: {r: 0.9137255, g: 0.76862746, b: 0.41568628, a: 1}
|
||||
m_cautionFpsThreshold: 30
|
||||
m_criticalFpsColor: {r: 0.90588236, g: 0.43529412, b: 0.31764707, a: 1}
|
||||
m_fpsGraphResolution: 150
|
||||
m_fpsTextUpdateRate: 3
|
||||
m_ramModuleState: 0
|
||||
m_allocatedRamColor: {r: 0.94509804, g: 0.35686275, b: 0.70980394, a: 1}
|
||||
m_reservedRamColor: {r: 0.99607843, g: 0.89411765, b: 0.2509804, a: 1}
|
||||
m_monoRamColor: {r: 0, g: 0.73333335, b: 0.9764706, a: 1}
|
||||
m_ramGraphResolution: 150
|
||||
m_ramTextUpdateRate: 3
|
||||
m_audioModuleState: 0
|
||||
m_findAudioListenerInCameraIfNull: 1
|
||||
m_audioListener: {fileID: 0}
|
||||
m_audioGraphColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_audioGraphResolution: 81
|
||||
m_audioTextUpdateRate: 3
|
||||
m_FFTWindow: 4
|
||||
m_spectrumSize: 512
|
||||
m_advancedModulePosition: 3
|
||||
m_advancedModuleState: 0
|
||||
--- !u!114 &11480938
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 177638}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cb8428f1f208dcc49b6c04976d44cbc9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_debugPackets:
|
||||
- Active: 1
|
||||
Id: 1
|
||||
ExecuteOnce: 1
|
||||
InitSleepTime: 2
|
||||
ExecuteSleepTime: 2
|
||||
ConditionEvaluation: 0
|
||||
DebugConditions:
|
||||
- Variable: 0
|
||||
Comparer: 0
|
||||
Value: 0
|
||||
MessageType: 0
|
||||
Message:
|
||||
TakeScreenshot: 0
|
||||
ScreenshotFileName:
|
||||
DebugBreak: 0
|
||||
UnityEvents:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1001 &824167088398634459
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 22451668}
|
||||
m_Modifications:
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: -173.41986
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -271.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 330
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 166.3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 824167088398773255, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: RAM - Module
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 6387d68cbe02d2d4fb8912f794606585, type: 3}
|
||||
--- !u!224 &22415034 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 824167088385395553, guid: 6387d68cbe02d2d4fb8912f794606585,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 824167088398634459}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &3843565046818239914
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 22451668}
|
||||
m_Modifications:
|
||||
- target: {fileID: 3842867399166853360, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: ADVANCED - Module
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: -0.10498047
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 134.01001
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: -16.63
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 250.47
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 8e60b58e9eec36e46ba32caf55a802f4, type: 3}
|
||||
--- !u!224 &224000010937413736 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 3912740604931392962, guid: 8e60b58e9eec36e46ba32caf55a802f4,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 3843565046818239914}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &6365662255711947173
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 22451668}
|
||||
m_Modifications:
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: -173.41992
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -94.930115
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 330
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 172.6
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6365662255711835907, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: FPS - Module
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: fed2d45066a6d2a4191aa0c744a03147, type: 3}
|
||||
--- !u!224 &22431670 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 6365662255690075667, guid: fed2d45066a6d2a4191aa0c744a03147,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 6365662255711947173}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &8023949359398807817
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 22451668}
|
||||
m_Modifications:
|
||||
- target: {fileID: 8023949359398975867, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: AUDIO - Module
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: -173.41998
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -413.3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 330
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 102.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 78081648e28527242bb334a6bdf7bfce, type: 3}
|
||||
--- !u!224 &22493042 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 8023949359419186811, guid: 78081648e28527242bb334a6bdf7bfce,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 8023949359398807817}
|
||||
m_PrefabAsset: {fileID: 0}
|
@ -0,0 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0abab5bb77339e4428787a870eb31bd3
|
||||
labels:
|
||||
- audio
|
||||
- counter
|
||||
- debugger
|
||||
- fps
|
||||
- graph
|
||||
- graphy
|
||||
- memory
|
||||
- ram
|
||||
- screenshot
|
||||
- shader
|
||||
- spectrum
|
||||
- stats
|
||||
- tayx
|
||||
timeCreated: 1513271445
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
112
Assets/Plugins/Graphy - Ultimate Stats Monitor/README.md
Normal file
112
Assets/Plugins/Graphy - Ultimate Stats Monitor/README.md
Normal file
@ -0,0 +1,112 @@
|
||||
# Graphy - Ultimate FPS Counter - Stats Monitor & Debugger (Unity)
|
||||
|
||||
[](https://openupm.com/packages/com.tayx.graphy/)
|
||||
[](https://github.com/Tayx94/graphy/blob/master/LICENSE)
|
||||
[](https://unity3d.com/get-unity/download)
|
||||
|
||||
[](https://github.com/Tayx94/graphy/issues)
|
||||
[](https://github.com/Tayx94/graphy/releases)
|
||||
[](https://github.com/Tayx94/graphy/graphs/contributors)
|
||||
[](https://github.com/Tayx94/graphy)
|
||||
[](https://github.com/Tayx94/graphy)
|
||||
|
||||
[](https://discord.gg/2KgNEHK?)
|
||||
|
||||
[](http://twitter.com/intent/user?screen_name=martinTayx)
|
||||
|
||||
**Links:** [Discord](https://discord.gg/2KgNEHK?) | [Mail](mailto:martintayx@gmail.com) | [Twitter](http://twitter.com/intent/user?screen_name=martinTayx) | [Asset store](https://assetstore.unity.com/packages/tools/gui/graphy-ultimate-stats-monitor-debugger-105778) | [Forum post](https://forum.unity.com/threads/graphy-ultimate-stats-monitor-debugger-released.517387/) | [Donations](https://www.paypal.me/MartinPaneUK)
|
||||
|
||||
**WINNER** of the **BEST DEVELOPMENT ASSET** in the **Unity Awards 2018**.
|
||||
|
||||

|
||||
|
||||
Graphy is the ultimate, easy to use, feature packed FPS Counter, stats monitor and debugger for your Unity project.
|
||||
|
||||
**Main Features:**
|
||||
- Graph & Text:
|
||||
- FPS
|
||||
- Memory
|
||||
- Audio
|
||||
- Advanced device information
|
||||
- Debugging tools
|
||||
|
||||
With this tool you will be able to visualize and catch when your game has some unexpected hiccup or stutter, and act accordingly!
|
||||
|
||||
The debugger allows you to set one or more conditions, that if met will have the consequences you desire, such as taking a screenshot, pausing the editor, printing a message to the console and more! Even call a method from your own code if you want!
|
||||
|
||||
**Additional features:**
|
||||
- Customizable look and feel
|
||||
- Multiple layouts
|
||||
- Custom Inspector
|
||||
- Hotkeys
|
||||
- Easy to use API (accessible from code)
|
||||
- Works on multiple platforms
|
||||
- Background Mode
|
||||
- Works from Unity 5.4 and up!
|
||||
- Well documented C# and Shader code included
|
||||
|
||||
**Links:**
|
||||
- [Asset store](https://assetstore.unity.com/packages/tools/gui/graphy-ultimate-stats-monitor-debugger-105778)
|
||||
- [Forum post](https://forum.unity.com/threads/graphy-ultimate-stats-monitor-debugger-released.517387/)
|
||||
- [Video Teaser](https://youtu.be/2X3vXxLANk0)
|
||||
|
||||
**Contact:**
|
||||
- [Mail](martintayx@gmail.com)
|
||||
- [Twitter](https://twitter.com/martinTayx)
|
||||
- [Discord](https://discord.gg/2KgNEHK?)
|
||||
|
||||
## Installation
|
||||
1. The package is available on the [openupm registry](https://openupm.com). You can install it via [openupm-cli](https://github.com/openupm/openupm-cli).
|
||||
```
|
||||
openupm add com.tayx.graphy
|
||||
```
|
||||
2. You can also install via git url by adding this entry in your **manifest.json**
|
||||
```
|
||||
{
|
||||
"dependencies": {
|
||||
...
|
||||
"com.tayx.graphy": "https://github.com/Tayx94/graphy.git",
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
3. You can also download it from the [Asset Store](https://assetstore.unity.com/packages/tools/gui/graphy-ultimate-stats-monitor-debugger-105778)
|
||||
|
||||
4. Click here for old version that supports Unity 5.4+:
|
||||
[](https://github.com/Tayx94/graphy/releases/tag/v1.6.0-Unity5.4)
|
||||
|
||||
## Development of Graphy
|
||||
|
||||
Maintainer and main developer: **Martín Pane** [](http://twitter.com/intent/user?screen_name=martinTayx)
|
||||
|
||||
Graphy is **FREE** to use, but if it helped you and you want to contribute to its development, feel free to leave a donation!
|
||||
|
||||
- [Donation Link](https://www.paypal.me/MartinPaneUK)
|
||||
|
||||
### Contributing
|
||||
|
||||
Let's make Graphy the go-to for stats monitoring in Unity!
|
||||
|
||||
I would really appreciate any contributions! Below you can find a roadmap for future planned features and optimisations that you might be able to help out with. If you want to make a big pull request, please do it on the "dev" branch.
|
||||
|
||||
Create a GitHub issue if you want to start a discussion or request a feature, and please label appropriately.
|
||||
|
||||
You can also join the [Discord](https://discord.gg/2KgNEHK?) for active discussions with other members of the community.
|
||||
|
||||
### Roadmap
|
||||
|
||||
**Planned features (No ETA):**
|
||||
|
||||
- Add GfxDriver stats to the RAM module.
|
||||
- Scale Canvas (GetComponent<Canvas>().scaleFactor *= multiplier;) -> If it changes, set again.
|
||||
- Make a template for a graph + text module so people can create their own easily.
|
||||
- Allow storing FPS for a predetermined time to allow benchmarks.
|
||||
- Dump all Graphy Data as a string to:
|
||||
- File.
|
||||
- Send to server.
|
||||
- Send mail.
|
||||
- Add a preprocessor key #GRAPHY to avoid adding the asset in builds.
|
||||
|
||||
## License
|
||||
|
||||
Graphy is released under the [MIT license](https://github.com/Tayx94/graphy/blob/master/LICENSE). Although I don't require attribution, I would love to know if you decide to use it in a project! Let me know on [Twitter](https://twitter.com/martinTayx) or by [email](martintayx@gmail.com).
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fd1e6a9192c40084998c62404bb41ba2
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Plugins/Graphy - Ultimate Stats Monitor/Readme! - Graphy - Documentation.pdf
(Stored with Git LFS)
Normal file
BIN
Assets/Plugins/Graphy - Ultimate Stats Monitor/Readme! - Graphy - Documentation.pdf
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d78a1478d4edf8a4f894e39e18c9e58d
|
||||
labels:
|
||||
- Counter
|
||||
- Fps
|
||||
- Graph
|
||||
- Graphy
|
||||
- Tayx
|
||||
timeCreated: 1518800331
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d019fe31826be4d40b791a523a76fa12
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ac38d39b5dd9f442a088b7284b58236
|
||||
folderAsset: yes
|
||||
timeCreated: 1513377123
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,347 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 05-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.Collections.Generic;
|
||||
using System.Text;
|
||||
using Tayx.Graphy.UI;
|
||||
using Tayx.Graphy.Utils;
|
||||
using Tayx.Graphy.Utils.NumString;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
#if UNITY_5_5_OR_NEWER
|
||||
#endif
|
||||
|
||||
namespace Tayx.Graphy.Advanced
|
||||
{
|
||||
public class G_AdvancedData : MonoBehaviour, IMovable, IModifiableState
|
||||
{
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
G_IntString.Init(0, 7680);
|
||||
|
||||
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;
|
||||
|
||||
var 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
|
||||
|
||||
var 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
|
||||
(
|
||||
RectTransform.Axis.Horizontal,
|
||||
preferredWidth + 25
|
||||
);
|
||||
|
||||
m_backgroundImages[0].rectTransform.anchoredPosition = new Vector2
|
||||
(
|
||||
(preferredWidth + 25) / 2 * Mathf.Sign(m_backgroundImages[0].rectTransform.anchoredPosition.x),
|
||||
m_backgroundImages[0].rectTransform.anchoredPosition.y
|
||||
);
|
||||
|
||||
#endregion
|
||||
|
||||
UpdateParameters();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private List<Image> m_backgroundImages = new();
|
||||
|
||||
[SerializeField] private Text m_graphicsDeviceVersionText;
|
||||
|
||||
[SerializeField] private Text m_processorTypeText;
|
||||
|
||||
[SerializeField] private Text m_operatingSystemText;
|
||||
|
||||
[SerializeField] private Text m_systemMemoryText;
|
||||
|
||||
[SerializeField] private Text m_graphicsDeviceNameText;
|
||||
[SerializeField] private Text m_graphicsMemorySizeText;
|
||||
[SerializeField] private Text m_screenResolutionText;
|
||||
[SerializeField] private Text m_gameWindowResolutionText;
|
||||
|
||||
[Range(1, 60)] [SerializeField] private float m_updateRate = 1f; // 1 update per sec.
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private RectTransform m_rectTransform;
|
||||
|
||||
private float m_deltaTime;
|
||||
|
||||
private StringBuilder m_sb;
|
||||
|
||||
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(((int)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)
|
||||
{
|
||||
var xSideOffsetBackgroundImage = Mathf.Abs(m_backgroundImages[0].rectTransform.anchoredPosition.x);
|
||||
var 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;
|
||||
|
||||
var 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
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c1019d31db77fd468164577146737ad
|
||||
timeCreated: 1512484835
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2523395741efc1c48822a27d9fcb57d2
|
||||
folderAsset: yes
|
||||
timeCreated: 1513377094
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,276 @@
|
||||
/* ---------------------------------------
|
||||
* 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 Tayx.Graphy.Graph;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Tayx.Graphy.Audio
|
||||
{
|
||||
public class G_AudioGraph : G_Graph
|
||||
{
|
||||
#region Methods -> Public
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
if (m_shaderGraph == null)
|
||||
// TODO: While Graphy is disabled (e.g. by default via Ctrl+H) and while in Editor after a Hot-Swap,
|
||||
// the OnApplicationFocus calls this while m_shaderGraph == null, throwing a NullReferenceException
|
||||
return;
|
||||
switch (m_graphyManager.GraphyMode)
|
||||
{
|
||||
case GraphyManager.Mode.FULL:
|
||||
m_shaderGraph.ArrayMaxSize = G_GraphShader.ArrayMaxSizeFull;
|
||||
m_shaderGraph.Image.material = new Material(ShaderFull);
|
||||
|
||||
m_shaderGraphHighestValues.ArrayMaxSize = G_GraphShader.ArrayMaxSizeFull;
|
||||
m_shaderGraphHighestValues.Image.material = new Material(ShaderFull);
|
||||
break;
|
||||
|
||||
case GraphyManager.Mode.LIGHT:
|
||||
m_shaderGraph.ArrayMaxSize = G_GraphShader.ArrayMaxSizeLight;
|
||||
m_shaderGraph.Image.material = new Material(ShaderLight);
|
||||
|
||||
m_shaderGraphHighestValues.ArrayMaxSize = G_GraphShader.ArrayMaxSizeLight;
|
||||
m_shaderGraphHighestValues.Image.material = new Material(ShaderLight);
|
||||
break;
|
||||
}
|
||||
|
||||
m_shaderGraph.InitializeShader();
|
||||
m_shaderGraphHighestValues.InitializeShader();
|
||||
|
||||
m_resolution = m_graphyManager.AudioGraphResolution;
|
||||
|
||||
CreatePoints();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_audioMonitor = GetComponent<G_AudioMonitor>();
|
||||
|
||||
m_shaderGraph = new G_GraphShader
|
||||
{
|
||||
Image = m_imageGraph
|
||||
};
|
||||
|
||||
m_shaderGraphHighestValues = new G_GraphShader
|
||||
{
|
||||
Image = m_imageGraphHighestValues
|
||||
};
|
||||
|
||||
UpdateParameters();
|
||||
|
||||
m_isInitialized = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private Image m_imageGraph;
|
||||
[SerializeField] private Image m_imageGraphHighestValues;
|
||||
|
||||
[SerializeField] private Shader ShaderFull;
|
||||
[SerializeField] private Shader ShaderLight;
|
||||
|
||||
[SerializeField] private bool m_isInitialized;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_AudioMonitor m_audioMonitor;
|
||||
|
||||
private int m_resolution = 40;
|
||||
|
||||
private G_GraphShader m_shaderGraph;
|
||||
private G_GraphShader m_shaderGraphHighestValues;
|
||||
|
||||
private float[] m_graphArray;
|
||||
private float[] m_graphArrayHighestValue;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
/* ----- NOTE: ----------------------------
|
||||
* We used to Init() here regardless of
|
||||
* whether this module was enabled.
|
||||
* The reason we don't Init() here
|
||||
* anymore is that some users are on
|
||||
* platforms that do not support the arrays
|
||||
* in the Shaders.
|
||||
*
|
||||
* See: https://github.com/Tayx94/graphy/issues/17
|
||||
*
|
||||
* Even though we don't Init() competely
|
||||
* here anymore, we still need
|
||||
* m_audioMonitor for in Update()
|
||||
* --------------------------------------*/
|
||||
m_audioMonitor = GetComponent<G_AudioMonitor>();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (m_audioMonitor.SpectrumDataAvailable) UpdateGraph();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Protected Override
|
||||
|
||||
protected override void UpdateGraph()
|
||||
{
|
||||
// Since we no longer initialize by default OnEnable(),
|
||||
// we need to check here, and Init() if needed
|
||||
if (!m_isInitialized) Init();
|
||||
|
||||
var incrementPerIteration = Mathf.FloorToInt(m_audioMonitor.Spectrum.Length / (float)m_resolution);
|
||||
|
||||
// Current values -------------------------
|
||||
|
||||
for (var i = 0; i <= m_resolution - 1; i++)
|
||||
{
|
||||
float currentValue = 0;
|
||||
|
||||
for (var j = 0; j < incrementPerIteration; j++)
|
||||
currentValue += m_audioMonitor.Spectrum[i * incrementPerIteration + j];
|
||||
|
||||
// Uses 3 values for each bar to accomplish that look
|
||||
|
||||
if ((i + 1) % 3 == 0 && i > 1)
|
||||
{
|
||||
var value =
|
||||
(
|
||||
m_audioMonitor.dBNormalized(m_audioMonitor.lin2dB(currentValue / incrementPerIteration))
|
||||
+ m_graphArray[i - 1]
|
||||
+ m_graphArray[i - 2]
|
||||
) / 3;
|
||||
|
||||
m_graphArray[i] = value;
|
||||
m_graphArray[i - 1] = value;
|
||||
m_graphArray[i - 2] =
|
||||
-1; // Always set the third one to -1 to leave gaps in the graph and improve readability
|
||||
}
|
||||
else
|
||||
{
|
||||
m_graphArray[i] =
|
||||
m_audioMonitor.dBNormalized(m_audioMonitor.lin2dB(currentValue / incrementPerIteration));
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i <= m_resolution - 1; i++) m_shaderGraph.ShaderArrayValues[i] = m_graphArray[i];
|
||||
|
||||
m_shaderGraph.UpdatePoints();
|
||||
|
||||
|
||||
// Highest values -------------------------
|
||||
|
||||
for (var i = 0; i <= m_resolution - 1; i++)
|
||||
{
|
||||
float currentValue = 0;
|
||||
|
||||
for (var j = 0; j < incrementPerIteration; j++)
|
||||
currentValue += m_audioMonitor.SpectrumHighestValues[i * incrementPerIteration + j];
|
||||
|
||||
// Uses 3 values for each bar to accomplish that look
|
||||
|
||||
if ((i + 1) % 3 == 0 && i > 1)
|
||||
{
|
||||
var value =
|
||||
(
|
||||
m_audioMonitor.dBNormalized(m_audioMonitor.lin2dB(currentValue / incrementPerIteration))
|
||||
+ m_graphArrayHighestValue[i - 1]
|
||||
+ m_graphArrayHighestValue[i - 2]
|
||||
) / 3;
|
||||
|
||||
m_graphArrayHighestValue[i] = value;
|
||||
m_graphArrayHighestValue[i - 1] = value;
|
||||
m_graphArrayHighestValue[i - 2] =
|
||||
-1; // Always set the third one to -1 to leave gaps in the graph and improve readability
|
||||
}
|
||||
else
|
||||
{
|
||||
m_graphArrayHighestValue[i] =
|
||||
m_audioMonitor.dBNormalized(m_audioMonitor.lin2dB(currentValue / incrementPerIteration));
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i <= m_resolution - 1; i++)
|
||||
m_shaderGraphHighestValues.ShaderArrayValues[i] = m_graphArrayHighestValue[i];
|
||||
|
||||
m_shaderGraphHighestValues.UpdatePoints();
|
||||
}
|
||||
|
||||
protected override void CreatePoints()
|
||||
{
|
||||
// Init Arrays
|
||||
if (m_shaderGraph.ShaderArrayValues == null || m_shaderGraph.ShaderArrayValues.Length != m_resolution)
|
||||
{
|
||||
m_graphArray = new float[m_resolution];
|
||||
m_graphArrayHighestValue = new float[m_resolution];
|
||||
m_shaderGraph.ShaderArrayValues = new float[m_resolution];
|
||||
m_shaderGraphHighestValues.ShaderArrayValues = new float[m_resolution];
|
||||
}
|
||||
|
||||
for (var i = 0; i < m_resolution; i++)
|
||||
{
|
||||
m_shaderGraph.ShaderArrayValues[i] = 0;
|
||||
m_shaderGraphHighestValues.ShaderArrayValues[i] = 0;
|
||||
}
|
||||
|
||||
// Color
|
||||
m_shaderGraph.GoodColor = m_graphyManager.AudioGraphColor;
|
||||
m_shaderGraph.CautionColor = m_graphyManager.AudioGraphColor;
|
||||
m_shaderGraph.CriticalColor = m_graphyManager.AudioGraphColor;
|
||||
m_shaderGraph.UpdateColors();
|
||||
|
||||
m_shaderGraphHighestValues.GoodColor = m_graphyManager.AudioGraphColor;
|
||||
m_shaderGraphHighestValues.CautionColor = m_graphyManager.AudioGraphColor;
|
||||
m_shaderGraphHighestValues.CriticalColor = m_graphyManager.AudioGraphColor;
|
||||
m_shaderGraphHighestValues.UpdateColors();
|
||||
|
||||
// Threshold
|
||||
m_shaderGraph.GoodThreshold = 0;
|
||||
m_shaderGraph.CautionThreshold = 0;
|
||||
m_shaderGraph.UpdateThresholds();
|
||||
|
||||
m_shaderGraphHighestValues.GoodThreshold = 0;
|
||||
m_shaderGraphHighestValues.CautionThreshold = 0;
|
||||
m_shaderGraphHighestValues.UpdateThresholds();
|
||||
|
||||
// Update Array
|
||||
m_shaderGraph.UpdateArray();
|
||||
m_shaderGraphHighestValues.UpdateArray();
|
||||
|
||||
// Average
|
||||
m_shaderGraph.Average = 0;
|
||||
m_shaderGraph.UpdateAverage();
|
||||
|
||||
m_shaderGraphHighestValues.Average = 0;
|
||||
m_shaderGraphHighestValues.UpdateAverage();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2d6ca19dafe21b4b983441274e7f12a
|
||||
timeCreated: 1513169449
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,214 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 03-Jan-18
|
||||
* 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.Collections.Generic;
|
||||
using Tayx.Graphy.UI;
|
||||
using Tayx.Graphy.Utils;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Tayx.Graphy.Audio
|
||||
{
|
||||
public class G_AudioManager : MonoBehaviour, IMovable, IModifiableState
|
||||
{
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private GameObject m_audioGraphGameObject;
|
||||
[SerializeField] private Text m_audioDbText;
|
||||
|
||||
[SerializeField] private List<Image> m_backgroundImages = new();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_AudioGraph m_audioGraph;
|
||||
private G_AudioMonitor m_audioMonitor;
|
||||
private G_AudioText m_audioText;
|
||||
|
||||
private RectTransform m_rectTransform;
|
||||
|
||||
private readonly List<GameObject> m_childrenGameObjects = new();
|
||||
|
||||
private GraphyManager.ModuleState m_previousModuleState = GraphyManager.ModuleState.FULL;
|
||||
private GraphyManager.ModuleState m_currentModuleState = GraphyManager.ModuleState.FULL;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
UpdateParameters();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public
|
||||
|
||||
public void SetPosition(GraphyManager.ModulePosition newModulePosition)
|
||||
{
|
||||
var xSideOffset = Mathf.Abs(m_rectTransform.anchoredPosition.x);
|
||||
var ySideOffset = Mathf.Abs(m_rectTransform.anchoredPosition.y);
|
||||
|
||||
m_audioDbText.alignment = TextAnchor.UpperRight;
|
||||
|
||||
switch (newModulePosition)
|
||||
{
|
||||
case GraphyManager.ModulePosition.TOP_LEFT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.up;
|
||||
m_rectTransform.anchorMin = Vector2.up;
|
||||
m_rectTransform.anchoredPosition = new Vector2(xSideOffset, -ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.TOP_RIGHT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.one;
|
||||
m_rectTransform.anchorMin = Vector2.one;
|
||||
m_rectTransform.anchoredPosition = new Vector2(-xSideOffset, -ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.BOTTOM_LEFT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.zero;
|
||||
m_rectTransform.anchorMin = Vector2.zero;
|
||||
m_rectTransform.anchoredPosition = new Vector2(xSideOffset, ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.BOTTOM_RIGHT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.right;
|
||||
m_rectTransform.anchorMin = Vector2.right;
|
||||
m_rectTransform.anchoredPosition = new Vector2(-xSideOffset, ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.FREE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetState(GraphyManager.ModuleState state, bool silentUpdate = false)
|
||||
{
|
||||
if (!silentUpdate) m_previousModuleState = m_currentModuleState;
|
||||
|
||||
m_currentModuleState = state;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case GraphyManager.ModuleState.FULL:
|
||||
gameObject.SetActive(true);
|
||||
m_childrenGameObjects.SetAllActive(true);
|
||||
SetGraphActive(true);
|
||||
|
||||
if (m_graphyManager.Background)
|
||||
m_backgroundImages.SetOneActive(0);
|
||||
else
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.TEXT:
|
||||
case GraphyManager.ModuleState.BASIC:
|
||||
gameObject.SetActive(true);
|
||||
m_childrenGameObjects.SetAllActive(true);
|
||||
SetGraphActive(false);
|
||||
|
||||
if (m_graphyManager.Background)
|
||||
m_backgroundImages.SetOneActive(1);
|
||||
else
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.BACKGROUND:
|
||||
gameObject.SetActive(true);
|
||||
SetGraphActive(false);
|
||||
m_childrenGameObjects.SetAllActive(false);
|
||||
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.OFF:
|
||||
gameObject.SetActive(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void RestorePreviousState()
|
||||
{
|
||||
SetState(m_previousModuleState);
|
||||
}
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
foreach (var image in m_backgroundImages) image.color = m_graphyManager.BackgroundColor;
|
||||
|
||||
m_audioGraph.UpdateParameters();
|
||||
m_audioMonitor.UpdateParameters();
|
||||
m_audioText.UpdateParameters();
|
||||
|
||||
SetState(m_graphyManager.AudioModuleState);
|
||||
}
|
||||
|
||||
public void RefreshParameters()
|
||||
{
|
||||
foreach (var image in m_backgroundImages) image.color = m_graphyManager.BackgroundColor;
|
||||
|
||||
m_audioGraph.UpdateParameters();
|
||||
m_audioMonitor.UpdateParameters();
|
||||
m_audioText.UpdateParameters();
|
||||
|
||||
SetState(m_currentModuleState, true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_rectTransform = GetComponent<RectTransform>();
|
||||
|
||||
m_audioGraph = GetComponent<G_AudioGraph>();
|
||||
m_audioMonitor = GetComponent<G_AudioMonitor>();
|
||||
m_audioText = GetComponent<G_AudioText>();
|
||||
|
||||
foreach (Transform child in transform)
|
||||
if (child.parent == transform)
|
||||
m_childrenGameObjects.Add(child.gameObject);
|
||||
}
|
||||
|
||||
private void SetGraphActive(bool active)
|
||||
{
|
||||
m_audioGraph.enabled = active;
|
||||
m_audioGraphGameObject.SetActive(active);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8c0448d8db852b54480670d291c04f1a
|
||||
timeCreated: 1514998347
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,195 @@
|
||||
/* ---------------------------------------
|
||||
* 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 UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace Tayx.Graphy.Audio
|
||||
{
|
||||
/// <summary>
|
||||
/// Note: this class only works with Unity's AudioListener.
|
||||
/// If you're using a custom audio engine (like FMOD or WWise) it won't work,
|
||||
/// although you can always adapt it.
|
||||
/// </summary>
|
||||
public class G_AudioMonitor : MonoBehaviour
|
||||
{
|
||||
#region Variables -> Private
|
||||
|
||||
private const float m_refValue = 1f;
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private AudioListener m_audioListener;
|
||||
|
||||
private GraphyManager.LookForAudioListener m_findAudioListenerInCameraIfNull =
|
||||
GraphyManager.LookForAudioListener.ON_SCENE_LOAD;
|
||||
|
||||
private FFTWindow m_FFTWindow = FFTWindow.Blackman;
|
||||
|
||||
private int m_spectrumSize = 512;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties -> Public
|
||||
|
||||
/// <summary>
|
||||
/// Current audio spectrum from the specified AudioListener.
|
||||
/// </summary>
|
||||
public float[] Spectrum { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Highest audio spectrum from the specified AudioListener in the last few seconds.
|
||||
/// </summary>
|
||||
public float[] SpectrumHighestValues { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Maximum DB registered in the current spectrum.
|
||||
/// </summary>
|
||||
public float MaxDB { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if there is a reference to the audio listener.
|
||||
/// </summary>
|
||||
public bool SpectrumDataAvailable => m_audioListener != null;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (m_audioListener != null)
|
||||
{
|
||||
// Use this data to calculate the dB value
|
||||
|
||||
AudioListener.GetOutputData(Spectrum, 0);
|
||||
|
||||
float sum = 0;
|
||||
|
||||
for (var i = 0; i < Spectrum.Length; i++) sum += Spectrum[i] * Spectrum[i]; // sum squared samples
|
||||
|
||||
var rmsValue = Mathf.Sqrt(sum / Spectrum.Length); // rms = square root of average
|
||||
|
||||
MaxDB = 20 * Mathf.Log10(rmsValue / m_refValue); // calculate dB
|
||||
|
||||
if (MaxDB < -80) MaxDB = -80; // clamp it to -80dB min
|
||||
|
||||
// Use this data to draw the spectrum in the graphs
|
||||
|
||||
AudioListener.GetSpectrumData(Spectrum, 0, m_FFTWindow);
|
||||
|
||||
for (var i = 0; i < Spectrum.Length; i++)
|
||||
// Update the highest value if its lower than the current one
|
||||
if (Spectrum[i] > SpectrumHighestValues[i])
|
||||
SpectrumHighestValues[i] = Spectrum[i];
|
||||
|
||||
// Slowly lower the value
|
||||
else
|
||||
SpectrumHighestValues[i] = Mathf.Clamp
|
||||
(
|
||||
SpectrumHighestValues[i] - SpectrumHighestValues[i] * Time.deltaTime * 2,
|
||||
0,
|
||||
1
|
||||
);
|
||||
}
|
||||
else if (m_audioListener == null
|
||||
&& m_findAudioListenerInCameraIfNull == GraphyManager.LookForAudioListener.ALWAYS)
|
||||
{
|
||||
m_audioListener = FindAudioListener();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
SceneManager.sceneLoaded -= OnSceneLoaded;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
m_findAudioListenerInCameraIfNull = m_graphyManager.FindAudioListenerInCameraIfNull;
|
||||
|
||||
m_audioListener = m_graphyManager.AudioListener;
|
||||
m_FFTWindow = m_graphyManager.FftWindow;
|
||||
m_spectrumSize = m_graphyManager.SpectrumSize;
|
||||
|
||||
if (m_audioListener == null
|
||||
&& m_findAudioListenerInCameraIfNull != GraphyManager.LookForAudioListener.NEVER)
|
||||
m_audioListener = FindAudioListener();
|
||||
|
||||
Spectrum = new float[m_spectrumSize];
|
||||
SpectrumHighestValues = new float[m_spectrumSize];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts spectrum values to decibels using logarithms.
|
||||
/// </summary>
|
||||
/// <param name="linear"></param>
|
||||
/// <returns></returns>
|
||||
public float lin2dB(float linear)
|
||||
{
|
||||
return Mathf.Clamp(Mathf.Log10(linear) * 20.0f, -160.0f, 0.0f);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Normalizes a value in decibels between 0-1.
|
||||
/// </summary>
|
||||
/// <param name="db"></param>
|
||||
/// <returns></returns>
|
||||
public float dBNormalized(float db)
|
||||
{
|
||||
return (db + 160f) / 160f;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
/// <summary>
|
||||
/// Tries to find an audio listener in the main camera.
|
||||
/// </summary>
|
||||
private AudioListener FindAudioListener()
|
||||
{
|
||||
var mainCamera = Camera.main;
|
||||
|
||||
if (mainCamera != null && mainCamera.TryGetComponent(out AudioListener audioListener)) return audioListener;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
|
||||
{
|
||||
if (m_findAudioListenerInCameraIfNull == GraphyManager.LookForAudioListener.ON_SCENE_LOAD)
|
||||
m_audioListener = FindAudioListener();
|
||||
}
|
||||
|
||||
private void Init()
|
||||
{
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
UpdateParameters();
|
||||
|
||||
SceneManager.sceneLoaded += OnSceneLoaded;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2216f4eff6a7a8a43b38b180fdd2fd9e
|
||||
timeCreated: 1513377074
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,90 @@
|
||||
/* ---------------------------------------
|
||||
* 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 Tayx.Graphy.Utils.NumString;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Tayx.Graphy.Audio
|
||||
{
|
||||
public class G_AudioText : MonoBehaviour
|
||||
{
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private Text m_DBText;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
m_updateRate = m_graphyManager.AudioTextUpdateRate;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
G_IntString.Init(-80, 0); // dB range
|
||||
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_audioMonitor = GetComponent<G_AudioMonitor>();
|
||||
|
||||
UpdateParameters();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_AudioMonitor m_audioMonitor;
|
||||
|
||||
private int m_updateRate = 4;
|
||||
|
||||
private float m_deltaTimeOffset;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (m_audioMonitor.SpectrumDataAvailable)
|
||||
{
|
||||
if (m_deltaTimeOffset > 1f / m_updateRate)
|
||||
{
|
||||
m_deltaTimeOffset = 0f;
|
||||
|
||||
m_DBText.text = Mathf.Clamp((int)m_audioMonitor.MaxDB, -80, 0).ToStringNonAlloc();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_deltaTimeOffset += Time.deltaTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 766a588f9a6cb55499c66ea772072e11
|
||||
timeCreated: 1513377063
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3232b12a3422d1a4d8ff3eaa000c43ae
|
||||
folderAsset: yes
|
||||
timeCreated: 1513377102
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,179 @@
|
||||
/* ---------------------------------------
|
||||
* 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 Tayx.Graphy.Graph;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Tayx.Graphy.Fps
|
||||
{
|
||||
public class G_FpsGraph : G_Graph
|
||||
{
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Update()
|
||||
{
|
||||
UpdateGraph();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
if (m_shaderGraph == null)
|
||||
// TODO: While Graphy is disabled (e.g. by default via Ctrl+H) and while in Editor after a Hot-Swap,
|
||||
// the OnApplicationFocus calls this while m_shaderGraph == null, throwing a NullReferenceException
|
||||
return;
|
||||
switch (m_graphyManager.GraphyMode)
|
||||
{
|
||||
case GraphyManager.Mode.FULL:
|
||||
m_shaderGraph.ArrayMaxSize = G_GraphShader.ArrayMaxSizeFull;
|
||||
m_shaderGraph.Image.material = new Material(ShaderFull);
|
||||
break;
|
||||
|
||||
case GraphyManager.Mode.LIGHT:
|
||||
m_shaderGraph.ArrayMaxSize = G_GraphShader.ArrayMaxSizeLight;
|
||||
m_shaderGraph.Image.material = new Material(ShaderLight);
|
||||
break;
|
||||
}
|
||||
|
||||
m_shaderGraph.InitializeShader();
|
||||
|
||||
m_resolution = m_graphyManager.FpsGraphResolution;
|
||||
|
||||
CreatePoints();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_fpsMonitor = GetComponent<G_FpsMonitor>();
|
||||
|
||||
m_shaderGraph = new G_GraphShader
|
||||
{
|
||||
Image = m_imageGraph
|
||||
};
|
||||
|
||||
UpdateParameters();
|
||||
|
||||
m_isInitialized = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private Image m_imageGraph;
|
||||
|
||||
[SerializeField] private Shader ShaderFull;
|
||||
[SerializeField] private Shader ShaderLight;
|
||||
|
||||
// This keeps track of whether Init() has run or not
|
||||
[SerializeField] private bool m_isInitialized;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_FpsMonitor m_fpsMonitor;
|
||||
|
||||
private int m_resolution = 150;
|
||||
|
||||
private G_GraphShader m_shaderGraph;
|
||||
|
||||
private int[] m_fpsArray;
|
||||
|
||||
private int m_highestFps;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Protected Override
|
||||
|
||||
protected override void UpdateGraph()
|
||||
{
|
||||
// Since we no longer initialize by default OnEnable(),
|
||||
// we need to check here, and Init() if needed
|
||||
if (!m_isInitialized) Init();
|
||||
|
||||
var fps = (short)(1 / Time.unscaledDeltaTime);
|
||||
|
||||
var currentMaxFps = 0;
|
||||
|
||||
for (var i = 0; i <= m_resolution - 1; i++)
|
||||
{
|
||||
if (i >= m_resolution - 1)
|
||||
m_fpsArray[i] = fps;
|
||||
else
|
||||
m_fpsArray[i] = m_fpsArray[i + 1];
|
||||
|
||||
// Store the highest fps to use as the highest point in the graph
|
||||
|
||||
if (currentMaxFps < m_fpsArray[i]) currentMaxFps = m_fpsArray[i];
|
||||
}
|
||||
|
||||
m_highestFps = m_highestFps < 1 || m_highestFps <= currentMaxFps ? currentMaxFps : m_highestFps - 1;
|
||||
|
||||
m_highestFps = m_highestFps > 0 ? m_highestFps : 1;
|
||||
|
||||
if (m_shaderGraph.ShaderArrayValues == null)
|
||||
{
|
||||
m_fpsArray = new int[m_resolution];
|
||||
m_shaderGraph.ShaderArrayValues = new float[m_resolution];
|
||||
}
|
||||
|
||||
for (var i = 0; i <= m_resolution - 1; i++)
|
||||
m_shaderGraph.ShaderArrayValues[i] = m_fpsArray[i] / (float)m_highestFps;
|
||||
|
||||
// Update the material values
|
||||
|
||||
m_shaderGraph.UpdatePoints();
|
||||
|
||||
m_shaderGraph.Average = m_fpsMonitor.AverageFPS / m_highestFps;
|
||||
m_shaderGraph.UpdateAverage();
|
||||
|
||||
m_shaderGraph.GoodThreshold = (float)m_graphyManager.GoodFPSThreshold / m_highestFps;
|
||||
m_shaderGraph.CautionThreshold = (float)m_graphyManager.CautionFPSThreshold / m_highestFps;
|
||||
m_shaderGraph.UpdateThresholds();
|
||||
}
|
||||
|
||||
protected override void CreatePoints()
|
||||
{
|
||||
if (m_shaderGraph.ShaderArrayValues == null || m_fpsArray.Length != m_resolution)
|
||||
{
|
||||
m_fpsArray = new int[m_resolution];
|
||||
m_shaderGraph.ShaderArrayValues = new float[m_resolution];
|
||||
}
|
||||
|
||||
for (var i = 0; i < m_resolution; i++) m_shaderGraph.ShaderArrayValues[i] = 0;
|
||||
|
||||
m_shaderGraph.GoodColor = m_graphyManager.GoodFPSColor;
|
||||
m_shaderGraph.CautionColor = m_graphyManager.CautionFPSColor;
|
||||
m_shaderGraph.CriticalColor = m_graphyManager.CriticalFPSColor;
|
||||
|
||||
m_shaderGraph.UpdateColors();
|
||||
|
||||
m_shaderGraph.UpdateArray();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e119c7747ac400478c7cfcaea03214e
|
||||
timeCreated: 1511794194
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,224 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 03-Jan-18
|
||||
* 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.Collections.Generic;
|
||||
using Tayx.Graphy.UI;
|
||||
using Tayx.Graphy.Utils;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Tayx.Graphy.Fps
|
||||
{
|
||||
public class G_FpsManager : MonoBehaviour, IMovable, IModifiableState
|
||||
{
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private GameObject m_fpsGraphGameObject;
|
||||
|
||||
[SerializeField] private List<GameObject> m_nonBasicTextGameObjects = new();
|
||||
|
||||
[SerializeField] private List<Image> m_backgroundImages = new();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_FpsGraph m_fpsGraph;
|
||||
private G_FpsMonitor m_fpsMonitor;
|
||||
private G_FpsText m_fpsText;
|
||||
|
||||
private RectTransform m_rectTransform;
|
||||
|
||||
private readonly List<GameObject> m_childrenGameObjects = new();
|
||||
|
||||
private GraphyManager.ModuleState m_previousModuleState = GraphyManager.ModuleState.FULL;
|
||||
private GraphyManager.ModuleState m_currentModuleState = GraphyManager.ModuleState.FULL;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
UpdateParameters();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public
|
||||
|
||||
public void SetPosition(GraphyManager.ModulePosition newModulePosition)
|
||||
{
|
||||
var xSideOffset = Mathf.Abs(m_rectTransform.anchoredPosition.x);
|
||||
var ySideOffset = Mathf.Abs(m_rectTransform.anchoredPosition.y);
|
||||
|
||||
switch (newModulePosition)
|
||||
{
|
||||
case GraphyManager.ModulePosition.TOP_LEFT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.up;
|
||||
m_rectTransform.anchorMin = Vector2.up;
|
||||
m_rectTransform.anchoredPosition = new Vector2(xSideOffset, -ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.TOP_RIGHT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.one;
|
||||
m_rectTransform.anchorMin = Vector2.one;
|
||||
m_rectTransform.anchoredPosition = new Vector2(-xSideOffset, -ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.BOTTOM_LEFT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.zero;
|
||||
m_rectTransform.anchorMin = Vector2.zero;
|
||||
m_rectTransform.anchoredPosition = new Vector2(xSideOffset, ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.BOTTOM_RIGHT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.right;
|
||||
m_rectTransform.anchorMin = Vector2.right;
|
||||
m_rectTransform.anchoredPosition = new Vector2(-xSideOffset, ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.FREE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetState(GraphyManager.ModuleState state, bool silentUpdate = false)
|
||||
{
|
||||
if (!silentUpdate) m_previousModuleState = m_currentModuleState;
|
||||
|
||||
m_currentModuleState = state;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case GraphyManager.ModuleState.FULL:
|
||||
gameObject.SetActive(true);
|
||||
m_childrenGameObjects.SetAllActive(true);
|
||||
SetGraphActive(true);
|
||||
|
||||
if (m_graphyManager.Background)
|
||||
m_backgroundImages.SetOneActive(0);
|
||||
else
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.TEXT:
|
||||
gameObject.SetActive(true);
|
||||
m_childrenGameObjects.SetAllActive(true);
|
||||
SetGraphActive(false);
|
||||
|
||||
if (m_graphyManager.Background)
|
||||
m_backgroundImages.SetOneActive(1);
|
||||
else
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.BASIC:
|
||||
gameObject.SetActive(true);
|
||||
m_childrenGameObjects.SetAllActive(true);
|
||||
m_nonBasicTextGameObjects.SetAllActive(false);
|
||||
SetGraphActive(false);
|
||||
|
||||
if (m_graphyManager.Background)
|
||||
m_backgroundImages.SetOneActive(2);
|
||||
else
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.BACKGROUND:
|
||||
gameObject.SetActive(true);
|
||||
m_childrenGameObjects.SetAllActive(false);
|
||||
SetGraphActive(false);
|
||||
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.OFF:
|
||||
gameObject.SetActive(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void RestorePreviousState()
|
||||
{
|
||||
SetState(m_previousModuleState);
|
||||
}
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
foreach (var image in m_backgroundImages) image.color = m_graphyManager.BackgroundColor;
|
||||
|
||||
m_fpsGraph.UpdateParameters();
|
||||
m_fpsMonitor.UpdateParameters();
|
||||
m_fpsText.UpdateParameters();
|
||||
|
||||
SetState(m_graphyManager.FpsModuleState);
|
||||
}
|
||||
|
||||
public void RefreshParameters()
|
||||
{
|
||||
foreach (var image in m_backgroundImages) image.color = m_graphyManager.BackgroundColor;
|
||||
|
||||
m_fpsGraph.UpdateParameters();
|
||||
m_fpsMonitor.UpdateParameters();
|
||||
m_fpsText.UpdateParameters();
|
||||
|
||||
SetState(m_currentModuleState, true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_rectTransform = GetComponent<RectTransform>();
|
||||
|
||||
m_fpsGraph = GetComponent<G_FpsGraph>();
|
||||
m_fpsMonitor = GetComponent<G_FpsMonitor>();
|
||||
m_fpsText = GetComponent<G_FpsText>();
|
||||
|
||||
foreach (Transform child in transform)
|
||||
if (child.parent == transform)
|
||||
m_childrenGameObjects.Add(child.gameObject);
|
||||
}
|
||||
|
||||
private void SetGraphActive(bool active)
|
||||
{
|
||||
m_fpsGraph.enabled = active;
|
||||
m_fpsGraphGameObject.SetActive(active);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 221dc0b3655ddb749ace6bad55f0159f
|
||||
timeCreated: 1514998359
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,139 @@
|
||||
/* ---------------------------------------
|
||||
* 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 UnityEngine;
|
||||
|
||||
namespace Tayx.Graphy.Fps
|
||||
{
|
||||
public class G_FpsMonitor : MonoBehaviour
|
||||
{
|
||||
#region Methods -> Public
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
m_onePercentSamples = (short)(m_fpsSamplesCapacity / 100);
|
||||
m_zero1PercentSamples = (short)(m_fpsSamplesCapacity / 1000);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
m_fpsSamples = new short[m_fpsSamplesCapacity];
|
||||
m_fpsSamplesSorted = new short[m_fpsSamplesCapacity];
|
||||
|
||||
UpdateParameters();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private short[] m_fpsSamples;
|
||||
private short[] m_fpsSamplesSorted;
|
||||
private readonly short m_fpsSamplesCapacity = 1024;
|
||||
private short m_onePercentSamples = 10;
|
||||
private short m_zero1PercentSamples = 1;
|
||||
private short m_fpsSamplesCount;
|
||||
private short m_indexSample;
|
||||
|
||||
private float m_unscaledDeltaTime;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties -> Public
|
||||
|
||||
public short CurrentFPS { get; private set; }
|
||||
public short AverageFPS { get; private set; }
|
||||
public short OnePercentFPS { get; private set; }
|
||||
public short Zero1PercentFps { get; private set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
m_unscaledDeltaTime = Time.unscaledDeltaTime;
|
||||
|
||||
// Update fps and ms
|
||||
|
||||
CurrentFPS = (short)Mathf.RoundToInt(1f / m_unscaledDeltaTime);
|
||||
|
||||
// Update avg fps
|
||||
|
||||
uint averageAddedFps = 0;
|
||||
|
||||
m_indexSample++;
|
||||
|
||||
if (m_indexSample >= m_fpsSamplesCapacity) m_indexSample = 0;
|
||||
|
||||
m_fpsSamples[m_indexSample] = CurrentFPS;
|
||||
|
||||
if (m_fpsSamplesCount < m_fpsSamplesCapacity) m_fpsSamplesCount++;
|
||||
|
||||
for (var i = 0; i < m_fpsSamplesCount; i++) averageAddedFps += (uint)m_fpsSamples[i];
|
||||
|
||||
AverageFPS = (short)(averageAddedFps / (float)m_fpsSamplesCount);
|
||||
|
||||
// Update percent lows
|
||||
|
||||
m_fpsSamples.CopyTo(m_fpsSamplesSorted, 0);
|
||||
|
||||
/*
|
||||
* TODO: Find a faster way to do this.
|
||||
* We can probably avoid copying the full array every time
|
||||
* and insert the new item already sorted in the list.
|
||||
*/
|
||||
Array.Sort(m_fpsSamplesSorted, (x, y) => x.CompareTo(y)); // The lambda expression avoids garbage generation
|
||||
|
||||
var zero1PercentCalculated = false;
|
||||
|
||||
uint totalAddedFps = 0;
|
||||
|
||||
var samplesToIterateThroughForOnePercent = m_fpsSamplesCount < m_onePercentSamples
|
||||
? m_fpsSamplesCount
|
||||
: m_onePercentSamples;
|
||||
|
||||
var samplesToIterateThroughForZero1Percent = m_fpsSamplesCount < m_zero1PercentSamples
|
||||
? m_fpsSamplesCount
|
||||
: m_zero1PercentSamples;
|
||||
|
||||
var sampleToStartIn = (short)(m_fpsSamplesCapacity - m_fpsSamplesCount);
|
||||
|
||||
for (var i = sampleToStartIn; i < sampleToStartIn + samplesToIterateThroughForOnePercent; i++)
|
||||
{
|
||||
totalAddedFps += (ushort)m_fpsSamplesSorted[i];
|
||||
|
||||
if (!zero1PercentCalculated && i >= samplesToIterateThroughForZero1Percent - 1)
|
||||
{
|
||||
zero1PercentCalculated = true;
|
||||
|
||||
Zero1PercentFps = (short)(totalAddedFps / (float)m_zero1PercentSamples);
|
||||
}
|
||||
}
|
||||
|
||||
OnePercentFPS = (short)(totalAddedFps / (float)m_onePercentSamples);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b205584e495e4634aa3a332a78102a19
|
||||
timeCreated: 1513376950
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,146 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 22-Nov-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 Tayx.Graphy.Utils.NumString;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Tayx.Graphy.Fps
|
||||
{
|
||||
public class G_FpsText : MonoBehaviour
|
||||
{
|
||||
#region Methods -> Public
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
m_updateRate = m_graphyManager.FpsTextUpdateRate;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private Text m_fpsText;
|
||||
[SerializeField] private Text m_msText;
|
||||
|
||||
[SerializeField] private Text m_avgFpsText;
|
||||
[SerializeField] private Text m_onePercentFpsText;
|
||||
[SerializeField] private Text m_zero1PercentFpsText;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_FpsMonitor m_fpsMonitor;
|
||||
|
||||
private int m_updateRate = 4; // 4 updates per sec.
|
||||
|
||||
private int m_frameCount;
|
||||
|
||||
private float m_deltaTime;
|
||||
|
||||
private float m_fps;
|
||||
|
||||
private float m_ms;
|
||||
|
||||
private const string m_msStringFormat = "0.0";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
m_deltaTime += Time.unscaledDeltaTime;
|
||||
|
||||
m_frameCount++;
|
||||
|
||||
// Only update texts 'm_updateRate' times per second
|
||||
|
||||
if (m_deltaTime > 1f / m_updateRate)
|
||||
{
|
||||
m_fps = m_frameCount / m_deltaTime;
|
||||
m_ms = m_deltaTime / m_frameCount * 1000f;
|
||||
|
||||
// Update fps
|
||||
m_fpsText.text = Mathf.RoundToInt(m_fps).ToStringNonAlloc();
|
||||
SetFpsRelatedTextColor(m_fpsText, m_fps);
|
||||
|
||||
// Update ms
|
||||
m_msText.text = m_ms.ToStringNonAlloc(m_msStringFormat);
|
||||
SetFpsRelatedTextColor(m_msText, m_fps);
|
||||
|
||||
// Update 1% fps
|
||||
m_onePercentFpsText.text = ((int)m_fpsMonitor.OnePercentFPS).ToStringNonAlloc();
|
||||
SetFpsRelatedTextColor(m_onePercentFpsText, m_fpsMonitor.OnePercentFPS);
|
||||
|
||||
// Update 0.1% fps
|
||||
m_zero1PercentFpsText.text = ((int)m_fpsMonitor.Zero1PercentFps).ToStringNonAlloc();
|
||||
SetFpsRelatedTextColor(m_zero1PercentFpsText, m_fpsMonitor.Zero1PercentFps);
|
||||
|
||||
// Update avg fps
|
||||
m_avgFpsText.text = ((int)m_fpsMonitor.AverageFPS).ToStringNonAlloc();
|
||||
SetFpsRelatedTextColor(m_avgFpsText, m_fpsMonitor.AverageFPS);
|
||||
|
||||
// Reset variables
|
||||
m_deltaTime = 0f;
|
||||
m_frameCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
/// <summary>
|
||||
/// Assigns color to a text according to their fps numeric value and
|
||||
/// the colors specified in the 3 categories (Good, Caution, Critical).
|
||||
/// </summary>
|
||||
/// <param name="text">
|
||||
/// UI Text component to change its color
|
||||
/// </param>
|
||||
/// <param name="fps">
|
||||
/// Numeric fps value
|
||||
/// </param>
|
||||
private void SetFpsRelatedTextColor(Text text, float fps)
|
||||
{
|
||||
if (fps > m_graphyManager.GoodFPSThreshold)
|
||||
text.color = m_graphyManager.GoodFPSColor;
|
||||
else if (fps > m_graphyManager.CautionFPSThreshold)
|
||||
text.color = m_graphyManager.CautionFPSColor;
|
||||
else
|
||||
text.color = m_graphyManager.CriticalFPSColor;
|
||||
}
|
||||
|
||||
private void Init()
|
||||
{
|
||||
G_IntString.Init(0, 2000); // Max fps expected
|
||||
G_FloatString.Init(0, 100); // Max ms expected per frame
|
||||
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_fpsMonitor = GetComponent<G_FpsMonitor>();
|
||||
|
||||
UpdateParameters();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f74bbf307d92b0d4e81ae60b9eb1e42f
|
||||
timeCreated: 1511555604
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aca40e3cb2846db40ad6d970f36d4a7f
|
||||
folderAsset: yes
|
||||
timeCreated: 1516716444
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,34 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 23-Jan-18
|
||||
* 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 UnityEngine;
|
||||
|
||||
namespace Tayx.Graphy.Graph
|
||||
{
|
||||
public abstract class G_Graph : MonoBehaviour
|
||||
{
|
||||
#region Methods -> Protected
|
||||
|
||||
/// <summary>
|
||||
/// Updates the graph/s.
|
||||
/// </summary>
|
||||
protected abstract void UpdateGraph();
|
||||
|
||||
/// <summary>
|
||||
/// Creates the points for the graph/s.
|
||||
/// </summary>
|
||||
protected abstract void CreatePoints();
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 67969a520b115cd47a7d955c9b2abfa6
|
||||
timeCreated: 1516716468
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,542 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 23-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 System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Tayx.Graphy.Audio;
|
||||
using Tayx.Graphy.Fps;
|
||||
using Tayx.Graphy.Ram;
|
||||
using Tayx.Graphy.Utils;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace Tayx.Graphy
|
||||
{
|
||||
/// <summary>
|
||||
/// Main class to access the Graphy Debugger API.
|
||||
/// </summary>
|
||||
public class GraphyDebugger : G_Singleton<GraphyDebugger>
|
||||
{
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private List<DebugPacket> m_debugPackets = new();
|
||||
|
||||
#endregion
|
||||
|
||||
/* ----- TODO: ----------------------------
|
||||
* Add summaries to the variables.
|
||||
* Add summaries to the functions.
|
||||
* Ask why we're not using System.Serializable instead for the helper class.
|
||||
* Simplify the initializers of the DebugPackets, but check wether we should as some wont work with certain lists.
|
||||
* --------------------------------------*/
|
||||
|
||||
protected GraphyDebugger()
|
||||
{
|
||||
}
|
||||
|
||||
#region Structs -> Public
|
||||
|
||||
[Serializable]
|
||||
public struct DebugCondition
|
||||
{
|
||||
[Tooltip("Variable to compare against")]
|
||||
public DebugVariable Variable;
|
||||
|
||||
[Tooltip("Comparer operator to use")] public DebugComparer Comparer;
|
||||
|
||||
[Tooltip("Value to compare against the chosen variable")]
|
||||
public float Value;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Helper Classes
|
||||
|
||||
[Serializable]
|
||||
public class DebugPacket
|
||||
{
|
||||
[Tooltip("If false, it won't be checked")]
|
||||
public bool Active = true;
|
||||
|
||||
[Tooltip("Optional Id. It's used to get or remove DebugPackets in runtime")]
|
||||
public int Id;
|
||||
|
||||
[Tooltip("If true, once the actions are executed, this DebugPacket will delete itself")]
|
||||
public bool ExecuteOnce = true;
|
||||
|
||||
[Tooltip(
|
||||
"Time to wait before checking if conditions are met (use this to avoid low fps drops triggering the conditions when loading the game)")]
|
||||
public float InitSleepTime = 2;
|
||||
|
||||
[Tooltip(
|
||||
"Time to wait before checking if conditions are met again (once they have already been met and if ExecuteOnce is false)")]
|
||||
public float ExecuteSleepTime = 2;
|
||||
|
||||
public ConditionEvaluation ConditionEvaluation = ConditionEvaluation.All_conditions_must_be_met;
|
||||
|
||||
[Tooltip("List of conditions that will be checked each frame")]
|
||||
public List<DebugCondition> DebugConditions = new();
|
||||
|
||||
// Actions on conditions met
|
||||
|
||||
public MessageType MessageType;
|
||||
|
||||
[Multiline] public string Message = string.Empty;
|
||||
|
||||
public bool TakeScreenshot;
|
||||
public string ScreenshotFileName = "Graphy_Screenshot";
|
||||
|
||||
[Tooltip("If true, it pauses the editor")]
|
||||
public bool DebugBreak;
|
||||
|
||||
public UnityEvent UnityEvents;
|
||||
public List<Action> Callbacks = new();
|
||||
|
||||
|
||||
private bool executed;
|
||||
|
||||
private float timePassed;
|
||||
|
||||
public bool Check { get; private set; }
|
||||
|
||||
public void Update()
|
||||
{
|
||||
if (!Check)
|
||||
{
|
||||
timePassed += Time.deltaTime;
|
||||
|
||||
if ((executed && timePassed >= ExecuteSleepTime)
|
||||
|| (!executed && timePassed >= InitSleepTime))
|
||||
{
|
||||
Check = true;
|
||||
|
||||
timePassed = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Executed()
|
||||
{
|
||||
Check = false;
|
||||
executed = true;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Enums -> Public
|
||||
|
||||
public enum DebugVariable
|
||||
{
|
||||
Fps,
|
||||
Fps_Min,
|
||||
Fps_Max,
|
||||
Fps_Avg,
|
||||
Ram_Allocated,
|
||||
Ram_Reserved,
|
||||
Ram_Mono,
|
||||
Audio_DB
|
||||
}
|
||||
|
||||
public enum DebugComparer
|
||||
{
|
||||
Less_than,
|
||||
Equals_or_less_than,
|
||||
Equals,
|
||||
Equals_or_greater_than,
|
||||
Greater_than
|
||||
}
|
||||
|
||||
public enum ConditionEvaluation
|
||||
{
|
||||
All_conditions_must_be_met,
|
||||
Only_one_condition_has_to_be_met
|
||||
}
|
||||
|
||||
public enum MessageType
|
||||
{
|
||||
Log,
|
||||
Warning,
|
||||
Error
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private G_FpsMonitor m_fpsMonitor;
|
||||
private G_RamMonitor m_ramMonitor;
|
||||
private G_AudioMonitor m_audioMonitor;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Start()
|
||||
{
|
||||
m_fpsMonitor = GetComponentInChildren<G_FpsMonitor>();
|
||||
m_ramMonitor = GetComponentInChildren<G_RamMonitor>();
|
||||
m_audioMonitor = GetComponentInChildren<G_AudioMonitor>();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
CheckDebugPackets();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Add a new DebugPacket.
|
||||
/// </summary>
|
||||
public void AddNewDebugPacket(DebugPacket newDebugPacket)
|
||||
{
|
||||
m_debugPackets?.Add(newDebugPacket);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add a new DebugPacket.
|
||||
/// </summary>
|
||||
public void AddNewDebugPacket
|
||||
(
|
||||
int newId,
|
||||
DebugCondition newDebugCondition,
|
||||
MessageType newMessageType,
|
||||
string newMessage,
|
||||
bool newDebugBreak,
|
||||
Action newCallback
|
||||
)
|
||||
{
|
||||
var newDebugPacket = new DebugPacket();
|
||||
|
||||
newDebugPacket.Id = newId;
|
||||
newDebugPacket.DebugConditions.Add(newDebugCondition);
|
||||
newDebugPacket.MessageType = newMessageType;
|
||||
newDebugPacket.Message = newMessage;
|
||||
newDebugPacket.DebugBreak = newDebugBreak;
|
||||
newDebugPacket.Callbacks.Add(newCallback);
|
||||
|
||||
AddNewDebugPacket(newDebugPacket);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add a new DebugPacket.
|
||||
/// </summary>
|
||||
public void AddNewDebugPacket
|
||||
(
|
||||
int newId,
|
||||
List<DebugCondition> newDebugConditions,
|
||||
MessageType newMessageType,
|
||||
string newMessage,
|
||||
bool newDebugBreak,
|
||||
Action newCallback
|
||||
)
|
||||
{
|
||||
var newDebugPacket = new DebugPacket();
|
||||
|
||||
newDebugPacket.Id = newId;
|
||||
newDebugPacket.DebugConditions = newDebugConditions;
|
||||
newDebugPacket.MessageType = newMessageType;
|
||||
newDebugPacket.Message = newMessage;
|
||||
newDebugPacket.DebugBreak = newDebugBreak;
|
||||
newDebugPacket.Callbacks.Add(newCallback);
|
||||
|
||||
AddNewDebugPacket(newDebugPacket);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add a new DebugPacket.
|
||||
/// </summary>
|
||||
public void AddNewDebugPacket
|
||||
(
|
||||
int newId,
|
||||
DebugCondition newDebugCondition,
|
||||
MessageType newMessageType,
|
||||
string newMessage,
|
||||
bool newDebugBreak,
|
||||
List<Action> newCallbacks
|
||||
)
|
||||
{
|
||||
var newDebugPacket = new DebugPacket();
|
||||
|
||||
newDebugPacket.Id = newId;
|
||||
newDebugPacket.DebugConditions.Add(newDebugCondition);
|
||||
newDebugPacket.MessageType = newMessageType;
|
||||
newDebugPacket.Message = newMessage;
|
||||
newDebugPacket.DebugBreak = newDebugBreak;
|
||||
newDebugPacket.Callbacks = newCallbacks;
|
||||
|
||||
AddNewDebugPacket(newDebugPacket);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add a new DebugPacket.
|
||||
/// </summary>
|
||||
public void AddNewDebugPacket
|
||||
(
|
||||
int newId,
|
||||
List<DebugCondition> newDebugConditions,
|
||||
MessageType newMessageType,
|
||||
string newMessage,
|
||||
bool newDebugBreak,
|
||||
List<Action> newCallbacks
|
||||
)
|
||||
{
|
||||
var newDebugPacket = new DebugPacket();
|
||||
|
||||
newDebugPacket.Id = newId;
|
||||
newDebugPacket.DebugConditions = newDebugConditions;
|
||||
newDebugPacket.MessageType = newMessageType;
|
||||
newDebugPacket.Message = newMessage;
|
||||
newDebugPacket.DebugBreak = newDebugBreak;
|
||||
newDebugPacket.Callbacks = newCallbacks;
|
||||
|
||||
AddNewDebugPacket(newDebugPacket);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the first Packet with the specified ID in the DebugPacket list.
|
||||
/// </summary>
|
||||
/// <param name="packetId"></param>
|
||||
/// <returns></returns>
|
||||
public DebugPacket GetFirstDebugPacketWithId(int packetId)
|
||||
{
|
||||
return m_debugPackets.First(x => x.Id == packetId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list with all the Packets with the specified ID in the DebugPacket list.
|
||||
/// </summary>
|
||||
/// <param name="packetId"></param>
|
||||
/// <returns></returns>
|
||||
public List<DebugPacket> GetAllDebugPacketsWithId(int packetId)
|
||||
{
|
||||
return m_debugPackets.FindAll(x => x.Id == packetId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes the first Packet with the specified ID in the DebugPacket list.
|
||||
/// </summary>
|
||||
/// <param name="packetId"></param>
|
||||
/// <returns></returns>
|
||||
public void RemoveFirstDebugPacketWithId(int packetId)
|
||||
{
|
||||
if (m_debugPackets != null && GetFirstDebugPacketWithId(packetId) != null)
|
||||
m_debugPackets.Remove(GetFirstDebugPacketWithId(packetId));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes all the Packets with the specified ID in the DebugPacket list.
|
||||
/// </summary>
|
||||
/// <param name="packetId"></param>
|
||||
/// <returns></returns>
|
||||
public void RemoveAllDebugPacketsWithId(int packetId)
|
||||
{
|
||||
if (m_debugPackets != null) m_debugPackets.RemoveAll(x => x.Id == packetId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add an Action callback to the first Packet with the specified ID in the DebugPacket list.
|
||||
/// </summary>
|
||||
/// <param name="callback"></param>
|
||||
/// <param name="id"></param>
|
||||
public void AddCallbackToFirstDebugPacketWithId(Action callback, int id)
|
||||
{
|
||||
if (GetFirstDebugPacketWithId(id) != null) GetFirstDebugPacketWithId(id).Callbacks.Add(callback);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add an Action callback to all the Packets with the specified ID in the DebugPacket list.
|
||||
/// </summary>
|
||||
/// <param name="callback"></param>
|
||||
/// <param name="id"></param>
|
||||
public void AddCallbackToAllDebugPacketWithId(Action callback, int id)
|
||||
{
|
||||
if (GetAllDebugPacketsWithId(id) != null)
|
||||
foreach (var debugPacket in GetAllDebugPacketsWithId(id))
|
||||
if (callback != null)
|
||||
debugPacket.Callbacks.Add(callback);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
/// <summary>
|
||||
/// Checks all the Debug Packets to see if they have to be executed.
|
||||
/// </summary>
|
||||
private void CheckDebugPackets()
|
||||
{
|
||||
if (m_debugPackets == null) return;
|
||||
|
||||
for (var i = 0; i < m_debugPackets.Count; i++)
|
||||
{
|
||||
var packet = m_debugPackets[i];
|
||||
|
||||
if (packet != null && packet.Active)
|
||||
{
|
||||
packet.Update();
|
||||
|
||||
if (packet.Check)
|
||||
switch (packet.ConditionEvaluation)
|
||||
{
|
||||
case ConditionEvaluation.All_conditions_must_be_met:
|
||||
var count = 0;
|
||||
|
||||
foreach (var packetDebugCondition in packet.DebugConditions)
|
||||
if (CheckIfConditionIsMet(packetDebugCondition))
|
||||
count++;
|
||||
|
||||
if (count >= packet.DebugConditions.Count)
|
||||
{
|
||||
ExecuteOperationsInDebugPacket(packet);
|
||||
|
||||
if (packet.ExecuteOnce) m_debugPackets[i] = null;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case ConditionEvaluation.Only_one_condition_has_to_be_met:
|
||||
foreach (var packetDebugCondition in packet.DebugConditions)
|
||||
if (CheckIfConditionIsMet(packetDebugCondition))
|
||||
{
|
||||
ExecuteOperationsInDebugPacket(packet);
|
||||
|
||||
if (packet.ExecuteOnce) m_debugPackets[i] = null;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_debugPackets.RemoveAll(packet => packet == null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if a condition is met.
|
||||
/// </summary>
|
||||
/// <param name="debugCondition"></param>
|
||||
/// <returns></returns>
|
||||
private bool CheckIfConditionIsMet(DebugCondition debugCondition)
|
||||
{
|
||||
switch (debugCondition.Comparer)
|
||||
{
|
||||
case DebugComparer.Less_than:
|
||||
return GetRequestedValueFromDebugVariable(debugCondition.Variable) < debugCondition.Value;
|
||||
case DebugComparer.Equals_or_less_than:
|
||||
return GetRequestedValueFromDebugVariable(debugCondition.Variable) <= debugCondition.Value;
|
||||
case DebugComparer.Equals:
|
||||
return Mathf.Approximately(GetRequestedValueFromDebugVariable(debugCondition.Variable),
|
||||
debugCondition.Value);
|
||||
case DebugComparer.Equals_or_greater_than:
|
||||
return GetRequestedValueFromDebugVariable(debugCondition.Variable) >= debugCondition.Value;
|
||||
case DebugComparer.Greater_than:
|
||||
return GetRequestedValueFromDebugVariable(debugCondition.Variable) > debugCondition.Value;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Obtains the requested value from the specified variable.
|
||||
/// </summary>
|
||||
/// <param name="debugVariable"></param>
|
||||
/// <returns></returns>
|
||||
private float GetRequestedValueFromDebugVariable(DebugVariable debugVariable)
|
||||
{
|
||||
switch (debugVariable)
|
||||
{
|
||||
case DebugVariable.Fps:
|
||||
return m_fpsMonitor != null ? m_fpsMonitor.CurrentFPS : 0;
|
||||
case DebugVariable.Fps_Min:
|
||||
return m_fpsMonitor != null ? m_fpsMonitor.OnePercentFPS : 0;
|
||||
case DebugVariable.Fps_Max:
|
||||
return m_fpsMonitor != null ? m_fpsMonitor.Zero1PercentFps : 0;
|
||||
case DebugVariable.Fps_Avg:
|
||||
return m_fpsMonitor != null ? m_fpsMonitor.AverageFPS : 0;
|
||||
|
||||
case DebugVariable.Ram_Allocated:
|
||||
return m_ramMonitor != null ? m_ramMonitor.AllocatedRam : 0;
|
||||
case DebugVariable.Ram_Reserved:
|
||||
return m_ramMonitor != null ? m_ramMonitor.AllocatedRam : 0;
|
||||
case DebugVariable.Ram_Mono:
|
||||
return m_ramMonitor != null ? m_ramMonitor.AllocatedRam : 0;
|
||||
|
||||
case DebugVariable.Audio_DB:
|
||||
return m_audioMonitor != null ? m_audioMonitor.MaxDB : 0;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Executes the operations in the DebugPacket specified.
|
||||
/// </summary>
|
||||
/// <param name="debugPacket"></param>
|
||||
private void ExecuteOperationsInDebugPacket(DebugPacket debugPacket)
|
||||
{
|
||||
if (debugPacket != null)
|
||||
{
|
||||
if (debugPacket.DebugBreak) Debug.Break();
|
||||
|
||||
if (debugPacket.Message != "")
|
||||
{
|
||||
var message = "[Graphy] (" + DateTime.Now + "): " + debugPacket.Message;
|
||||
|
||||
switch (debugPacket.MessageType)
|
||||
{
|
||||
case MessageType.Log:
|
||||
Debug.Log(message);
|
||||
break;
|
||||
case MessageType.Warning:
|
||||
Debug.LogWarning(message);
|
||||
break;
|
||||
case MessageType.Error:
|
||||
Debug.LogError(message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (debugPacket.TakeScreenshot)
|
||||
{
|
||||
var path = debugPacket.ScreenshotFileName + "_" + DateTime.Now + ".png";
|
||||
path = path.Replace("/", "-").Replace(" ", "_").Replace(":", "-");
|
||||
|
||||
#if UNITY_2017_1_OR_NEWER
|
||||
ScreenCapture.CaptureScreenshot(path);
|
||||
#else
|
||||
Application.CaptureScreenshot(path);
|
||||
#endif
|
||||
}
|
||||
|
||||
debugPacket.UnityEvents.Invoke();
|
||||
|
||||
foreach (var callback in debugPacket.Callbacks)
|
||||
if (callback != null)
|
||||
callback();
|
||||
|
||||
debugPacket.Executed();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb8428f1f208dcc49b6c04976d44cbc9
|
||||
timeCreated: 1514034949
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c80e6d63202cef44ca3ffdaccec693be
|
||||
timeCreated: 1512508924
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 839df5cf44c5c6f43b1a846e73f3e498
|
||||
folderAsset: yes
|
||||
timeCreated: 1513377097
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,262 @@
|
||||
/* ---------------------------------------
|
||||
* 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 Tayx.Graphy.Graph;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
#if UNITY_5_5_OR_NEWER
|
||||
#endif
|
||||
|
||||
namespace Tayx.Graphy.Ram
|
||||
{
|
||||
public class G_RamGraph : G_Graph
|
||||
{
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Update()
|
||||
{
|
||||
UpdateGraph();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
if (m_shaderGraphAllocated == null
|
||||
|| m_shaderGraphReserved == null
|
||||
|| m_shaderGraphMono == null)
|
||||
/*
|
||||
* Note: this is fine, since we don't much
|
||||
* care what granularity we use if the graph
|
||||
* has not been initialized, i.e. it's disabled.
|
||||
* There is no chance that for some reason
|
||||
* parameters will not stay up to date if
|
||||
* at some point in the future the graph is enabled:
|
||||
* at the end of Init(), UpdateParameters() is
|
||||
* called again.
|
||||
*/
|
||||
return;
|
||||
|
||||
switch (m_graphyManager.GraphyMode)
|
||||
{
|
||||
case GraphyManager.Mode.FULL:
|
||||
m_shaderGraphAllocated.ArrayMaxSize = G_GraphShader.ArrayMaxSizeFull;
|
||||
m_shaderGraphReserved.ArrayMaxSize = G_GraphShader.ArrayMaxSizeFull;
|
||||
m_shaderGraphMono.ArrayMaxSize = G_GraphShader.ArrayMaxSizeFull;
|
||||
|
||||
m_shaderGraphAllocated.Image.material = new Material(ShaderFull);
|
||||
m_shaderGraphReserved.Image.material = new Material(ShaderFull);
|
||||
m_shaderGraphMono.Image.material = new Material(ShaderFull);
|
||||
break;
|
||||
|
||||
case GraphyManager.Mode.LIGHT:
|
||||
m_shaderGraphAllocated.ArrayMaxSize = G_GraphShader.ArrayMaxSizeLight;
|
||||
m_shaderGraphReserved.ArrayMaxSize = G_GraphShader.ArrayMaxSizeLight;
|
||||
m_shaderGraphMono.ArrayMaxSize = G_GraphShader.ArrayMaxSizeLight;
|
||||
|
||||
m_shaderGraphAllocated.Image.material = new Material(ShaderLight);
|
||||
m_shaderGraphReserved.Image.material = new Material(ShaderLight);
|
||||
m_shaderGraphMono.Image.material = new Material(ShaderLight);
|
||||
break;
|
||||
}
|
||||
|
||||
m_shaderGraphAllocated.InitializeShader();
|
||||
m_shaderGraphReserved.InitializeShader();
|
||||
m_shaderGraphMono.InitializeShader();
|
||||
|
||||
m_resolution = m_graphyManager.RamGraphResolution;
|
||||
|
||||
CreatePoints();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_ramMonitor = GetComponent<G_RamMonitor>();
|
||||
|
||||
m_shaderGraphAllocated = new G_GraphShader();
|
||||
m_shaderGraphReserved = new G_GraphShader();
|
||||
m_shaderGraphMono = new G_GraphShader();
|
||||
|
||||
m_shaderGraphAllocated.Image = m_imageAllocated;
|
||||
m_shaderGraphReserved.Image = m_imageReserved;
|
||||
m_shaderGraphMono.Image = m_imageMono;
|
||||
|
||||
UpdateParameters();
|
||||
|
||||
m_isInitialized = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private Image m_imageAllocated;
|
||||
[SerializeField] private Image m_imageReserved;
|
||||
[SerializeField] private Image m_imageMono;
|
||||
|
||||
[SerializeField] private Shader ShaderFull;
|
||||
[SerializeField] private Shader ShaderLight;
|
||||
|
||||
[SerializeField] private bool m_isInitialized;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_RamMonitor m_ramMonitor;
|
||||
|
||||
private int m_resolution = 150;
|
||||
|
||||
private G_GraphShader m_shaderGraphAllocated;
|
||||
private G_GraphShader m_shaderGraphReserved;
|
||||
private G_GraphShader m_shaderGraphMono;
|
||||
|
||||
private float[] m_allocatedArray;
|
||||
private float[] m_reservedArray;
|
||||
private float[] m_monoArray;
|
||||
|
||||
private float m_highestMemory;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Protected Override
|
||||
|
||||
protected override void UpdateGraph()
|
||||
{
|
||||
// Since we no longer initialize by default OnEnable(),
|
||||
// we need to check here, and Init() if needed
|
||||
if (!m_isInitialized) Init();
|
||||
|
||||
var allocatedMemory = m_ramMonitor.AllocatedRam;
|
||||
var reservedMemory = m_ramMonitor.ReservedRam;
|
||||
var monoMemory = m_ramMonitor.MonoRam;
|
||||
|
||||
m_highestMemory = 0;
|
||||
|
||||
for (var i = 0; i <= m_resolution - 1; i++)
|
||||
{
|
||||
if (i >= m_resolution - 1)
|
||||
{
|
||||
m_allocatedArray[i] = allocatedMemory;
|
||||
m_reservedArray[i] = reservedMemory;
|
||||
m_monoArray[i] = monoMemory;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_allocatedArray[i] = m_allocatedArray[i + 1];
|
||||
m_reservedArray[i] = m_reservedArray[i + 1];
|
||||
m_monoArray[i] = m_monoArray[i + 1];
|
||||
}
|
||||
|
||||
if (m_highestMemory < m_reservedArray[i]) m_highestMemory = m_reservedArray[i];
|
||||
}
|
||||
|
||||
for (var i = 0; i <= m_resolution - 1; i++)
|
||||
{
|
||||
m_shaderGraphAllocated.ShaderArrayValues[i] = m_allocatedArray[i] / m_highestMemory;
|
||||
|
||||
m_shaderGraphReserved.ShaderArrayValues[i] = m_reservedArray[i] / m_highestMemory;
|
||||
|
||||
m_shaderGraphMono.ShaderArrayValues[i] = m_monoArray[i] / m_highestMemory;
|
||||
}
|
||||
|
||||
m_shaderGraphAllocated.UpdatePoints();
|
||||
m_shaderGraphReserved.UpdatePoints();
|
||||
m_shaderGraphMono.UpdatePoints();
|
||||
}
|
||||
|
||||
protected override void CreatePoints()
|
||||
{
|
||||
if (m_shaderGraphAllocated.ShaderArrayValues == null ||
|
||||
m_shaderGraphAllocated.ShaderArrayValues.Length != m_resolution)
|
||||
{
|
||||
m_allocatedArray = new float[m_resolution];
|
||||
m_reservedArray = new float[m_resolution];
|
||||
m_monoArray = new float[m_resolution];
|
||||
|
||||
m_shaderGraphAllocated.ShaderArrayValues = new float[m_resolution];
|
||||
m_shaderGraphReserved.ShaderArrayValues = new float[m_resolution];
|
||||
m_shaderGraphMono.ShaderArrayValues = new float[m_resolution];
|
||||
}
|
||||
|
||||
for (var i = 0; i < m_resolution; i++)
|
||||
{
|
||||
m_shaderGraphAllocated.ShaderArrayValues[i] = 0;
|
||||
m_shaderGraphReserved.ShaderArrayValues[i] = 0;
|
||||
m_shaderGraphMono.ShaderArrayValues[i] = 0;
|
||||
}
|
||||
|
||||
// Initialize the material values
|
||||
|
||||
// Colors
|
||||
|
||||
m_shaderGraphAllocated.GoodColor = m_graphyManager.AllocatedRamColor;
|
||||
m_shaderGraphAllocated.CautionColor = m_graphyManager.AllocatedRamColor;
|
||||
m_shaderGraphAllocated.CriticalColor = m_graphyManager.AllocatedRamColor;
|
||||
|
||||
m_shaderGraphAllocated.UpdateColors();
|
||||
|
||||
m_shaderGraphReserved.GoodColor = m_graphyManager.ReservedRamColor;
|
||||
m_shaderGraphReserved.CautionColor = m_graphyManager.ReservedRamColor;
|
||||
m_shaderGraphReserved.CriticalColor = m_graphyManager.ReservedRamColor;
|
||||
|
||||
m_shaderGraphReserved.UpdateColors();
|
||||
|
||||
m_shaderGraphMono.GoodColor = m_graphyManager.MonoRamColor;
|
||||
m_shaderGraphMono.CautionColor = m_graphyManager.MonoRamColor;
|
||||
m_shaderGraphMono.CriticalColor = m_graphyManager.MonoRamColor;
|
||||
|
||||
m_shaderGraphMono.UpdateColors();
|
||||
|
||||
// Thresholds
|
||||
|
||||
m_shaderGraphAllocated.GoodThreshold = 0;
|
||||
m_shaderGraphAllocated.CautionThreshold = 0;
|
||||
m_shaderGraphAllocated.UpdateThresholds();
|
||||
|
||||
m_shaderGraphReserved.GoodThreshold = 0;
|
||||
m_shaderGraphReserved.CautionThreshold = 0;
|
||||
m_shaderGraphReserved.UpdateThresholds();
|
||||
|
||||
m_shaderGraphMono.GoodThreshold = 0;
|
||||
m_shaderGraphMono.CautionThreshold = 0;
|
||||
m_shaderGraphMono.UpdateThresholds();
|
||||
|
||||
m_shaderGraphAllocated.UpdateArray();
|
||||
m_shaderGraphReserved.UpdateArray();
|
||||
m_shaderGraphMono.UpdateArray();
|
||||
|
||||
// Average
|
||||
|
||||
m_shaderGraphAllocated.Average = 0;
|
||||
m_shaderGraphReserved.Average = 0;
|
||||
m_shaderGraphMono.Average = 0;
|
||||
|
||||
m_shaderGraphAllocated.UpdateAverage();
|
||||
m_shaderGraphReserved.UpdateAverage();
|
||||
m_shaderGraphMono.UpdateAverage();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a9c49f1e95f2dab428b3a0ed56328a1c
|
||||
timeCreated: 1512484813
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,216 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 03-Jan-18
|
||||
* 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.Collections.Generic;
|
||||
using Tayx.Graphy.UI;
|
||||
using Tayx.Graphy.Utils;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Tayx.Graphy.Ram
|
||||
{
|
||||
public class G_RamManager : MonoBehaviour, IMovable, IModifiableState
|
||||
{
|
||||
/* ----- TODO: ----------------------------
|
||||
* Add summaries to the variables.
|
||||
* Add summaries to the functions.
|
||||
* Check if we should add a "RequireComponent" for "RectTransform".
|
||||
* Check if we should add a "RequireComponent" for "RamGraph".
|
||||
* Check why this manager doesnt use RamMonitor, as all the other managers have a monitor script.
|
||||
* Check if we should add a "RequireComponent" for "RamText".
|
||||
* --------------------------------------*/
|
||||
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private GameObject m_ramGraphGameObject;
|
||||
|
||||
[SerializeField] private List<Image> m_backgroundImages = new();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_RamGraph m_ramGraph;
|
||||
private G_RamText m_ramText;
|
||||
|
||||
private RectTransform m_rectTransform;
|
||||
|
||||
private readonly List<GameObject> m_childrenGameObjects = new();
|
||||
|
||||
private GraphyManager.ModuleState m_previousModuleState = GraphyManager.ModuleState.FULL;
|
||||
private GraphyManager.ModuleState m_currentModuleState = GraphyManager.ModuleState.FULL;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
UpdateParameters();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Public
|
||||
|
||||
public void SetPosition(GraphyManager.ModulePosition newModulePosition)
|
||||
{
|
||||
var xSideOffset = Mathf.Abs(m_rectTransform.anchoredPosition.x);
|
||||
var ySideOffset = Mathf.Abs(m_rectTransform.anchoredPosition.y);
|
||||
|
||||
switch (newModulePosition)
|
||||
{
|
||||
case GraphyManager.ModulePosition.TOP_LEFT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.up;
|
||||
m_rectTransform.anchorMin = Vector2.up;
|
||||
m_rectTransform.anchoredPosition = new Vector2(xSideOffset, -ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.TOP_RIGHT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.one;
|
||||
m_rectTransform.anchorMin = Vector2.one;
|
||||
m_rectTransform.anchoredPosition = new Vector2(-xSideOffset, -ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.BOTTOM_LEFT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.zero;
|
||||
m_rectTransform.anchorMin = Vector2.zero;
|
||||
m_rectTransform.anchoredPosition = new Vector2(xSideOffset, ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.BOTTOM_RIGHT:
|
||||
|
||||
m_rectTransform.anchorMax = Vector2.right;
|
||||
m_rectTransform.anchorMin = Vector2.right;
|
||||
m_rectTransform.anchoredPosition = new Vector2(-xSideOffset, ySideOffset);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModulePosition.FREE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetState(GraphyManager.ModuleState state, bool silentUpdate = false)
|
||||
{
|
||||
if (!silentUpdate) m_previousModuleState = m_currentModuleState;
|
||||
|
||||
m_currentModuleState = state;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case GraphyManager.ModuleState.FULL:
|
||||
gameObject.SetActive(true);
|
||||
m_childrenGameObjects.SetAllActive(true);
|
||||
SetGraphActive(true);
|
||||
|
||||
if (m_graphyManager.Background)
|
||||
m_backgroundImages.SetOneActive(0);
|
||||
else
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.TEXT:
|
||||
case GraphyManager.ModuleState.BASIC:
|
||||
gameObject.SetActive(true);
|
||||
m_childrenGameObjects.SetAllActive(true);
|
||||
SetGraphActive(false);
|
||||
|
||||
if (m_graphyManager.Background)
|
||||
m_backgroundImages.SetOneActive(1);
|
||||
else
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.BACKGROUND:
|
||||
gameObject.SetActive(true);
|
||||
SetGraphActive(false);
|
||||
|
||||
m_childrenGameObjects.SetAllActive(false);
|
||||
m_backgroundImages.SetAllActive(false);
|
||||
|
||||
break;
|
||||
|
||||
case GraphyManager.ModuleState.OFF:
|
||||
gameObject.SetActive(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void RestorePreviousState()
|
||||
{
|
||||
SetState(m_previousModuleState);
|
||||
}
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
foreach (var image in m_backgroundImages) image.color = m_graphyManager.BackgroundColor;
|
||||
|
||||
m_ramGraph.UpdateParameters();
|
||||
m_ramText.UpdateParameters();
|
||||
|
||||
SetState(m_graphyManager.RamModuleState);
|
||||
}
|
||||
|
||||
public void RefreshParameters()
|
||||
{
|
||||
foreach (var image in m_backgroundImages) image.color = m_graphyManager.BackgroundColor;
|
||||
|
||||
m_ramGraph.UpdateParameters();
|
||||
m_ramText.UpdateParameters();
|
||||
|
||||
SetState(m_currentModuleState, true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_ramGraph = GetComponent<G_RamGraph>();
|
||||
m_ramText = GetComponent<G_RamText>();
|
||||
|
||||
m_rectTransform = GetComponent<RectTransform>();
|
||||
|
||||
foreach (Transform child in transform)
|
||||
if (child.parent == transform)
|
||||
m_childrenGameObjects.Add(child.gameObject);
|
||||
}
|
||||
|
||||
private void SetGraphActive(bool active)
|
||||
{
|
||||
m_ramGraph.enabled = active;
|
||||
m_ramGraphGameObject.SetActive(active);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 84f7591c01b7f1a4ab82f1a0038491da
|
||||
timeCreated: 1514998367
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,42 @@
|
||||
/* ---------------------------------------
|
||||
* 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 UnityEngine;
|
||||
#if UNITY_5_5_OR_NEWER
|
||||
using UnityEngine.Profiling;
|
||||
#endif
|
||||
|
||||
namespace Tayx.Graphy.Ram
|
||||
{
|
||||
public class G_RamMonitor : MonoBehaviour
|
||||
{
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Update()
|
||||
{
|
||||
AllocatedRam = Profiler.GetTotalAllocatedMemoryLong() / 1048576f;
|
||||
ReservedRam = Profiler.GetTotalReservedMemoryLong() / 1048576f;
|
||||
MonoRam = Profiler.GetMonoUsedSizeLong() / 1048576f;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties -> Public
|
||||
|
||||
public float AllocatedRam { get; private set; }
|
||||
public float ReservedRam { get; private set; }
|
||||
public float MonoRam { get; private set; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2494656f0dd693144be1306d5551e544
|
||||
timeCreated: 1513377000
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,96 @@
|
||||
/* ---------------------------------------
|
||||
* Author: Martin Pane (martintayx@gmail.com) (@tayx94)
|
||||
* Contributors: https://github.com/Tayx94/graphy/graphs/contributors
|
||||
* Project: Graphy - Ultimate Stats Monitor
|
||||
* Date: 05-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 Tayx.Graphy.Utils.NumString;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Tayx.Graphy.Ram
|
||||
{
|
||||
public class G_RamText : MonoBehaviour
|
||||
{
|
||||
#region Methods -> Public
|
||||
|
||||
public void UpdateParameters()
|
||||
{
|
||||
m_allocatedSystemMemorySizeText.color = m_graphyManager.AllocatedRamColor;
|
||||
m_reservedSystemMemorySizeText.color = m_graphyManager.ReservedRamColor;
|
||||
m_monoSystemMemorySizeText.color = m_graphyManager.MonoRamColor;
|
||||
|
||||
m_updateRate = m_graphyManager.RamTextUpdateRate;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Private
|
||||
|
||||
private void Init()
|
||||
{
|
||||
// We assume no game will consume more than 16GB of RAM.
|
||||
// If it does, who cares about some minuscule garbage allocation lol.
|
||||
G_IntString.Init(0, 16386);
|
||||
|
||||
m_graphyManager = transform.root.GetComponentInChildren<GraphyManager>();
|
||||
|
||||
m_ramMonitor = GetComponent<G_RamMonitor>();
|
||||
|
||||
UpdateParameters();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Serialized Private
|
||||
|
||||
[SerializeField] private Text m_allocatedSystemMemorySizeText;
|
||||
[SerializeField] private Text m_reservedSystemMemorySizeText;
|
||||
[SerializeField] private Text m_monoSystemMemorySizeText;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Variables -> Private
|
||||
|
||||
private GraphyManager m_graphyManager;
|
||||
|
||||
private G_RamMonitor m_ramMonitor;
|
||||
|
||||
private float m_updateRate = 4f; // 4 updates per sec.
|
||||
|
||||
private float m_deltaTime;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods -> Unity Callbacks
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
m_deltaTime += Time.unscaledDeltaTime;
|
||||
|
||||
if (m_deltaTime > 1f / m_updateRate)
|
||||
{
|
||||
// Update allocated, mono and reserved memory
|
||||
m_allocatedSystemMemorySizeText.text = ((int)m_ramMonitor.AllocatedRam).ToStringNonAlloc();
|
||||
m_reservedSystemMemorySizeText.text = ((int)m_ramMonitor.ReservedRam).ToStringNonAlloc();
|
||||
m_monoSystemMemorySizeText.text = ((int)m_ramMonitor.MonoRam).ToStringNonAlloc();
|
||||
|
||||
m_deltaTime = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 28d32ee74b6e6d24ea89d1b477060318
|
||||
timeCreated: 1512484799
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6d11ec87c6db49d40af874a49810f377
|
||||
folderAsset: yes
|
||||
timeCreated: 1513377085
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user