DragonNest/GameCommon/DnHomingAccellOrbit.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

63 lines
No EOL
1.8 KiB
C++

#include "StdAfx.h"
#include "DnHomingAccellOrbit.h"
#include "DnActor.h"
#include "DnProjectile.h"
#if defined(PRE_FIX_HOMINGTARGET)
bool CDnHomingAccellOrbit::ms_ShowHomingTarget = false;
#endif // PRE_FIX_HOMINGTARGET
CDnHomingAccellOrbit::CDnHomingAccellOrbit( const S_PROJECTILE_PROPERTY* pProjectileInfo ) : m_fSpeed( 0.0f ),
m_vTargetPosition( 0.0f, 0.0f, 0.0f ),
m_bFirstProcess( true ),
m_piValidTime( NULL )
{
m_fSpeed = pProjectileInfo->fSpeed;
}
CDnHomingAccellOrbit::~CDnHomingAccellOrbit( void )
{
}
void CDnHomingAccellOrbit::Initialize( const MatrixEx& Cross, const MatrixEx& OffsetCross )
{
m_OffsetCross = OffsetCross;
}
void CDnHomingAccellOrbit::ProcessOrbit( /*IN OUT*/ MatrixEx& Cross, EtVector3& vPrevPos, LOCAL_TIME LocalTime, float fDelta )
{
if( m_hTargetActor )
{
m_vTargetPosition = __super::FindTargetPosition(m_hTargetActor, m_nTargetPartsIndex, m_nTargetPartsBoneIndex);
}
if( m_bFirstProcess )
{
EtVector3 vDir = m_vTargetPosition - Cross.m_vPosition;
float fLength = EtVec3Length( &vDir );
m_Homing.Init( (LOCAL_TIME)( ( fLength / m_fSpeed ) * 1000.f ), LocalTime, m_OffsetCross.m_vPosition, m_vTargetPosition, m_OffsetCross.m_vZAxis );
_ASSERT( m_piValidTime );
*m_piValidTime = (int)( ( fLength / m_fSpeed ) * 1000.f );
m_bFirstProcess = false;
}
m_Homing.SetEndPos( m_vTargetPosition );
m_Homing.Process( LocalTime );
Cross.m_vZAxis = m_Homing.GetVVec();
Cross.m_vPosition = m_Homing.GetPos();
Cross.MakeUpCartesianByZAxis();
#if defined(PRE_FIX_HOMINGTARGET)
#if defined(_GAMESERVER)
#else
if (ms_ShowHomingTarget == true)
EternityEngine::DrawLine3D(Cross.m_vPosition, m_vTargetPosition);
#endif // _GAMESERVER
#endif // PRE_FIX_HOMINGTARGET
}