UnityEditor.ModelInspector.RenderMeshPreviewSkipCameraAndLighting C# (CSharp) Method

RenderMeshPreviewSkipCameraAndLighting() static private method

static private RenderMeshPreviewSkipCameraAndLighting ( Mesh mesh, Bounds bounds, PreviewRenderUtility previewUtility, Material litMaterial, Material wireMaterial, MaterialPropertyBlock customProperties, Vector2 direction, int meshSubset ) : void
mesh UnityEngine.Mesh
bounds UnityEngine.Bounds
previewUtility PreviewRenderUtility
litMaterial UnityEngine.Material
wireMaterial UnityEngine.Material
customProperties UnityEngine.MaterialPropertyBlock
direction Vector2
meshSubset int
return void
        internal static void RenderMeshPreviewSkipCameraAndLighting(Mesh mesh, Bounds bounds, PreviewRenderUtility previewUtility, Material litMaterial, Material wireMaterial, MaterialPropertyBlock customProperties, Vector2 direction, int meshSubset)
        {
            if ((mesh != null) && (previewUtility != null))
            {
                Quaternion rot = Quaternion.Euler(direction.y, 0f, 0f) * Quaternion.Euler(0f, direction.x, 0f);
                Vector3 pos = (Vector3) (rot * -bounds.center);
                bool fog = RenderSettings.fog;
                Unsupported.SetRenderSettingsUseFogNoDirty(false);
                int subMeshCount = mesh.subMeshCount;
                if (litMaterial != null)
                {
                    previewUtility.m_Camera.clearFlags = CameraClearFlags.Nothing;
                    if ((meshSubset < 0) || (meshSubset >= subMeshCount))
                    {
                        for (int i = 0; i < subMeshCount; i++)
                        {
                            previewUtility.DrawMesh(mesh, pos, rot, litMaterial, i, customProperties);
                        }
                    }
                    else
                    {
                        previewUtility.DrawMesh(mesh, pos, rot, litMaterial, meshSubset, customProperties);
                    }
                    previewUtility.m_Camera.Render();
                }
                if (wireMaterial != null)
                {
                    previewUtility.m_Camera.clearFlags = CameraClearFlags.Nothing;
                    GL.wireframe = true;
                    if ((meshSubset < 0) || (meshSubset >= subMeshCount))
                    {
                        for (int j = 0; j < subMeshCount; j++)
                        {
                            previewUtility.DrawMesh(mesh, pos, rot, wireMaterial, j, customProperties);
                        }
                    }
                    else
                    {
                        previewUtility.DrawMesh(mesh, pos, rot, wireMaterial, meshSubset, customProperties);
                    }
                    previewUtility.m_Camera.Render();
                    GL.wireframe = false;
                }
                Unsupported.SetRenderSettingsUseFogNoDirty(fog);
            }
        }

Usage Example

        private void DoRenderPreview(bool shaded)
        {
            BillboardAsset billboardAsset = this.target as BillboardAsset;
            Bounds         bounds         = new Bounds(new Vector3(0f, (this.m_Height.floatValue + this.m_Bottom.floatValue) * 0.5f, 0f), new Vector3(this.m_Width.floatValue, this.m_Height.floatValue, this.m_Width.floatValue));
            float          magnitude      = bounds.extents.magnitude;
            float          num            = 8f * magnitude;
            Quaternion     quaternion     = Quaternion.Euler(-this.m_PreviewDir.y, -this.m_PreviewDir.x, 0f);

            this.m_PreviewUtility.m_Camera.transform.rotation   = quaternion;
            this.m_PreviewUtility.m_Camera.transform.position   = quaternion * (-Vector3.forward * num);
            this.m_PreviewUtility.m_Camera.nearClipPlane        = num - magnitude * 1.1f;
            this.m_PreviewUtility.m_Camera.farClipPlane         = num + magnitude * 1.1f;
            this.m_PreviewUtility.m_Light[0].intensity          = 1.4f;
            this.m_PreviewUtility.m_Light[0].transform.rotation = quaternion * Quaternion.Euler(40f, 40f, 0f);
            this.m_PreviewUtility.m_Light[1].intensity          = 1.4f;
            Color ambient = new Color(0.1f, 0.1f, 0.1f, 0f);

            InternalEditorUtility.SetCustomLighting(this.m_PreviewUtility.m_Light, ambient);
            if (shaded)
            {
                billboardAsset.MakeRenderMesh(this.m_ShadedMesh, 1f, 1f, 0f);
                billboardAsset.MakeMaterialProperties(this.m_ShadedMaterialProperties, this.m_PreviewUtility.m_Camera);
                ModelInspector.RenderMeshPreviewSkipCameraAndLighting(this.m_ShadedMesh, bounds, this.m_PreviewUtility, billboardAsset.material, null, this.m_ShadedMaterialProperties, new Vector2(0f, 0f), -1);
            }
            else
            {
                billboardAsset.MakePreviewMesh(this.m_GeometryMesh);
                ModelInspector.RenderMeshPreviewSkipCameraAndLighting(this.m_GeometryMesh, bounds, this.m_PreviewUtility, this.m_GeometryMaterial, this.m_WireframeMaterial, null, new Vector2(0f, 0f), -1);
            }
            InternalEditorUtility.RemoveCustomLighting();
        }
All Usage Examples Of UnityEditor.ModelInspector::RenderMeshPreviewSkipCameraAndLighting