private void DestroyPreview()
 {
     if (mPreviewVisual != null)
     {
         DestroyImmediate(mPreviewVisual.gameObject);
         mPreviewVisual = null;
     }
 }
        private void UpdatePreview()
        {
            if (Application.isPlaying)
            {
                DestroyPreview();
                return;
            }

            if (mEmulator == null)
            {
                mEmulator = FindObjectOfType <VREmulator>();
            }

            if (mEmulator == null)
            {
                return;
            }

            // Do we need to create a new preview?
            // Only if th device has changed, or there is currently no preview visible
            if (mEmulator.EmulatorDevice == mPreviewDevice && mPreviewVisual != null)
            {
                return;
            }

            DestroyPreview();

            mPreviewDevice = mEmulator.EmulatorDevice;
            mPreviewVisual = CreateEditorPreivew(mPreviewDevice);

            if (mPreviewVisual != null)
            {
                mPreviewVisual.transform.SetParentAndIdentity(transform);
                mPreviewVisual.gameObject.hideFlags = HideFlags.HideAndDontSave | HideFlags.NotEditable;
                mPreviewVisual.gameObject.SetActive(true);

                // Hide any pointer visuals, because they can be annoying!
                foreach (var ptrVis in mPreviewVisual.GetComponentsInChildren <LaserPointerVisual>(true))
                {
                    ptrVis.gameObject.SetActive(false);
                }
            }
        }