UnityEditor.SubstanceImporterInspector.MaterialListing C# (CSharp) Method

MaterialListing() private method

private MaterialListing ( ) : void
return void
        private void MaterialListing()
        {
            ProceduralMaterial[] sortedMaterials = this.GetSortedMaterials();
            foreach (ProceduralMaterial material in sortedMaterials)
            {
                if (material.isProcessing)
                {
                    base.Repaint();
                    SceneView.RepaintAll();
                    GameView.RepaintAll();
                    break;
                }
            }
            int length = sortedMaterials.Length;
            float num3 = ((GUIView.current.position.width - 16f) - 18f) - 2f;
            if ((num3 * 2f) < (length * 60f))
            {
                num3 -= 16f;
            }
            int num4 = Mathf.Max(1, Mathf.FloorToInt(num3 / 60f));
            int num5 = Mathf.CeilToInt(((float) length) / ((float) num4));
            Rect viewRect = new Rect(0f, 0f, num4 * 60f, num5 * 76f);
            Rect rect = GUILayoutUtility.GetRect(viewRect.width, Mathf.Clamp(viewRect.height, 76f, 152f) + 1f);
            Rect position = new Rect(rect.x + 1f, rect.y + 1f, rect.width - 2f, rect.height - 1f);
            GUI.Box(rect, GUIContent.none, this.m_SubstanceStyles.gridBackground);
            GUI.Box(position, GUIContent.none, this.m_SubstanceStyles.background);
            this.m_ListScroll = GUI.BeginScrollView(position, this.m_ListScroll, viewRect, false, false);
            if (this.m_EditorCache == null)
            {
                this.m_EditorCache = new EditorCache(EditorFeatures.PreviewGUI);
            }
            for (int i = 0; i < sortedMaterials.Length; i++)
            {
                ProceduralMaterial target = sortedMaterials[i];
                if (target != null)
                {
                    float x = (i % num4) * 60f;
                    float y = (i / num4) * 76f;
                    Rect rect5 = new Rect(x, y, 60f, 76f);
                    bool on = target.name == this.m_SelectedMaterialInstanceName;
                    Event current = Event.current;
                    int controlID = GUIUtility.GetControlID(previewNoDragDropHash, FocusType.Passive, rect5);
                    switch (current.GetTypeForControl(controlID))
                    {
                        case EventType.Repaint:
                        {
                            Rect rect6 = rect5;
                            rect6.y = rect5.yMax - 16f;
                            rect6.height = 16f;
                            this.m_SubstanceStyles.resultsGridLabel.Draw(rect6, EditorGUIUtility.TempContent(target.name), false, false, on, on);
                            break;
                        }
                        case EventType.MouseDown:
                            if ((current.button == 0) && rect5.Contains(current.mousePosition))
                            {
                                if (current.clickCount == 1)
                                {
                                    this.m_SelectedMaterialInstanceName = target.name;
                                    current.Use();
                                }
                                else if (current.clickCount == 2)
                                {
                                    AssetDatabase.OpenAsset(target);
                                    GUIUtility.ExitGUI();
                                    current.Use();
                                }
                            }
                            break;
                    }
                    rect5.height -= 16f;
                    this.m_EditorCache[target].OnPreviewGUI(rect5, this.m_SubstanceStyles.background);
                }
            }
            GUI.EndScrollView();
        }