using System; using System.Runtime.InteropServices; using UnityEngine; using Valve.VR; public class SteamVR_Stats : MonoBehaviour { private void Awake() { if (this.text == null) { this.text = base.GetComponent(); this.text.enabled = false; } if (this.fadeDuration > 0f) { SteamVR_Fade.Start(this.fadeColor, 0f, false); SteamVR_Fade.Start(Color.clear, this.fadeDuration, false); } } private void Update() { if (this.text != null) { if (Input.GetKeyDown(KeyCode.I)) { this.text.enabled = !this.text.enabled; } if (this.text.enabled) { CVRCompositor compositor = OpenVR.Compositor; if (compositor != null) { Compositor_FrameTiming compositor_FrameTiming = default(Compositor_FrameTiming); compositor_FrameTiming.m_nSize = (uint)Marshal.SizeOf(typeof(Compositor_FrameTiming)); compositor.GetFrameTiming(ref compositor_FrameTiming, 0U); double flSystemTimeInSeconds = compositor_FrameTiming.m_flSystemTimeInSeconds; if (flSystemTimeInSeconds > this.lastUpdate) { double num = (this.lastUpdate <= 0.0) ? 0.0 : (1.0 / (flSystemTimeInSeconds - this.lastUpdate)); this.lastUpdate = flSystemTimeInSeconds; this.text.text = string.Format("framerate: {0:N0}\ndropped frames: {1}", num, (int)compositor_FrameTiming.m_nNumDroppedFrames); } else { this.lastUpdate = flSystemTimeInSeconds; } } } } } public GUIText text; public Color fadeColor = Color.black; public float fadeDuration = 1f; private double lastUpdate; }