summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/TipsWindow.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/TipsWindow.cs')
-rw-r--r--Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/TipsWindow.cs148
1 files changed, 148 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/TipsWindow.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/TipsWindow.cs
new file mode 100644
index 00000000..1d888355
--- /dev/null
+++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/TipsWindow.cs
@@ -0,0 +1,148 @@
+// Amplify Shader Editor - Visual Shader Editing Tool
+// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
+
+using System.IO;
+using System.Reflection;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+namespace AmplifyShaderEditor
+{
+ [Serializable]
+ public class TipsWindow : MenuParent
+ {
+ private static bool m_showWindow = false;
+ private bool m_dontShowAtStart = false;
+
+ private static List<string> AllTips = new List<string>() {
+ "You can press W to toggle between a flat and color coded Wires and ports.",
+ "You can press CTRL+W to toggle between multiline or singleline Wire connections.",
+ "You can press P to globally open all node Previews.",
+ "You can press F to Focus your selection, single tap centers the selection while double tap it to also zooms on in.",
+ "You can press CTRL+F to open a search bar and Find a node by it's title",
+ "You can press SPACE to open a context menu to add a new node and press TAB or SHIFT+TAB tocycle between the found nodes",
+ "You can remove a node without breaking the graph connections by pressing ALT and then dragging the node out",
+ "You can switch two input connections holding CTRL while dragging one input connection into the other",
+ };
+
+ int m_currentTip = 0;
+
+ public TipsWindow( AmplifyShaderEditorWindow parentWindow ) : base( parentWindow, 0, 0, 0, 64, "Tips", MenuAnchor.TOP_LEFT, MenuAutoSize.NONE )
+ {
+ //m_dontShowAtStart = EditorPrefs.GetBool( "DontShowTipAtStart", false );
+ }
+
+ public override void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus )
+ {
+ base.Draw( parentPosition, mousePosition, mouseButtonId, hasKeyboadFocus );
+
+ DrawWindow( mousePosition );
+ }
+
+ public void DrawWindow( Vector2 mousePosition )
+ {
+ if( !m_showWindow )
+ return;
+
+ Rect windowRect = new Rect( 0, 0, Screen.width, Screen.height );
+ Vector2 center = windowRect.center;
+ windowRect.size = new Vector2( 300, 200 );
+ windowRect.center = center;
+ Color temp = GUI.color;
+ GUI.color = Color.white;
+ GUI.Label( windowRect, string.Empty, GUI.skin.FindStyle( "flow node 0" ) );
+
+ if( Event.current.type == EventType.MouseDown && !windowRect.Contains( mousePosition ) )
+ m_showWindow = false;
+
+ Rect titleRect = windowRect;
+ titleRect.height = 35;
+ GUI.Label( titleRect, "Quick Tip!", GUI.skin.FindStyle( "TL Selection H2" ) );
+ Rect button = titleRect;
+ button.size = new Vector2( 14, 14 );
+ button.y += 2;
+ button.x = titleRect.xMax - 16;
+ if( GUI.Button( button, string.Empty, GUI.skin.FindStyle( "WinBtnClose" ) ) )
+ CloseWindow();
+
+ button.y += 100;
+ if( GUI.Button( button, ">" ) )
+ {
+ m_currentTip++;
+ if( m_currentTip >= AllTips.Count )
+ m_currentTip = 0;
+ }
+
+ Rect textRect = windowRect;
+ textRect.yMin = titleRect.yMax;
+ GUI.Label( textRect, AllTips[ m_currentTip ], GUI.skin.FindStyle( "WordWrappedLabel" ) );
+
+ Rect footerRect = windowRect;
+ footerRect.yMin = footerRect.yMax - 18;
+ footerRect.x += 3;
+ GUI.Label( footerRect, (m_currentTip + 1) + " of " + AllTips.Count + " tips" );
+ footerRect.x += 170;
+ EditorGUI.BeginChangeCheck();
+ m_dontShowAtStart = GUI.Toggle( footerRect, m_dontShowAtStart, "Don't show at start" );
+ if( EditorGUI.EndChangeCheck() )
+ {
+ EditorPrefs.SetBool( "DontShowTipAtStart", m_dontShowAtStart );
+ }
+ GUI.color = temp;
+
+ if( Event.current.type == EventType.MouseDown && windowRect.Contains( mousePosition ) )
+ {
+ Event.current.Use();
+ ParentWindow.MouseInteracted = true;
+ }
+ }
+
+ public override void Destroy()
+ {
+ base.Destroy();
+ }
+
+ public static void ShowWindow( bool toggle = true )
+ {
+ if( toggle )
+ m_showWindow = !m_showWindow;
+ else
+ m_showWindow = true;
+
+ //Test();
+ //ExportCompiledShaders();
+ }
+
+ //public static void Test()
+ //{
+ // Shader shader = UIUtils.CurrentWindow.CurrentGraph.CurrentShader;
+ // int mode = EditorPrefs.GetInt( "ShaderInspectorPlatformMode", 1 );
+ // int mask = EditorPrefs.GetInt( "ShaderInspectorPlatformMask", 524287 );
+ // bool strip = EditorPrefs.GetInt( "ShaderInspectorVariantStripping", 1 ) == 0;
+ // ShaderUtilEx.OpenCompiledShader( shader, mode, mask, strip );
+ //}
+
+ //public static void ExportCompiledShaders()
+ //{
+ // Shader shader = UIUtils.CurrentWindow.CurrentGraph.CurrentShader;
+ // string shaderPath = AssetDatabase.GetAssetPath( shader );
+ // SerializedObject so = new SerializedObject( shader );
+ // SerializedProperty prop = so.FindProperty( "m_Script" );
+ // var compiledShaderString = prop.stringValue;
+ // Directory.CreateDirectory( Application.dataPath + "/../ShaderSource/" );
+ // if( compiledShaderString == null )
+ // return;
+ // var outputPath = Application.dataPath + "/../ShaderSource/" + Path.GetFileNameWithoutExtension( shaderPath ) + "_compiled.shader";
+ // var sw = File.CreateText( outputPath );
+ // sw.Write( compiledShaderString );
+ // sw.Close();
+ //}
+
+ public static void CloseWindow()
+ {
+ m_showWindow = false;
+ }
+ }
+}