Example #1
0
        // Helper routine for creation of a stereo eye.
        private void CreateEye(NxrViewer.Eye eye)
        {
            string nm = name + (eye == NxrViewer.Eye.Left ? " Left" : " Right");

            NxrEye[] eyes    = GetComponentsInChildren <NxrEye>();
            NxrEye   mNxrEye = null;

            if (eyes != null && eyes.Length > 0)
            {
                foreach (NxrEye mEye in eyes)
                {
                    if (mEye.eye == eye)
                    {
                        mNxrEye = mEye;
                        break;
                    }
                }
            }
            // 创建新的
            if (mNxrEye == null)
            {
                GameObject go = new GameObject(nm);
                go.transform.SetParent(transform, false);
                go.AddComponent <Camera>().enabled = false;
                mNxrEye = go.AddComponent <NxrEye>();
            }

            if (NxrOverrideSettings.OnEyeCameraInitEvent != null)
            {
                NxrOverrideSettings.OnEyeCameraInitEvent(eye, mNxrEye.gameObject);
            }

            mNxrEye.Controller = this;
            mNxrEye.eye        = eye;
            mNxrEye.CopyCameraAndMakeSideBySide(this);
            mNxrEye.OnPostRenderListener += OnPostRenderListener;
            mNxrEye.OnPreRenderListener  += OnPreRenderListener;
            NxrViewer.Instance.eyes[eye == NxrViewer.Eye.Left ? 0 : 1] = mNxrEye;
            Debug.Log("CreateEye:" + nm + (eyes == null));
        }