public VisibleRecord ReadVisibleRecord(Stream dlisStream) { if (dlisStream == null) { return(null); } var visibleRecord = new VisibleRecord { Length = _unormReader.ReadUNORM(dlisStream), FormatVersionField1 = _ushortReader.ReadUSHORT(dlisStream), FormatVersionField2 = _ushortReader.ReadUSHORT(dlisStream) }; if (visibleRecord.FormatVersionField1 != 255 || visibleRecord.FormatVersionField2 != 1) { throw new Exception("invalid visible record format"); } var logicalRecordSegmentData = dlisStream.ReadBytes(visibleRecord.Length - 4); if (logicalRecordSegmentData == null) { throw new Exception("invalid visible record length"); } var logicalRecordSegments = new List <LogicalRecordSegment>(); using (var lrsStream = new MemoryStream(logicalRecordSegmentData)) { while (!lrsStream.IsAtEndOfStream()) { var lrs = _logicalRecordSegmentBusiness.ReadLogicalRecordSegment(lrsStream); if (lrs == null) { throw new Exception("invalid logical record segment"); } logicalRecordSegments.Add(lrs); } } visibleRecord.Segments = logicalRecordSegments.ToArray(); return(visibleRecord); }
public static string RecordVisibleRenderers() { Camera cam = Camera.main; if (cam == null) { return("Can't find main camera"); } VisibleRecord record = new VisibleRecord(); record.fps = 1f / Time.deltaTime; record.batches = RuntimeStats.batches; record.setPassCalls = RuntimeStats.setPassCalls; record.tris = RuntimeStats.triangles; record.verts = RuntimeStats.vertices; record.camPos = cam.transform.position; record.camDir = cam.transform.forward; record.camUp = cam.transform.up; record.camFov = cam.fieldOfView; record.camNear = cam.nearClipPlane; record.camFar = cam.farClipPlane; record.camOc = cam.useOcclusionCulling ? 1 : 0; record.camHdr = cam.allowHDR ? 1 : 0; record.camMsaa = cam.allowMSAA ? 1 : 0; record.renders = new List <string>(); var mrs = FindObjectsOfType <MeshRenderer>(); foreach (MeshRenderer mr in mrs) { if (mr != null && mr.isVisible) { string path = mr.name; Transform parentTr = mr.transform.parent; while (parentTr != null) { path = parentTr.name + "/" + path; parentTr = parentTr.parent; } path = mr.gameObject.scene.name + "/" + path; int vert = 0, tris = 0; MeshFilter mf = mr.GetComponent <MeshFilter>(); if (mf != null && mf.sharedMesh != null) { vert = mf.sharedMesh.vertexCount; tris = mf.sharedMesh.triangles.Length; } Vector3 pos = mr.transform.position; path += string.Format("=>vert:{0},tris:{1},pos:{2}", vert, tris, pos); record.renders.Add(path); } } string json = JsonUtility.ToJson(record); var now = System.DateTime.Now; System.IO.File.WriteAllText(string.Format("visible-{0}-{1}-{2}-{3}.json", now.Month, now.Day, now.Hour, now.Minute), json); return("OK"); }