/// <summary> /// Dispose pattern implementation of dispose method. /// </summary> /// <param name="disposing">True if disposing, false if finalizing.</param> protected virtual void Dispose(bool disposing) { if (Disposed) { return; } // Ensure that all created HMDs have been disposed. foreach (Hmd hmd in CreatedHmds) { if (!hmd.Disposed) { hmd.Dispose(); } } CreatedHmds.Clear(); if (Initialized) { Shutdown(); } // Deallocate unmanaged memory again. FreeHGlobal(ref m_eyePosesPtr); OVR.Dispose(); OVR = null; Disposed = true; }