CM3D2.BinbolusVR.BinbolusVR.LateUpdate C# (CSharp) Method

LateUpdate() public method

画面を更新する
public LateUpdate ( ) : void
return void
        public void LateUpdate()
        {
            if( !m_AllowUpdate )
                return;

            // 視差ベクトル
            Vector2 v = GameMain.Instance.MainCamera.GetAroundAngle();
            //Console.WriteLine( "AroundAngle x={0} Y={1}", v.x, v.y );
            Vector3 parallax = (new Vector3( Mathf.Cos( v.x * Mathf.Deg2Rad ), 0.0f, -Mathf.Sin( v.x * Mathf.Deg2Rad )))
                    * m_cfg.ParallaxScale
                    * GameMain.Instance.MainCamera.GetDistance()
                    * ( m_Mode == "RL" ? -1 : 1 );
                     
            if( POWERS.OFF != m_Power ) {
                // MainCamera が狙っている target:Vector3
                Vector3 target = GameMain.Instance.MainCamera.GetTargetPos();
                // カメラの場所を視差分だけずらして
                Transform mainCameraT = Camera.main.transform;
                m_CameraL.transform.position = mainCameraT.position - parallax;
                m_CameraR.transform.position = mainCameraT.position + parallax;
                // target を狙いなおす
                m_CameraL.transform.LookAt( target, mainCameraT.up );
                m_CameraR.transform.LookAt( target, mainCameraT.up );
            }
 
            // キー入力で切替える:オン/オフ
            if( Input.GetKeyDown( m_cfg.KeyTogglePower.ToLower())) {
                m_Power = m_Power + 1;
                if( POWERS.NAKED_EYES == m_Power && !m_cfg.PowersEnable.ToUpper().Contains( "NAKED_EYES" ))
                    m_Power = m_Power + 1;
                if( POWERS.SIDEBYSIDE == m_Power && !m_cfg.PowersEnable.ToUpper().Contains( "SIDEBYSIDE" ))
                    m_Power = m_Power + 1;
                if( POWERS.TOPANDBOTTOM == m_Power && !m_cfg.PowersEnable.ToUpper().Contains( "TOPANDBOTTOM" ))
                    m_Power = m_Power + 1;
                if( POWERS._ENUM_MAX_VALUE == m_Power )
                    m_Power = POWERS._ENUM_FIRST_VALUE;
                SetStereoPower( m_Power );
            }

            // キー入力で切替える:平行法/交差法
            if( Input.GetKeyDown( m_cfg.KeyToggleMode.ToLower())) {
                m_Mode = ( m_Mode == "RL" ? "LR" : "RL" );
                SetStereoMode( m_Mode ); // 不要
            }

            // ParallaxScale の調整モード
            if( (int)DEBUG_LEVELS.PARALLAX_SCALE_ADJ == m_cfg.DebugLevel )
            {
                if( Input.GetKey( m_cfg.ParaSclAdjKeyInc.ToLower()) && m_cfg.ParallaxScale < _CONFIG.ParaSclAdjMax ) {
                    m_cfg.ParallaxScale += _CONFIG.ParaSclAdjStep
                            * ( Input.GetKey( KeyCode.RightShift ) ? 10 : 1 );
                    if( _CONFIG.ParaSclAdjMax < m_cfg.ParallaxScale )
                        m_cfg.ParallaxScale = _CONFIG.ParaSclAdjMax;
                }
                if( Input.GetKey( m_cfg.ParaSclAdjKeyDec.ToLower()) && 0.0f < m_cfg.ParallaxScale ) {
                    m_cfg.ParallaxScale -= _CONFIG.ParaSclAdjStep
                            * ( Input.GetKey( KeyCode.RightShift ) ? 10 : 1 );
                    if( m_cfg.ParallaxScale < 0.0f )
                        m_cfg.ParallaxScale = 0.0f;
                }
            }
        }