40 lines
No EOL
952 B
C++
40 lines
No EOL
952 B
C++
#include "StdAfx.h"
|
|
#include "DnLinearOrbit.h"
|
|
#include "DnProjectile.h"
|
|
#include "VelocityFunc.h"
|
|
|
|
|
|
CDnLinearOrbit::CDnLinearOrbit( const S_PROJECTILE_PROPERTY* pProjectileInfo ) : m_fSpeed( 0.0f ),
|
|
m_vFirstZVector( 0.0f, 0.0f, 0.0f ),
|
|
m_bFirstProcess( true )
|
|
{
|
|
m_fSpeed = pProjectileInfo->fSpeed;
|
|
}
|
|
|
|
CDnLinearOrbit::~CDnLinearOrbit( void )
|
|
{
|
|
|
|
}
|
|
|
|
void CDnLinearOrbit::ProcessOrbit( /*IN OUT*/ MatrixEx& Cross, EtVector3& vPrevPos, LOCAL_TIME LocalTime, float fDelta )
|
|
{
|
|
#ifdef _GAMESERVER
|
|
Cross.m_vPosition += Cross.m_vZAxis * ( fDelta * m_fSpeed );
|
|
#else
|
|
if( true == m_bFirstProcess )
|
|
{
|
|
m_vFirstZVector = Cross.m_vZAxis;
|
|
}
|
|
|
|
Cross.m_vPosition += m_vFirstZVector * ( fDelta * m_fSpeed );
|
|
|
|
if( false == m_bFirstProcess )
|
|
{
|
|
Cross.m_vZAxis = Cross.m_vPosition - vPrevPos;
|
|
EtVec3Normalize( &Cross.m_vZAxis, &Cross.m_vZAxis );
|
|
Cross.MakeUpCartesianByZAxis();
|
|
}
|
|
|
|
m_bFirstProcess = false;
|
|
#endif
|
|
} |