[
  {
    "path": ".gitignore",
    "content": "[Ll]ibrary/\n[Tt]emp/\n[Oo]bj/\n[Bb]uild/\n[Bb]uilds/\nAssets/AssetStoreTools*\n\nLICENSE.meta\nREADME.md.meta\n\n# Visual Studio cache directory\n.vs/\n\n# Autogenerated VS/MD/Consulo solution and project files\nExportedObj/\n.consulo/\n*.csproj\n*.unityproj\n*.sln\n*.suo\n*.tmp\n*.user\n*.userprefs\n*.pidb\n*.booproj\n*.svd\n*.pdb\n*.opendb\n\n# Unity3D generated meta files\n*.pidb.meta\n*.pdb.meta\n\n# Unity3D Generated File On Crash Reports\nsysinfo.txt\n\n# Builds\n*.apk\n*.unitypackage\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019 Freya Holmér\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Render-Queue\nRender Queue Unity Extension\n\nMake sure your project is using .NET 4.x in Player Settings!\n"
  },
  {
    "path": "Render Queue/Editor/AssetList.cs",
    "content": "﻿// Copyright © 2019 Freya Holmér • freya@acegikmo.com • https://github.com/FreyaHolmer/Render-Queue\nnamespace RenderQueuePlugin {\n\n\tusing System.Collections.Generic;\n\tusing UnityEngine;\n\tusing UnityEditor;\n\tusing System.Linq;\n\n\t[System.Serializable]\n\tpublic class AssetList {\n\n\t\t[SerializeField] Vector2 scrollPosition = Vector2.zero;\n\t\t[SerializeField] List<Entry> entries;\n\n\t\tpublic bool HasPendingChanges  => entries.Any( e => e.ModifiedState == EntryState.Modified );\n\t\tpublic void ApplyAllChanges()  => entries.ForEach( e => e.ApplyIfModified() );\n\t\tpublic void RevertAllChanges() => entries.ForEach( e => e.RevertIfModified() );\n\n\t\tpublic void UpdateList( Filter filter, System.Type type ) {\n\t\t\tif( entries == null )\n\t\t\t\tentries = new List<Entry>();\n\n\t\t\t// Collect any pending modifications before refreshing\n\t\t\tIEnumerable<(Object,int)> modifications = entries\n\t\t\t.Where(  x => x.ModifiedState == EntryState.Modified )\n\t\t\t.Select( x => (x.asset, x.renderQueueInput) );\n\n\t\t\t// Get all assets from the project filtered by the selected filter\n\t\t\tstring assetSearch = $\"t:{type.Name}\";\n\t\t\tentries = AssetDatabase.FindAssets( assetSearch )\n\t\t\t\t.Select( guid => AssetDatabase.GUIDToAssetPath( guid ) )\n\t\t\t\t.Where( filter.filter )\n\t\t\t\t.Select( path => new Entry( AssetDatabase.LoadAssetAtPath( path, type ) ) )\n\t\t\t\t.ToList();\n\n\t\t\t// Re-add the pending changes to corresponding entries if they still exist\n\t\t\tforeach( var (modMat, modValue) in modifications ) {\n\t\t\t\tEntry entry = entries.FirstOrDefault( e => e.asset == modMat );\n\t\t\t\tif( entry != null )\n\t\t\t\t\tentry.renderQueueInput = modValue;\n\t\t\t}\n\n\t\t\t// Order by Render Queue input\n\t\t\tentries.Sort( ( a, b ) => b.renderQueueInput.CompareTo( a.renderQueueInput ) );\n\n\t\t}\n\n\t\tpublic void Draw() {\n\n\t\t\tscrollPosition = GUILayout.BeginScrollView( scrollPosition );\n\t\t\t{\n\t\t\t\tGUILayout.BeginVertical( RenderQueueGUI.PanelStyle );\n\t\t\t\tfor( int i = 0; i < entries.Count; i++ ) {\n\n\t\t\t\t\t// Entry\n\t\t\t\t\tentries[i].Draw();\n\n\t\t\t\t\t// Spacing between groups\n\t\t\t\t\tif( i < entries.Count - 1 ) {\n\t\t\t\t\t\tbool validEntries = entries[i].ModifiedState != EntryState.Missing && entries[i+1].ModifiedState != EntryState.Missing;\n\t\t\t\t\t\tif( validEntries ) {\n\t\t\t\t\t\t\tint delta = entries[i].RenderQueue - entries[i + 1].RenderQueue;\n\t\t\t\t\t\t\tif( delta > 1 ) {\n\t\t\t\t\t\t\t\tGUILayout.EndVertical();\n\t\t\t\t\t\t\t\tRenderQueueGUI.Fade( 0.4f, () => {\n\t\t\t\t\t\t\t\t\tRenderQueueGUI.LabelSmallRight( delta.ToString() );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\tGUILayout.BeginVertical( RenderQueueGUI.PanelStyle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tGUILayout.EndVertical();\n\t\t\t}\n\t\t\tGUILayout.EndScrollView();\n\t\t}\n\n\n\n\t}\n\n}"
  },
  {
    "path": "Render Queue/Editor/AssetList.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 0db4344400aec7440894b8f4545cc785\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Render Queue/Editor/Entry.cs",
    "content": "﻿// Copyright © 2019 Freya Holmér • freya@acegikmo.com • https://github.com/FreyaHolmer/Render-Queue\nnamespace RenderQueuePlugin {\n\n\tusing UnityEngine;\n\tusing UnityEditor;\n\n\t[System.Serializable]\n\tpublic class Entry {\n\n\t\tpublic enum EntryType {\n\t\t\tMaterial,\n\t\t\tShader\n\t\t}\n\n\t\tpublic Object asset;\n\t\tpublic int renderQueueInput;\n\t\tpublic EntryType entryType;\n\n\t\tMaterial AssetMaterial => asset as Material;\n\t\tShader AssetShader => asset as Shader;\n\n\t\tpublic int RenderQueue {\n\t\t\tget {\n\t\t\t\tswitch( entryType ) {\n\t\t\t\t\tcase EntryType.Material:\n\t\t\t\t\t\treturn AssetMaterial.renderQueue;\n\t\t\t\t\tcase EntryType.Shader:\n\t\t\t\t\t\treturn AssetShader.renderQueue;\n\t\t\t\t}\n\t\t\t\treturn default;\n\t\t\t}\n\t\t\tset {\n\t\t\t\tif( entryType == EntryType.Material ) {\n\t\t\t\t\tAssetMaterial.renderQueue = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Note: Shader render queue is read only\n\t\t\t}\n\t\t}\n\t\tpublic EntryState ModifiedState {\n\t\t\tget {\n\t\t\t\tif( asset == null )\n\t\t\t\t\treturn EntryState.Missing;\n\t\t\t\tif( renderQueueInput != RenderQueue )\n\t\t\t\t\treturn EntryState.Modified;\n\t\t\t\treturn EntryState.Unchanged;\n\t\t\t}\n\t\t}\n\n\t\tpublic Entry( Object asset ) {\n\t\t\tthis.asset = asset;\n\t\t\tif( asset is Material )\n\t\t\t\tentryType = EntryType.Material;\n\t\t\telse if( asset is Shader )\n\t\t\t\tentryType = EntryType.Shader;\n\t\t\tthis.renderQueueInput = RenderQueue;\n\t\t}\n\n\t\tpublic string GetOffsetLabelString( EntryState state ) {\n\t\t\tif( state == EntryState.Missing )\n\t\t\t\treturn \"?\";\n\t\t\tint offset = renderQueueInput - 3000;\n\t\t\treturn RenderQueueGUI.ToSignedString( offset );\n\t\t}\n\n\t\tpublic string GetRenderTag( EntryState state ) {\n\t\t\tif( state == EntryState.Missing )\n\t\t\t\treturn \"?\";\n\t\t\tif( entryType == EntryType.Material )\n\t\t\t\treturn AssetMaterial.GetTag( \"RenderType\", true, \"-\" );\n\t\t\treturn string.Empty;\n\t\t}\n\n\t\tpublic void Draw() {\n\n\t\t\tEntryState state = ModifiedState;\n\t\t\tGUI.color = state.GetColor();\n\n\t\t\tstring offsetLabel = GetOffsetLabelString( state );\n\t\t\tstring renderTagLabel = GetRenderTag( state );\n\n\t\t\tGUILayout.BeginHorizontal();\n\t\t\t{\n\t\t\t\tRenderQueueGUI.Disabled( () => {\n\t\t\t\t\tGUILayout.Label( offsetLabel, GUILayout.Width( 40 ) );\n\t\t\t\t} );\n\n\t\t\t\tRenderQueueGUI.EnabledStateGroup( state != EntryState.Missing, () => {\n\t\t\t\t\tif(entryType == EntryType.Material ) {\n\t\t\t\t\t\trenderQueueInput = EditorGUILayout.IntField( renderQueueInput, GUILayout.Width( 40 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tGUILayout.Space( 1 ); // To make the label align with the textbox when viewing things you can edit\n\t\t\t\t\t\tGUILayout.Label( renderQueueInput.ToString(), GUILayout.Width( 40 ) ); // Read only\n\t\t\t\t\t}\n\t\t\t\t\tEditorGUILayout.ObjectField( asset, typeof( Material ), allowSceneObjects: false, GUILayout.ExpandWidth( true ) );\n\t\t\t\t} );\n\n\t\t\t\tif( entryType == EntryType.Material ) {\n\t\t\t\t\tRenderQueueGUI.Fade( 0.4f, () => {\n\t\t\t\t\t\tGUILayout.Label( renderTagLabel, EditorStyles.miniLabel, GUILayout.Width( 100 ) );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tGUILayout.EndHorizontal();\n\n\t\t\tGUI.color = Color.white;\n\t\t}\n\n\n\t\tpublic void ApplyIfModified() {\n\t\t\tif( ModifiedState == EntryState.Modified ) {\n\t\t\t\tUnityEditor.Undo.RecordObject( asset, \"change asset render queque\" );\n\t\t\t\tRenderQueue = renderQueueInput;\n\t\t\t\trenderQueueInput = RenderQueue; // Make sure it matches asset afterwards after\n\t\t\t}\n\t\t}\n\n\t\tpublic void RevertIfModified() {\n\t\t\tif( ModifiedState == EntryState.Modified )\n\t\t\t\trenderQueueInput = RenderQueue;\n\t\t}\n\n\t}\n\n}"
  },
  {
    "path": "Render Queue/Editor/Entry.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 90b5cf8dc28d1b743b13ba90e39d42ae\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Render Queue/Editor/EntryState.cs",
    "content": "﻿// Copyright © 2019 Freya Holmér • freya@acegikmo.com • https://github.com/FreyaHolmer/Render-Queue\nnamespace RenderQueuePlugin {\n\n\tusing UnityEngine;\n\tusing UnityEditor;\n\n\tpublic enum EntryState {\n\t\tUnchanged,\n\t\tModified,\n\t\tMissing\n\t}\n\n\t[System.Serializable]\n\tpublic static class EntryStateExtensions {\n\t\tstatic readonly Color[] stateColors = {\n\t\t\tColor.white,\n\t\t\tColor.cyan,\n\t\t\tColor.red\n\t\t};\n\t\tpublic static Color GetColor( this EntryState state ) => stateColors[(int)state];\n\t}\n\n}"
  },
  {
    "path": "Render Queue/Editor/EntryState.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d427040b3ca16324b9aa7d71c29b4d41\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Render Queue/Editor/Filter.cs",
    "content": "﻿// Copyright © 2019 Freya Holmér • freya@acegikmo.com • https://github.com/FreyaHolmer/Render-Queue\nnamespace RenderQueuePlugin {\n\n\tusing System.Collections;\n\tusing System.Collections.Generic;\n\tusing UnityEngine;\n\tusing System.Linq;\n\tusing System;\n\n\tpublic class Filter {\n\n\t\tpublic string name;\n\t\tpublic Func<string, bool> filter;\n\n\t\tpublic Filter( string name, Func<string, bool> filter ) {\n\t\t\tthis.name = name;\n\t\t\tthis.filter = filter;\n\t\t}\n\n\t}\n\n}"
  },
  {
    "path": "Render Queue/Editor/Filter.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e8db88d37d7956d4c9d6ceebba21988a\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Render Queue/Editor/Filters.cs",
    "content": "﻿// Copyright © 2019 Freya Holmér • freya@acegikmo.com • https://github.com/FreyaHolmer/Render-Queue\nnamespace RenderQueuePlugin {\n\n\tusing System.Collections.Generic;\n\n\tpublic static class Filters {\n\t\tpublic static List<Filter> filters = new List<Filter>(){\n\t\t\t// Add new filters here\n\t\t\t// Do not use these symbols in filter names: &/^%\n\t\t\t// (They completely mess up formatting in the picker menu)\n\t\t\tnew Filter( \"All\",\n\t\t\t\t(path) => true\n\t\t\t),\n\t\t\tnew Filter( \"Materials + Shaders\",\n\t\t\t\t(path) => path.StartsWith(\"Assets/Materials/\") || path.StartsWith(\"Assets/Shaders/\")\n\t\t\t),\n\t\t};\n\t}\n\n}"
  },
  {
    "path": "Render Queue/Editor/Filters.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8c8b0eb330a612241831f0140c2756b6\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Render Queue/Editor/RenderQueueGUI.cs",
    "content": "﻿// Copyright © 2019 Freya Holmér • freya@acegikmo.com • https://github.com/FreyaHolmer/Render-Queue\nnamespace RenderQueuePlugin {\n\n\tusing System.Collections;\n\tusing System.Collections.Generic;\n\tusing UnityEngine;\n\tusing UnityEditor;\n\tusing System.Linq;\n\n\tpublic static class RenderQueueGUI {\n\n\t\tstatic GUIStyle panelStyle;\n\t\tpublic static GUIStyle PanelStyle {\n\t\t\tget {\n\t\t\t\tif( panelStyle == null ) {\n\t\t\t\t\tpanelStyle = new GUIStyle( EditorStyles.helpBox ) {\n\t\t\t\t\t\tpadding = new RectOffset( 2, 2, 4, 4 ),\n\t\t\t\t\t\tmargin = new RectOffset( 0, 0, 0, 0 )\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn panelStyle;\n\t\t\t}\n\t\t}\n\n\t\tstatic GUIContent iconMaterial;\n\t\tpublic static GUIContent IconMaterial {\n\t\t\tget {\n\t\t\t\tif( iconMaterial == null )\n\t\t\t\t\ticonMaterial = EditorGUIUtility.IconContent( \"Material Icon\" );\n\t\t\t\treturn iconMaterial;\n\t\t\t}\n\t\t}\n\n\t\tstatic GUIContent iconShader;\n\t\tpublic static GUIContent IconShader {\n\t\t\tget {\n\t\t\t\tif( iconShader == null )\n\t\t\t\t\ticonShader = EditorGUIUtility.IconContent( \"Shader Icon\" );\n\t\t\t\treturn iconShader;\n\t\t\t}\n\t\t}\n\n\t\tstatic Color cachedPrevColor;\n\n\t\tpublic static void Fade( float opacity, System.Action content ) {\n\t\t\tcachedPrevColor = GUI.color;\n\t\t\tColor c = cachedPrevColor;\n\t\t\tc.a *= opacity;\n\t\t\tGUI.color = c;\n\t\t\tcontent();\n\t\t\tGUI.color = cachedPrevColor;\n\t\t}\n\n\t\tpublic static void Disabled( System.Action content ) {\n\t\t\tEditorGUI.BeginDisabledGroup( true );\n\t\t\tcontent();\n\t\t\tEditorGUI.EndDisabledGroup();\n\t\t}\n\n\t\tpublic static void EnabledStateGroup( bool enabled, System.Action content ) {\n\t\t\tEditorGUI.BeginDisabledGroup( enabled == false );\n\t\t\tcontent();\n\t\t\tEditorGUI.EndDisabledGroup();\n\t\t}\n\n\t\tpublic static string ToSignedString( int value ) {\n\t\t\tif( value == 0 )\n\t\t\t\treturn \"±\" + value;\n\t\t\tif( value > 0 )\n\t\t\t\treturn \"+\" + value;\n\t\t\treturn value.ToString(); // Negative symbol is already included\n\t\t}\n\n\t\tpublic static void LabelSmallRight( string str ) {\n\t\t\tGUILayout.BeginHorizontal();\n\t\t\tGUILayout.Label( string.Empty, GUILayout.ExpandWidth( true ) );\n\t\t\tGUILayout.Label( str, EditorStyles.centeredGreyMiniLabel, GUILayout.ExpandWidth( false ) );\n\t\t\tGUILayout.EndHorizontal();\n\t\t}\n\n\t\tpublic static void Deselect() => GUI.FocusControl( \"\" );\n\n\t}\n\n}"
  },
  {
    "path": "Render Queue/Editor/RenderQueueGUI.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e502883221570e143a4e843349ea3432\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Render Queue/Editor/RenderQueueWindow.cs",
    "content": "﻿// Copyright © 2019 Freya Holmér • freya@acegikmo.com • https://github.com/FreyaHolmer/Render-Queue\nnamespace RenderQueuePlugin {\n\n\tusing UnityEngine;\n\tusing UnityEditor;\n\tusing System.Linq;\n\tusing System.Collections.Generic;\n\tusing System;\n\n\tpublic class RenderQueueWindow : EditorWindow {\n\n\t\t// Constants\n\t\tconst string EDITOR_PREF_PREFIX = \"render_queue_window_\";\n\t\tconst string EDITOR_PREF_KEY_FILTER_INDEX = EDITOR_PREF_PREFIX + \"filter_index\";\n\t\tconst string EDITOR_PREF_KEY_LIST_INDEX   = EDITOR_PREF_PREFIX + \"list_index\";\n\t\t\n\t\t// Asset types & icons\n\t\tstatic (Type type, Func<GUIContent> getIcon )[] typesAndIcons = {\n\t\t\t(typeof(Material),\t() => RenderQueueGUI.IconMaterial),\n\t\t\t(typeof(Shader),\t() => RenderQueueGUI.IconShader)\n\t\t};\n\n\t\t[SerializeField] int listIndex = 0;\n\t\t[SerializeField] AssetList[] lists = new AssetList[typesAndIcons.Length];\n\t\t[SerializeField] int filterIndex = 0;\n\t\t[SerializeField] string[] filterNames;\n\t\t[SerializeField] int[] filterIndices;\n\n\t\tAssetList CurrentList {\n\t\t\tget => lists[listIndex];\n\t\t\tset => lists[listIndex] = value;\n\t\t}\n\t\tType CurrentType => typesAndIcons[listIndex].type;\n\n\t\t[MenuItem( \"Tools/Render Queue\" )]\n\t\tpublic static void Intialize() => GetWindow<RenderQueueWindow>( \"Render Queue\" );\n\n\t\tprivate void OnEnable() {\n\t\t\tLoadPrefs();\n\t\t\tRefreshFilters();\n\t\t\tRefreshList();\n\t\t\tUndo.undoRedoPerformed += OnUndoRedo;\n\t\t}\n\n\t\tprivate void OnDisable() {\n\t\t\tSavePrefs();\n\t\t\tUndo.undoRedoPerformed -= OnUndoRedo;\n\t\t}\n\n\t\tpublic void OnGUI() {\n\t\t\tDrawHeader();\n\t\t\tCurrentList.Draw();\n\t\t\tDeselectIfClickedNothing();\n\t\t}\n\n\t\tvoid SavePrefs() {\n\t\t\tEditorPrefs.SetInt( EDITOR_PREF_KEY_FILTER_INDEX, filterIndex );\n\t\t\tEditorPrefs.SetInt( EDITOR_PREF_KEY_LIST_INDEX, listIndex );\n\t\t}\n\t\tvoid LoadPrefs() {\n\t\t\tfilterIndex = EditorPrefs.GetInt( EDITOR_PREF_KEY_FILTER_INDEX, 0 );\n\t\t\tlistIndex = EditorPrefs.GetInt( EDITOR_PREF_KEY_LIST_INDEX, 0 );\n\t\t}\n\n\t\tvoid OnUndoRedo() {\n\t\t\tRefreshList();\n\t\t\tRepaint();\n\t\t}\n\n\t\tvoid RefreshFilters() {\n\t\t\tfilterNames = Filters.filters.Select( f => f.name ).ToArray();\n\t\t\tfilterIndices = new int[filterNames.Length];\n\t\t\tfor( int i = 0; i < filterIndices.Length; i++ )\n\t\t\t\tfilterIndices[i] = i;\n\t\t\tfilterIndex = Mathf.Clamp( filterIndex, 0, Filters.filters.Count - 1 );\n\t\t}\n\n\t\tvoid RefreshList() {\n\t\t\tif( CurrentList == null )\n\t\t\t\tCurrentList = new AssetList();\n\t\t\tCurrentList.UpdateList( Filters.filters[filterIndex], CurrentType );\n\t\t\tRenderQueueGUI.Deselect();\n\t\t}\n\n\n\t\tvoid DrawHeader() {\n\n\t\t\tbool hasChanges = CurrentList.HasPendingChanges;\n\n\t\t\tGUILayout.BeginHorizontal( EditorStyles.toolbar );\n\t\t\t{\n\t\t\t\tif( GUILayout.Button( typesAndIcons[listIndex].getIcon(), EditorStyles.toolbarButton, GUILayout.Width( 24 ), GUILayout.Height(16) ) ) {\n\t\t\t\t\tlistIndex = 1 - listIndex;\n\t\t\t\t\tRefreshList();\n\t\t\t\t}\n\t\t\t\tif( GUILayout.Button( \"Refresh\", EditorStyles.miniButtonLeft, GUILayout.Width( 66 ) ) ) {\n\t\t\t\t\tRefreshList();\n\t\t\t\t}\n\t\t\t\tEditorGUI.BeginDisabledGroup( hasChanges == false );\n\t\t\t\tif( GUILayout.Button( \"Revert\", EditorStyles.miniButtonMid, GUILayout.Width( 60 ) ) ) {\n\t\t\t\t\tCurrentList.RevertAllChanges();\n\t\t\t\t\tRefreshList();\n\t\t\t\t}\n\t\t\t\tif( GUILayout.Button( \"Apply\", EditorStyles.miniButtonRight, GUILayout.Width( 50 ) ) ) {\n\t\t\t\t\tCurrentList.ApplyAllChanges();\n\t\t\t\t\tRefreshList();\n\t\t\t\t}\n\t\t\t\tEditorGUI.EndDisabledGroup();\n\n\t\t\t\tGUILayout.Space( 5 );\n\t\t\t\tEditorGUI.BeginChangeCheck();\n\t\t\t\tGUILayout.Label( \"Folder Filter\", EditorStyles.miniLabel, GUILayout.ExpandWidth( false ) );\n\t\t\t\tfilterIndex = EditorGUILayout.IntPopup( filterIndex, filterNames, filterIndices );\n\t\t\t\tif( EditorGUI.EndChangeCheck() ) {\n\t\t\t\t\tRefreshList();\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tGUILayout.EndHorizontal();\n\t\t}\n\n\t\tvoid DeselectIfClickedNothing() {\n\t\t\tif( Event.current.type == EventType.MouseDown && Event.current.button == 0 ) {\n\t\t\t\tRenderQueueGUI.Deselect();\n\t\t\t\tRepaint();\n\t\t\t}\n\t\t}\n\n\n\n\t}\n\n}"
  },
  {
    "path": "Render Queue/Editor/RenderQueueWindow.cs.meta",
    "content": "fileFormatVersion: 2\nguid: adaf75a07a28a574397ac38179fac3b3\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Render Queue/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: adfb608eb5ae6d943aca0a40ca6c11a4\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Render Queue.meta",
    "content": "fileFormatVersion: 2\nguid: 58cf4e6c44092a14e8f72a35436a3818\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  }
]