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;
}
}
}