64 lines
1.5 KiB
C++
64 lines
1.5 KiB
C++
#include "textinfo.h"
|
|
#include "intrin.h"
|
|
#include "globals.h"
|
|
|
|
#ifdef EXTRACODE
|
|
int m_iTextCount= 0;
|
|
char m_pcTextData[65536];
|
|
STextInfo m_TextInfos[ m_iMaxTextCount ];
|
|
#else
|
|
#include "textdata.h"
|
|
#endif
|
|
|
|
void CreateTextRenderJobs()
|
|
{
|
|
int iObj= OI_TextFirst;
|
|
int iTextPos= 0;
|
|
for( int i= 0; i < m_iTextCount; ++i )
|
|
{
|
|
assert( iObj <= OI_TextLast );
|
|
g_Objects[ iObj ].CreateTextMesh( m_pcTextData + iTextPos );
|
|
g_Objects[ iObj ].m_iUsedPreShader= PreDepth;
|
|
g_Objects[ iObj ].m_iUsedShader[ 0 ]= Text;
|
|
iObj++;
|
|
iTextPos+= 1 + strlen( m_pcTextData + iTextPos );
|
|
}
|
|
}
|
|
|
|
void SetTextPos( int iTime )
|
|
{
|
|
int iObj= OI_TextFirst;
|
|
for( int i= 0; i < m_iTextCount; ++i )
|
|
{
|
|
STextInfo& ti= m_TextInfos[ i ];
|
|
|
|
D3DXVECTOR3 v3Pos= ti.m_v3Pos;
|
|
|
|
if( iTime >= ti.m_iTimeStart + ti.m_iTimeLength )
|
|
{
|
|
v3Pos+= ti.m_v3Move;
|
|
}
|
|
else if( iTime > ti.m_iTimeStart )
|
|
{
|
|
float fFac= (float)( ti.m_iTimeStart - iTime )/ (float)ti.m_iTimeLength;
|
|
v3Pos+= ti.m_v3Move * ( 0.5f - 0.5f * cos( fFac * c_PI ) );
|
|
}
|
|
|
|
if( v3Pos.y > 300.0f || iTime > 304 * 1000 )
|
|
{
|
|
v3Pos.y= -300.0f;
|
|
}
|
|
|
|
D3DXMATRIX matResult;
|
|
D3DXMATRIX mat;
|
|
D3DXMatrixScaling( &matResult, ti.m_v3Scale.x, ti.m_v3Scale.y, ti.m_v3Scale.z );
|
|
D3DXMatrixRotationYawPitchRoll( &mat, ti.m_v3Rot.x, ti.m_v3Rot.y, ti.m_v3Rot.z );
|
|
D3DXMatrixMultiply( &matResult,&matResult,&mat);
|
|
D3DXMatrixTranslation( &mat, v3Pos.x, v3Pos.y, v3Pos.z );
|
|
D3DXMatrixMultiply( &matResult,&matResult,&mat);
|
|
|
|
assert( iObj <= OI_TextLast );
|
|
g_Objects[ iObj ].SetTransformation( matResult );
|
|
iObj++;
|
|
}
|
|
} |