Camera::Camera()
: mUpdateViewFlag( UPDATE_COUNT ),
mUpdateProjectionFlag( UPDATE_COUNT ),
- mProjectionRotation( 0 ),
mNode( NULL ),
mType( DEFAULT_TYPE ),
mProjectionMode( DEFAULT_MODE ),
mTargetPosition( DEFAULT_TARGET_POSITION ),
mViewMatrix(),
mProjectionMatrix(),
- mInverseViewProjection( Matrix::IDENTITY ),
- mFinalProjection( Matrix::IDENTITY )
+ mInverseViewProjection( Matrix::IDENTITY )
{
}
mUpdateViewFlag = UPDATE_COUNT;
}
-void Camera::RotateProjection( int rotationAngle )
-{
- mProjectionRotation = rotationAngle;
- mUpdateViewFlag = UPDATE_COUNT;
-}
-
const Matrix& Camera::GetProjectionMatrix( BufferIndex bufferIndex ) const
{
return mProjectionMatrix[ bufferIndex ];
return mInverseViewProjection[ bufferIndex ];
}
-const Matrix& Camera::GetFinalProjectionMatrix( BufferIndex bufferIndex ) const
-{
- return mFinalProjection[ bufferIndex ];
-}
-
const PropertyInputImpl* Camera::GetProjectionMatrix() const
{
return &mProjectionMatrix;
}
mProjectionMatrix.SetDirty( updateBufferIndex );
-
- Matrix &finalProjection = mFinalProjection[ updateBufferIndex ];
- finalProjection.SetIdentity();
-
- Quaternion rotationAngle;
- switch( mProjectionRotation )
- {
- case 90:
- {
- rotationAngle = Quaternion( Dali::ANGLE_90, Vector3::ZAXIS );
- break;
- }
- case 180:
- {
- rotationAngle = Quaternion( Dali::ANGLE_180, Vector3::ZAXIS );
- break;
- }
- case 270:
- {
- rotationAngle = Quaternion( Dali::ANGLE_270, Vector3::ZAXIS );
- break;
- }
- default:
- rotationAngle = Quaternion( Dali::ANGLE_0, Vector3::ZAXIS );
- break;
- }
-
- Matrix rotation;
- rotation.SetIdentity();
- rotation.SetTransformComponents( Vector3( 1.0f, 1.0f, 1.0f ), rotationAngle, Vector3( 0.0f, 0.0f, 0.0f ) );
-
- Matrix::Multiply( finalProjection, mProjectionMatrix.Get( updateBufferIndex ), rotation );
}
--mUpdateProjectionFlag;
}