static private RenderMeshPreviewSkipCameraAndLighting ( |
||
mesh | ||
bounds | ||
previewUtility | ||
litMaterial | ||
wireMaterial | ||
customProperties | ||
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);
}
}
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(); }