diff options
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/TipsWindow.cs')
-rw-r--r-- | Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/TipsWindow.cs | 148 |
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; + } + } +} |