public void OnRender(DrawingSurface surface) { Debug.AssertFormat(surface != null, "Cannot render to surface: {0}", "surface is null"); Debug.AssertFormat(surface.RenderTexture != null, "Cannot render to surface: {0}", "render texture is null"); Debug.AssertFormat(Material != null, "Cannot render to surface: {0}", "material is null"); Geometry.Reset(); foreach (Line line in Lines.Values) { line.OnRender(m_Geometry, m_Options); } Geometry.CopyToMesh(Mesh); Matrix4x4 matrix = surface.Camera.transform.localToWorldMatrix; matrix.m23 = surface.transform.position.z; surface.Invoke(() => { surface.RenderTexture.MarkRestoreExpected(); Material.SetPass(0); Graphics.DrawMeshNow(Mesh, matrix, 0); }); }