UnityEditor.SubstanceImporterInspector.DoRenderPreview C# (CSharp) Method

DoRenderPreview() protected method

protected DoRenderPreview ( Object subAssets ) : void
subAssets Object
return void
        protected void DoRenderPreview(Object[] subAssets)
        {
            if ((this.m_PreviewUtility.m_RenderTexture.width > 0) && (this.m_PreviewUtility.m_RenderTexture.height > 0))
            {
                Color color;
                List<ProceduralMaterial> list = new List<ProceduralMaterial>();
                foreach (Object obj2 in subAssets)
                {
                    if (obj2 is ProceduralMaterial)
                    {
                        list.Add(obj2 as ProceduralMaterial);
                    }
                }
                int num2 = 1;
                int num3 = 1;
                while ((num3 * num3) < list.Count)
                {
                    num3++;
                }
                num2 = Mathf.CeilToInt(((float) list.Count) / ((float) num3));
                this.m_PreviewUtility.m_Camera.transform.position = (Vector3) ((-Vector3.forward * 5f) * num3);
                this.m_PreviewUtility.m_Camera.transform.rotation = Quaternion.identity;
                this.m_PreviewUtility.m_Camera.farClipPlane = (5 * num3) + 5f;
                this.m_PreviewUtility.m_Camera.nearClipPlane = (5 * num3) - 3f;
                if (this.lightMode == 0)
                {
                    this.m_PreviewUtility.m_Light[0].intensity = 1f;
                    this.m_PreviewUtility.m_Light[0].transform.rotation = Quaternion.Euler(30f, 30f, 0f);
                    this.m_PreviewUtility.m_Light[1].intensity = 0f;
                    color = new Color(0.2f, 0.2f, 0.2f, 0f);
                }
                else
                {
                    this.m_PreviewUtility.m_Light[0].intensity = 1f;
                    this.m_PreviewUtility.m_Light[0].transform.rotation = Quaternion.Euler(50f, 50f, 0f);
                    this.m_PreviewUtility.m_Light[1].intensity = 1f;
                    color = new Color(0.2f, 0.2f, 0.2f, 0f);
                }
                InternalEditorUtility.SetCustomLighting(this.m_PreviewUtility.m_Light, color);
                for (int i = 0; i < list.Count; i++)
                {
                    ProceduralMaterial mat = list[i];
                    Vector3 pos = new Vector3((i % num3) - ((num3 - 1) * 0.5f), (-i / num3) + ((num2 - 1) * 0.5f), 0f);
                    pos = (Vector3) (pos * ((Mathf.Tan((this.m_PreviewUtility.m_Camera.fieldOfView * 0.5f) * 0.01745329f) * 5f) * 2f));
                    this.m_PreviewUtility.DrawMesh(s_Meshes[this.selectedMesh], pos, Quaternion.Euler(this.previewDir.y, 0f, 0f) * Quaternion.Euler(0f, this.previewDir.x, 0f), mat, 0);
                }
                bool fog = RenderSettings.fog;
                Unsupported.SetRenderSettingsUseFogNoDirty(false);
                this.m_PreviewUtility.m_Camera.Render();
                Unsupported.SetRenderSettingsUseFogNoDirty(fog);
                InternalEditorUtility.RemoveCustomLighting();
            }
        }